Webhookで受信したJSONをスプレッドシートに転記したいと考えています。
単体つまり1回のWebhookで送信からスプレッドシート転記は、正常動作しているのですが、
WebhookからのPOSTが秒間に5-10回など集中するとスプレッドシートの最終行が上書きとなってしまいます。
例としては、5回のPOSTデータがあるのに、最後の1データだけになります。
出力のスプレッドシートを目視していると最終行が書き換わっているのです。
どのような対策があるか教えていただけないでしょうか。
appendRowは、大量のデータは向かず、配列のデータいっぺんに貼り付けるといった記事を見ます。
サンプルのコードをご教授頂けると助かります。
該当のソースコード
// メイン処理 function doPost(e) { var postdata = e.postData.getDataAsString(); // postデータを受け取る var params = JSON.parse(postdata); // JSONパース処理 var ss = SpreadsheetApp.getActiveSpreadsheet(); var result_sheet = ss.getSheetByName('log'); try { //postdata = {"msg1":"foo","msg2":"bar","num1":"0.01"} var strategy = params.msg1; // "msg1" : "foo111" var side = params.msg2; // "msg2" : "bar" var volume = Number(params.num1); // "num1" : 0.01 } catch(e) { logwrite(postdata, "NG"); return ContentService.createTextOutput('error') } logwrite(postdata, "OK") return ContentService.createTextOutput('ok') } // ログ出力処理 function logwrite(postdata, result) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var log_sheet = ss.getSheetByName('log'); var now = new Date(); var time = Utilities.formatDate(now, 'Asia/Tokyo', 'yyyy-MM-dd HH:mm:ss'); log_sheet.appendRow([time, result, postdata]) }
試したこと
setValuesでの一括貼り付けのサンプルを見て改変トライするも動作しない。
#JavaScript
#Google Apps Script
0 コメント