0

onSubmit トリガーを使用してフォームの応答を追跡するスプレッドシートを作成しました。これはうまくいきます。次に、スプ​​レッドシートの一部を別のスプレッドシートに表示したいので、これを行うスクリプトを作成しました。

2 番目のスプレッドシートが動的に更新され、最初のスプレッドシートと同期されるようにするために、onEdit インストール可能なトリガーを使用しようとしました。ただし、プログラムで編集した場合は機能せず、スプレッドシート 1 を手動で編集した場合にのみ機能します。解決策はありますか?

4

1 に答える 1

3

トリガーは、スクリプトによって行われたスプレッドシートの変更では起動しません。変更を行うスクリプトは、それらの変更の結果にも従うことができるという考えだと思います。あなたの場合、3 つの解決策があります。

  1. 「スプレッドシートの一部を別のスプレッドシートに表示する」だけの場合は、importrangeコマンドで十分です。それを行うためのスクリプトは必要ありません。

  2. フォーム送信によってトリガーされる関数は、対象のスプレッドシート自体を変更できます。単純なトリガーは他のスプレッドシートにアクセスできないため、これを行うには、フォーム送信時に実行されるインストール可能なトリガーが必要です。

  3. 別のスプレッドシートに添付されたスクリプトで関数を本当にトリガーしたい場合は、スプレッドシートの最終更新時刻を確認する時間ベースのトリガーを実行できます。

#3 の例: あらゆる種類の変更を検出するために、5 分ごとに実行するように設定できる関数。

function checkForUpdates() {
  var updated = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).getLastUpdated(); 
  if (new Date() - updated < 300000) {
    // updated in the last 5 minutes, do something
  }
}
于 2016-05-22T04:25:05.220 に答える