web-dev-qa-db-ja.com

IMPORTRANGE()が更新されたときのトリガー機能

IMPORTRANGE()を使用して別のシート(sheet-B)から情報を取得するシート(sheet-A)があります。 Insheet-B行の値に基づいてセルをフォーマットする関数があります 。現時点では、IMPORTRANGE()OnEditまたはOnChangeイベントをトリガーしないため、この関数をタイマーで実行します。

実行できるように、sheet-Bからsheet-Aでイベントをトリガーする他のメカニズムがあるかどうか疑問に思っています関数オンデマンド1 毎分ではありません。時々、関数を数秒ごとに実行する必要があり、フォーマットをいくらかインタラクティブにしたい場合もあります。また、シートが数週間使用されない場合があり、関数を毎分実行する必要がない場合もあります。

1:「オンデマンド」とは、外部スプレッドシートファイルのシートの値が変更されたときに関数を実行することを意味します。

つまり、関数のトリガーを自動化しようとしています。たとえば、私の場合、ユーザーはシートBを表示しているときにUIにアクセスできず、別のマシンからシートAを編集しています。私の場合、この作業を行うための唯一の方法は、時間ベースのトリガーを使用することです。

simpleinstallable trigger の公式ドキュメントを少し前に見ました。今は毎分実行される単純な時間ベースのトリガーを使用していると言いました。インストール可能なトリガーも確認しましたが、残念なことにそれらの制限の1つは、ファイルが読み取り専用(表示またはコメント)モードで開かれている場合は実行されないことです。

1
hoss

注: リビジョン4 への回答

編集イベントのGoogle Appsスクリプトは、ユーザーが行った変更によってのみトリガーされます。インポート関数やNOWなどの関数の自動再計算のような自動変更ではトリガーされません。一方、外部シートに変更を加えるには、インストール可能なトリガーを使用する必要があります。

詳細については、 Installable triggers を参照し、このサイトとStack Overflowの両方でこれについて検索してください。


注: リビジョン1 への回答

Google Apps Scriptエディターからのrunコマンドの使用に加えて、オンデマンドでスクリプトを実行するには、 カスタムメニュー を使用できます。このサイトには、カスタムメニューの使用例を含むスレッドがいくつかあります。以下に例をいくつか示します。

参照資料

1
Rubén