我正在编写一个相当简单的脚本,该脚本应该处理电子表格中的新值,然后将电子邮件发送到指定的地址。我遇到了这个问题。我的代码如下:
function onEdit(e) {
//part of the code for checking e.range to process only updated values
sendEmail();
}
function sendEmail() {
// arguments are missed only for demo
GmailApp.sendEmail();
}
当我使用"简单触发器"时,我的功能" sendEmail()"仅当我从脚本编辑器启动它时才有效。我允许我第一次代表我发送电子邮件,然后功能正常。但是如果我改变电子表格中的值 - 功能" onEdit(e)"处理新数据但功能" sendEmail()"什么都不做。
我通过使用来自"当前项目的触发器"的项目触发器部分地解决了这个问题。菜单。在这种情况下,函数" sendEmail()"工作正常,但我无法访问有关更新的信息。 为了我的目的,我可以使用第二种方式并找到新的值"手动"每一次,但我希望优化这项工作。
所以,我的问题是:
谢谢!
答案 0 :(得分:0)
您正确理解(as the docs say)简单触发器无法发送电子邮件,因为它们未经授权即可运行。通过“资源”菜单创建的installable trigger可以:它与创建触发器的用户具有相同的权限。如果在编辑时将其设置为触发,则它将获得与简单触发器相同类型的event object。
所以,一个最小的例子就是这样,设置为“在编辑时”运行:
function sendMail(e) {
MailApp.sendEmail('user@gmail.com', 'sheet edited', JSON.stringify(e));
}
它以JSON格式通过电子邮件发送整个事件对象。
除此之外:如果您的脚本只需要发送电子邮件但不能读取它,请使用MailApp而不是GmailApp来保持权限范围更窄。