e.source 和 e.range missing/unavailable

e.source and e.range missing/unavailable

我有一个基本的可安装触发器,我正尝试使用它来根据编辑 Sheet 的时间发送电子邮件邀请(在我的情况下选中了一个特定的复选框)但是当我尝试访问该范围时或来自我的事件对象的源对象,我分别得到 [object Object] 和 undefined 。但是,由于能够获取 oldValue、value、triggerUid 和 user,我知道事件对象正在工作。

function onEditCheck(e) {

  var cells = e.range.getA1Notation();
  var name = e.source.getActiveSheet().getName()

  console.log('cells: ' + cells);
  console.log('sheet name: ' + name);
  console.log('id: ' + e.triggerUid);
  console.log('edit: ' + e.value);

  if(e.oldValue === 'false' && e.value === 'TRUE') {
    sendEmail(e.user.getEmail(), e.range);
  } 
}

我能找到的关于这个问题的唯一其他参考是 this question here 但是我没有找到他们找到的权限 "solution"。

如有任何帮助或见解,我们将不胜感激。

这对我有用:

function createTrigger(){
  var tr=ScriptApp.newTrigger('onEditCheck').forSpreadsheet('My SSID').onEdit().create();
}

function onEditCheck(e) {
  var cell = e.range.getA1Notation();
  var name = e.range.getSheet().getName();
  var data=Utilities.formatString('<br />Cell Edited: %s<br />Name of Sheet: %s<br />TriggerId: %s<br />Value: %s<br />Old Value: %s<br />',cell,name,e.triggerUid,e.value,e.oldValue);
  var userInterface=HtmlService.createHtmlOutput(data);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Testing')
}

顺便说一句,在创建触发器并将通知设置为立即后转到触发器编辑器非常方便。这样你就会很快从 Google 服务器收到失败通知。

这是因为您的脚本没有获得必要的授权。

在您的代码中的某处添加:

//SpreadsheetApp.getActive()

这将触发 oAuth 流程并请求访问缺少的电子表格的权限。

相关: