用于在单元格值低于特定值问题时发送电子邮件的Google脚本

时间:2014-11-16 19:43:22

标签: javascript email google-sheets

非常新的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它会发送一封电子邮件。我只是在努力称之为。

非常感谢任何帮助或解释!

由于

1 个答案:

答案 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);
  }
}