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

Google script for sending email if cell value is below certain value issue

本文关键字:问题 电子邮件 于特定 用于 单元格 Google 脚本      更新时间:2023-09-26

对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);
  }
}

我无法正常工作,可能是因为我没有正确调用该函数或错过了一些明显的东西。单元格变为蓝色,如果我自己运行 sendemail 功能,而不是由于 onedit,它会发送电子邮件。我只是挣扎着打电话。

任何帮助或解释将不胜感激!

谢谢

原因很简单,谷歌在开发者指南中已经说明过:

因为简单的触发器会自动触发,而无需询问用户 对于授权,它们受到以下几个限制:

  • 他们无法访问需要授权的服务。例如,简单触发器无法发送电子邮件,因为 Gmail 服务需要授权,但简单触发器可以使用匿名语言服务翻译短语。

请参阅此处的"限制"部分。

要变通解决此问题,您可以创建一个普通函数sendEmail()。此函数可以添加为可安装的触发器,然后允许调用需要授权的服务。您可以在此处阅读更多相关信息。

然后,用于发送邮件的代码将如下所示:

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