【问题标题】:Google apps script sheets if statement to send email谷歌应用脚​​本表 if 声明发送电子邮件
【发布时间】:2019-11-19 05:36:05
【问题描述】:

我有一张工作表,在单元格 B1 中我有一个公式,如果在工作表上满足某些条件,则该公式会显示“TRUE”。

我在脚本上设置了一个基于时间的触发器,如果​​ B1 状态为 TRUE,则每 6 小时向我发送一封电子邮件。

这是我正在使用的脚本:

function sendEmails2() {
   var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Function2")
   var range = sheet.getRange("B1")   

   if (range = "TRUE"){
      var emailAddress = "email@email.com"  
      var message = "Please check your MCR Tracker as it has new entries that neeed reviewing: URL" 
      var subject = "Your MCR Tracker has new entries"
      MailApp.sendEmail(emailAddress,"noreply@ocado.com", subject, message)
    }
}  

当我手动运行此脚本进行测试时,它正在发送一封电子邮件,无论是否满足条件,而不是仅在满足条件时。

我对应用程序脚本非常陌生,如果我出错了,我们将不胜感激!

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    问题是在if 语句的条件下,您使用的是赋值运算符 (=) 而不是比较运算符 (==),而且您应该首先获得 range 的值将其与真实进行比较。

    尝试替换

    if (range = "TRUE"){
       ...
    }
    

    if (range.getDisplayValue() === "TRUE"){
       ...
    }
    

    【讨论】:

    • 谢谢,很遗憾,在进行此更改时,无论是否满足条件,都没有发送电子邮件,是我犯了另一个错误吗?
    • 您还应该在 if 语句的条件中将getDisplayValue() 添加到range。我会将其添加到答案中。
    【解决方案2】:

    由于您使用公式来显示“TRUE”,因此您应该在设置范围变量的初始值时添加 .getDisplayValue()。像这样:

    替换 var range = sheet.getRange("B1")

    var range = sheet.getRange("B1").getDisplayValue();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-22
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多