0

トリガーで遊んでいます。

スプレッドシートには、新しい行に日付を挿入する関数があります。1 分ごとにクロック トリガーとして実行されます。スプレッドシートが開いていても閉じていても問題なく動作します (その部分が気に入っています)。

スタンドアロン スクリプトでは、上記のスプレッドシートで onEdit のトリガーを設定します。e.value をメールで送信するだけです。

スプレッドシートにいて、セルにいくつかの文字を入力するだけで機能します。

私が「期待」するのは、最初のトリガーによって日付が挿入されるたびに、onEdit がトリップすることです。残念ながら、そうではありません。トリガーの外で日付の挿入機能を実行しても、メールの onEdit トリガーが起動しません。

何かご意見は?

私の目標は、onEdit イベントを開始するシートをスクリプトで更新することでした。

ジム

更新#1:

たぶん、このコード例が役に立ちますか?

これを単純化して、スプレッドシート コンテナー内の 1 つのスクリプトにしました。スプレッドシートにインタラクティブな変更を加えると、各関数は単独で正常に動作し、2 番目の関数は正常に動作します。

これは単なる調査なので、割り当てや、ここでテストしていることのまったくナンセンスを無視してください:-)

insertClockTrigger: 毎分実行され、正常に動作します

installableOnEdit: insertClockTrigger が起動したときに、インストール可能な onEdit としてトリガーされることはありません

insertClockTrigger によって行われた編集のように見えるものが、onEdit トリガーを起動していない理由に興味があります。トリガーはトリガーをトリガーしませんか (私自身を助けることができませんでした!)?

function insertClockTrigger() {
  var sheet = SpreadsheetApp.openById('spreadsheet-ID').getSheets()[0];
  var nDate = new Date();
  sheet.getRange(sheet.getLastRow()+1,1,1,1).setValue(nDate).flush;
}

function installableOnEdit(e) {
  GmailApp.sendEmail("some@email.com", "Test trig2", "FISH: "+e.value);
}
4

3 に答える 3

0

答えを見つけたと思います。

Henrique Abreu は次のように投稿しました。

http://productforums.google.com/d/msg/apps-script/HmBg0p7dOZ8/xMb6wfcfvVQJ

はい、「編集時」イベントは、コードから変更が行われたときに呼び出されません。手動で変更した場合にのみ呼び出されます。この動作は、不必要な再帰の問題を回避するために意図されたものです。また、目的の編集時関数をコードから直接呼び出すのは簡単すぎます。つまり、新しいチケットを挿入するスクリプトを作成する場合、単純に「fundEmail」関数を呼び出すことができます。別のトリガーは必要ありません。

于 2012-09-21T17:47:15.637 に答える
0

クロックトリガー関数から onEdit 関数を呼び出します。

また、このようなトリガーを毎分実行すると、クォータの問題が発生する可能性があります。

于 2012-09-21T01:39:39.810 に答える
-1

onEdit の名前を onUserEdit に変更する必要があります。システムの変更は受け取らず、ユーザーによる直接の編集のみを受けます。私はこれをテストしていませんがonChange、あなたが望むことをするかもしれません。

于 2016-12-17T19:12:39.120 に答える