Google Apps 脚本电子邮件通知无法正常运行

Google Apps Script Email Notification Not Functioning Correctly

我真的需要一些帮助,我非常感谢任何人能提供的任何指示。我知道还有一些其他相似 的问题,但据我所知,没有其他人有这个具体 issue/request。

我有一个 Google Sheet 三个不同的人合作完成的。我有这个通知脚本,它将通过电子邮件通知特定用户有关 F 列中任何单元格的 any 更改。重要的是,此电子邮件通知还包含该行中 F 单元格值已更改的 A 单元格的值。

但是,我真正想要实现的是一个通知脚本,当 F 列中的任何单元格的新值为 [=28] 时,它将仅 向指定人员发送电子邮件=] 在大师 Sheet2 中 sheet.

我目前的代码是(当 F 列发生任何变化时发送通知):

function sendNotification(e) {
  var received = e.value; //Gets the value of the edited cell
};
    function sendNotification() {
          var ss = SpreadsheetApp.getActiveSpreadsheet();
          var sheet = ss.getSheetByName("Sheet 2");
          var cell = ss.getActiveCell().getA1Notation();
          var row = sheet.getActiveRange().getRow();
          var cellvalue = ss.getActiveCell().getValue().toString();
          var received = ss.getRange('F2:F').getValue();
          var recipients = "example@gmail.com";
          var message = '';
          if(received==="Yes"){ 
            message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue()
            var subject = 'A cell value '+ sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue() + ' has been received';
            var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellvalue + '». For message: «' + message + '»';
           MailApp.sendEmail(recipients, subject, body)};
        Logger.log('received value: ' + received);
        };

要设置事件对象,请使用:

function sendNotification(e) {
  var received = e.value; //Gets the value of the edited cell
};

发送电子邮件的代码在 if 正文的 之外。因此,无论如何都会发送电子邮件。

改为:

if(received==="Yes"){ 
  message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue()

  var subject = 'A cell value '+ sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue() + ' has been received';
  var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellvalue + '». For message: «' + message + '»';
  MailApp.sendEmail(recipients, subject, body);
};

在这行代码中:

if(received="Yes"){ 

您正在使用赋值运算符来检查相等性。使用两个或三个等号进行相等性检查。

应该是:

if(received==="Yes"){ 

如果有帮助,下面是在我的测试中有效的代码:(设置一个可安装的触发器以使其工作)

注意:我在这里和那里添加了几个 Logger.log 来检查变量和 Browser 消息以避免在测试时发送邮件。

function sendNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet 2");
  var cell = ss.getActiveCell();
  var row = sheet.getActiveRange().getRow();
  var col = cell.getA1Notation().replace(/[0-9]/g,'').toLowerCase();
  Logger.log('col = '+col);
  var cellValue = cell.getValue().toString().toLowerCase();
  Logger.log(cellValue);
  var recipients = "example@gmail.com";
  var message = '';
  Logger.log(cellValue=="yes" && col=='f');
  if(cellValue=="yes" && col=='f' ){ 
    message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue()
    var subject = 'A cell value '+ sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue() + ' has been received';
    var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellValue + '». For message: «' + message + '»';
//    MailApp.sendEmail(recipients, subject, body)
    Browser.msgBox('mail sent');
  }
    Logger.log('message body: ' + body);
};