0

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

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);
  } 
}

我能找到的对这个问题的唯一其他参考是这个问题here但是我对他们找到的权限“解决方案”没有运气。

任何帮助或见解将不胜感激。

4

2 回答 2

1

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

在代码中的某处添加:

//SpreadsheetApp.getActive()

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

有关的:

于 2018-12-06T12:16:54.080 回答
0

这对我有用:

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 Server 快速收到故障通知。

于 2018-12-06T04:50:47.377 回答