20,000レコードのScriptDBの製品情報があり、現在の価格/在庫情報で1時間ごとに更新したいと考えています。現状では、実行制限に真っ向からぶつからないものを設計するのに苦労しています。
ダウンロードしたストックファイルはカスタマイズ可能です。現在、次のようにJSONとして使用しています。
[
{"sku":"MYSKU1","price":14.99,"qty":2},
{"sku":"MYSKU2","price":22.99,"qty":25},
{"sku":"MYSKU3","price":91.99,"qty":31}
]
現在、私は次のようなことをしています。
var prod_feed = UrlFetchApp.fetch("https://www.site.com/myJSONfile").getContentText();
var prod_data = JSON.parse(prod_feed);
var prod_qty = 0, i = 0;
var prod_code = "";
var prod_price = "";
var db = ScriptDb.getMyDb();
var result_array = [];
var result_current = {};
var time_obj = dbDateObject();
for(i = 0; i < prod_data.length; i++) {
var result = db.query({sku: prod_data[i]["sku"]}).next(); // result will be null if no match
if (!result) {
// No match, create new object with this SKU for insertion
result = {};
result["sku"] = prod_data[i]["sku"];
}
result["qty"] = prod_data[i]["qty"];
result["price_default"] = prod_data[i]["price"];
result["last_product_update"] = time_obj;
result_array[i] = result;
}
var results = db.saveBatch(result_array, false);
この方法で約2,500のレコードを実行し、制限時間に達する前にそれらを保存できます。
SKUをレコードIDとして直接使用する方法はありますか?次に、実際には3行のコードになります...
var prod_feed = UrlFetchApp.fetch("https://www.site.com/myJSONfile").getContentText();
var prod_data = JSON.parse(prod_feed);
var results = db.saveBatch(prod_data, false);
そうでない場合、この効率を高めるための明白な方法はありますか?
ありがとう!