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 流程并请求访问缺少的电子表格的权限。
相关:
我有一个基本的可安装触发器,我正尝试使用它来根据编辑 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 流程并请求访问缺少的电子表格的权限。