Open Cafelatte8610 opened 4 years ago
フィードバックありがとうございます。問題はスクリプトのPUTに対応していないことです…。ちょっと見てみます。すぐ対応できそうであれば、実装します。
違いますね。 UpdateSoaring.js
側の問題そうです。
全レコードの更新メソッドはないので、次のようになります。適当なコードなので、エラーが出たら適宜修正してください。
var ncmb = new NCMB(apikey, clientkey);
var MusicData = ncmb.DataStore("MusicData");
(async () => {
await updateAll(MusicData);
})();
async function updateAll(obj) {
const ary = await obj
.notEqualTo('SoaringCount', 0) // 0じゃないもの
.limit(1000).fetchAll(); // 最大の1000件を取得
// 結果がなければ終了
if (ary.length === 0) {
return true;
}
const promises = [];
for (let obj of ary) {
promises.push(obj.set("SoaringCount", 0).update());
}
await Promise.all(promises);
// さらにデータがあるかも知れないので実行
await updateAll();
}
ありがとうございます。
先ほどのコードを実行したところ
{ "Status": "ERROR", "RequestHeaders": "{\"host\":\"script-console.mbaas.api.nifcloud.com\",\"connection\":\"close\",\"content-length\":\"139\",\"accept\":\"application/json, text/plain, */*\",\"user-agent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.98 Safari/537.36\",\"content-type\":\"multipart/form-data; boundary=----WebKitFormBoundaryLMLzC9vj6cLDgPcD\",\"origin\":\"https://console.mbaas.nifcloud.com\",\"sec-fetch-site\":\"same-site\",\"sec-fetch-mode\":\"cors\",\"sec-fetch-dest\":\"empty\",\"referer\":\"https://console.mbaas.nifcloud.com/\",\"accept-encoding\":\"gzip, deflate, br\",\"accept-language\":\"ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7\"}", "RequestQuery": "{}", "ResponseHeaders": "{}", "Error": "ScriptError: ReferenceError: NCMB is not defined\n at Object.<anonymous> (/tmp/UpdateSoaring.js:1:12)\n at Module._compile (internal/modules/cjs/loader.js:1158:30)\n at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)\n at Module.load (internal/modules/cjs/loader.js:1002:32)\n at Function.Module._load (internal/modules/cjs/loader.js:901:14)\n at Module.require (internal/modules/cjs/loader.js:1044:19)\n at require (internal/modules/cjs/helpers.js:77:18)\n at Module._compile (internal/modules/cjs/loader.js:1158:30)", "Duration": 365, "created_at": "2020-08-19T16:00:54.000Z", "updated_at": "2020-08-19T16:00:55.000Z", "ResponseStatus": 500, "ScriptIdentifier": "UpdateSoaring.js" }
このようなエラーが発生したのですが何が原因なのでしょうか?
スクリプトのサンプルコードはこちらにあるので参照してください。
ローカルでテストする方法も書いてありますので、そちらが参考になるかと思います。
※ ちなみにエラーメッセージは Error
のところに書いてありますが、NCMBがないというエラー(requireしていない)というものになります。
ありがとうございます! GoogleAppsからエラーの報告は出るものの値は0に更新できています。
やっぱりできていませんでした。NCMBのダッシュボードのスクリプトから実行すると値が0に更新されているのでおそらくGoogleAppScript側のコードに問題があると思うのですが、下記のコードを実行しているのですが、どこが問題でしょうか?
function DataSet(){ var application_key = "ea25a419458420ee0d676cf8a65f2bc887283023a901271b0e02742736d5fb55"; var client_key = "3a9acdb12b32dc76cc120c2cc0eb001e18130a6296c9775d80c23f4317bccf50"; var ncmb = new NCMB(application_key, client_key); ncmb.Script.exec("PUT", "UpdateSoaring.js").then(function(res){ // 実行後処理 }) .catch(function(err){ // エラー処理 }); }
↓エラー
スクリプトにて(UpdateSoaring.js)
GoogleAppsScriptにて
を実行したところエラーが出てしまいます。 MusicDataというクラス内のすべてのレコードのSoraeingCountというフィールドの値を0にしたいのですが、どう書けばよいでしょうか?