onedit 为什么不能发邮件? [英] onedit why cannot send email?

查看:27
本文介绍了onedit 为什么不能发邮件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆