onedit为什么不能发送电子邮件?

时间:2012-10-22 15:19:47

标签: google-apps-script

我有这个简单的脚本,应该在更改单元格时发送电子邮件

function onEdit(e) {  

var doc = e.source; 

 var r = doc.getActiveRange().getValue();


 if (r == "Niccolò"){
var a = doc.getActiveRange().setBackground('#ff0000');
var b = GmailApp.sendEmail('name@gmail.com', 'subject', 'body');

}

}

此功能也会改变单元格颜色。 问题是细胞颜色有效,所以它不会发送任何电子邮件。 它看起来很简单,我不明白为什么不起作用!

1 个答案:

答案 0 :(得分:3)

简单触发器(如onEdit()onOpen()或onFormSubmit()具有一组有限的可能操作,因为它们未经授权运行,有关详细信息,请参阅the documentation

所以你描述的这种行为是正常的。

您应该使用可安装的触发器,而不是在同一个文档页面中说明。

以下是文档摘要:

这些简单的触发器会响应Google Spreadsheets中的操作而运行,并以活动用户身份运行。例如,如果Bob打开电子表格,则onOpen函数将作为Bob运行,而不管是谁将脚本添加到电子表格中。出于这个原因,简单触发器受限于允许它们执行的操作: 以只读模式打开电子表格时,它们无法执行。 他们无法确定当前用户。 他们无法访问需要以该用户身份验证的任何服务。例如,Google翻译服务是匿名的,可以通过简单的触发器访问。 Google日历,Gmail和网站不是匿名的,简单触发器无法访问这些服务。 他们只能修改当前的电子表格。禁止访问其他电子表格。 有关事件权限的更多信息,请参阅从特定于容器的触发器执行。