1

フォームの送信を確認するためにGoogleAppsScriptトリガーを設定しています。ただし、着信イベントの値を確認し、イベントを実際にスプレッドシートに追加するか、無視するかを決定したいと思います。

現在、追加された後の最後の行を削除するために、以下のようなことを行っています。

function onFormSubmit(e) {
    var sheet = SpreadsheetApp.getActiveSheet();
    if (e.values[2] < whatever) {
        sheet.deleteRow(sheet.getLastRow());
}

ただし、このアプローチは失敗することがありますが、同時発生のイベントが原因だと思います。

これを行うためのより良い方法はありますか?

4

2 に答える 2

3

どのくらい早く行を削除する必要がありますか?時間駆動型トリガーを使用してシートを定期的にクリーンアップすることは実行可能でしょうか?

または、フォーム送信トリガーを使用して、e.rangeを使用して行を(削除するのではなく)クリアしてから、時間駆動型トリガーを使用して空白の行をクリーンアップすることができます。

または、フォーム送信トリガーを使用して、生データの送信に触れずに、別のシート(またはスプレッドシート)を使用して、アトミックに追加するを使用して受け入れられたe.valuesをログに記録しappendRow()、同時実行の問題を回避することもできます。

または、別のシートでFILTERまたはQUERY数式を使用して同じことを実現することもできますが、これはおそらくパフォーマンスに最大の影響を与えるでしょう。

于 2012-10-12T05:23:23.737 に答える
1

同時イベントが原因で失敗する場合は、ロックサービスを確認してください。

于 2012-10-12T02:49:58.367 に答える