0

Spreadsheetオブジェクトスクリプトに何かが欠けているような気がします。

共同編集者にonEditで自動的にメールを送信しようとしています。テストでスクリプトを明示的に実行すると、電子メールで正常に送信されましたが、onEditイベントが発生することはありません(ログメッセージも表示されません)。スクリプトはかなり単純なようです。

function onEdit(e) {
  var sheet = e.source;
  var viewers = sheet.getViewers();
  var ct = viewers.length;
  var recipients = [];
  for(var i=0;i<ct;i++){
    recipients.push(viewers[i].getEmail());
  };
  var subject = 'Update to '+sheet.getName();
  var body = sheet.getName() + ' has been updated.  Visit ' + sheet.getUrl() + ' to view the changes ' + e.range;

  Logger.log('Running onedit');

  MailApp.sendEmail(recipients, subject, body);
};
4

1 に答える 1

6

単純なonEdit関数は、潜在的なユーザーの許可なしに実行されるため、可能なアクションのセットが非常に限られています。別の関数を作成し、この関数に特定のトリガーを設定する必要があります。(インストール可能なトリガー)

例としてこの投稿を参照してください。簡単なonEditとインストール可能な編集(電子メール送信用)の例を示しています。これについては、こちらのドキュメントで説明されています。

編集:ここにあなたのコードが機能しています:

function sendAlert() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation()
  var viewers = ss.getViewers();
  var ct = viewers.length;
  var recipients = [];
  for(var i=0;i<ct;i++){
    recipients.push(viewers[i].getEmail());
  };
  var subject = 'Update to '+sheet.getName();
  var body = sheet.getName() + ' has been updated.  Visit ' + ss.getUrl() + ' to view the changes on cell ' + cell;
  MailApp.sendEmail(recipients, subject, body);
};
于 2012-11-05T18:04:20.597 に答える