非常新的javascript。对于知道的人来说,可能非常明显/容易解决这个问题。
尝试编写一个脚本,如果单元格值低于100并将单元格颜色更改为蓝色,则会发送电子邮件:
我试图通过调用函数来编写它:
function sendemails() {
var emailAddress = "email@address.com";
var message = "test body";
var subject = "test subject";
MailApp.sendEmail(emailAddress, subject, message);
}
function onEdit(e) {
var range = e.range;
if(range.getValue() < 100) {
range.setBackgroundColor('blue');
}
if(range.getValue() < 100) {
sendemails()
}
}
我还试过直接发送邮件:
function onEdit(e) {
var range = e.range;
if(range.getValue() < 100) {
range.setBackgroundColor('blue');
}
if(range.getValue() < 100) {
var emailAddress = "email@address.com";
var message = "test body";
var subject = "test subject";
MailApp.sendEmail(emailAddress, subject, message);
}
}
我无法工作,可能是因为我没有正确调用函数或错过了一些明显的东西。单元格变为蓝色,如果我自己运行sendemails功能,而不是因为onedit它会发送一封电子邮件。我只是在努力称之为。
非常感谢任何帮助或解释!
由于
答案 0 :(得分:0)
原因很简单,Google已在开发者指南中说明了这一点:
因为简单的触发器会自动触发,而不会询问用户 对于授权,它们受到若干限制:
- 他们无法访问需要授权的服务。例如,简单的触发器无法发送电子邮件,因为Gmail服务需要授权,但简单的触发器可以使用匿名的语言服务翻译短语。
请参阅&#34;限制条款&#34; here
要解决此问题,您可以创建普通函数sendEmail()
。此功能可以添加为可安装的触发器,然后可以调用需要授权的服务。您可以阅读有关here的更多信息。
发送邮件的代码如下所示:
function sendEmail() {
var range = SpreadsheetApp.getActiveRange();
if (range.getValue() < 100){
var emailAddress = "email@example.com";
var message = "test body";
var subject = "test subject";
MailApp.sendEmail(emailAddress, subject, message);
}
}