2

onEdit関数からプログラムでスクリプトを作成しようとする簡単なスクリプトを作成しました

function onEdit() {
  test();
}

function test() {
  triggerLater();
}

function customMsgBox() {
  Browser.msgBox("hello world");
}

function triggerLater() {
  var date = new Date();
  date.setMinutes(date.getMinutes() + 1);
  try {
    var oneTimeOnly = ScriptApp.newTrigger("customMsgBox")
      .timeBased()
      .at(date)
      .create();
    return oneTimeOnly.getUniqueId();
  }
  catch (e) {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ss.toast("error");
  }
}

スクリプトエディタからonEditを実行しようとすると、トリガーは作成されますが、スプレッドシートのすべての編集でトーストに「エラー」メッセージが表示されます。

誰かが私が理解するのを手伝ってもらえますか?

4

1 に答える 1

4

onEdit単純なイベントハンドラー関数には制限された権限があります(つまり、電子メールを送信したり、カレンダーを開いたりすることはできません)。ユーザーの許可なしで実行されるためです。したがって、トリガーを設定することはできません(制限がなく、セキュリティ上の大きなバグになります)。

アカウントでトリガーを作成する必要がある場合は、インストール可能な編集トリガーを使用してください。まず、onEdit関数の名前を別の名前に変更し(単純なイベントハンドラーとしてトリガーされないようにします)、[リソース]メニューに移動して、スプレッドシートの編集イベントで実行する関数を選択します。詳細については、ドキュメントをご覧ください。

于 2012-05-24T11:34:15.530 に答える