onedit 为什么不能发邮件? [英] onedit why cannot send email?
问题描述
我有一个简单的脚本,当单元格更改时应该发送电子邮件
i've this simple script that should send an email when a cell is changed
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');
}
}
这个函数也会改变单元格的颜色.问题是单元格颜色有效,因此在不发送任何电子邮件的情况下会发生变化.看起来很简单,我不明白为什么不起作用!
This function change also cell colour. THe problem is that the cell colour works, so it's change while doesn't send any email. It looks so simple i don't understand why doesn't works!
推荐答案
简单的触发器,如 onEdit()
、onOpen(
) 或 onFormSubmit()
code> 有一组有限的可能操作,因为它们在未经授权的情况下运行,请参阅文档更多详情.
Simple triggers like onEdit()
, onOpen(
) or onFormSubmit()
have a limited set of possible actions because they run without authorization , see the documentation for further details.
所以你描述的这种行为是正常的.
So this behavior you describe is normal.
您应该使用可安装的触发器,如同一文档页面中所述.
You should use an installable trigger instead as explained in the same doc page.
这里是文档的摘要:
这些简单的触发器会响应 Google 电子表格中的操作而运行,并且它们以活动用户的身份运行.例如,如果 Bob 打开电子表格,则无论是谁将脚本添加到电子表格中,onOpen 函数都会以 Bob 的身份运行.出于这个原因,简单触发器在它们被允许做的事情上受到限制:当电子表格以只读模式打开时,它们无法执行.他们无法确定当前用户.他们无法访问任何需要以该用户身份进行身份验证的服务.例如,谷歌翻译服务是匿名的,可以通过简单的触发器访问.Google 日历、Gmail 和协作平台不是匿名的,简单的触发器无法访问这些服务.他们只能修改当前的电子表格.禁止访问其他电子表格.有关事件权限的更多信息,请参阅从特定于容器的触发器执行.
这篇关于onedit 为什么不能发邮件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!