基于 Google 电子表格中公式更改的电子邮件脚本代码

Email Script Code Based On Formula Change in Google spreadsheet

本文关键字:电子邮件 脚本 代码 Google 电子表格 基于      更新时间:2023-09-26

我使用了从某人那里复制的代码,并根据我需要的内容进行了编辑。但是,我几乎没有经验,我确信我已经破坏了任何功能。当 Google 表格中的公式从 F5:F12 更新到表格中某个范围的某个值时,我正在尝试向我发送电子邮件。

这是当前版本

function sendEmail(email_address, email_subject, email_message) {
  var value = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet 1").getActiveRange().getValues().toString();
  if (value = ("☁")) { 
        MailApp.sendEmail('user1...@myemail.com', 'My Subject','My Message : ');
   
}
 else { 
    if (value = ("☀")) 
    MailApp.sendEmail('user2...@myemail.com', 'My Subject','My Message : ')
 }
}

我已经尝试了来自两个 StackOverflow 的许多代码片段,但由于我的基本理解,我无法修改一个有效的代码片段。

-----------更新---------------

function onEdit(e){
    try{
        if(
            e.range.getRowIndex() >= 5 && 
            e.range.getRowIndex() <= 12 &&
            e.range.getColumnIndex() == 6
        ){
            if(e.range.getValue().charCodeAt(0) == 9729){
                MailApp.sendEmail('xxx.xxx@gmail.com', 'Target Missed', 'View Spreadsheet');
            }else if(e.range.getValue().charCodeAt(0) == 9728){ 
                MailApp.sendEmail('xxxx@gmail.com', 'Target Met', 'View Spreadsheet');
            }
        }
    }catch(error){
        Logger.log(error);
    }
}

如果您的代码应该在编辑 F5:F12 范围内的单元格并且仅包含 "☁" 或 " ☀ 时发送电子邮件,那么您的代码应如下所示:

function onEdit(e){
    try{
        if(
            e.range.getRowIndex() >= 5 && 
            e.range.getRowIndex() <= 12 &&
            e.range.getColumnIndex() == 6
        ){
            if(e.range.getValue().charCodeAt(0) == 9729){
                MailApp.sendEmail('user1...@myemail.com', 'My Subject', 'My Message:');
            }else if(e.range.getValue().charCodeAt(0) == 9728){ 
                MailApp.sendEmail('user2...@myemail.com', 'My Subject', 'My Message:');
            }
        }
    }catch(error){
        Logger.log(error);
    }
}

9729 和 9728 分别是 "☁" 和 "☀" 的十进制 Unicode 值。

您的代码有许多致命的语法错误。我认为您可能会从学习基本的JavaScript教程中受益。

您需要一个 onEdit 触发器来运行代码:

谷歌文档 - 触发器

文档引用:

例如,下面的示例代码显示了一个简单的 onEdit(e) 触发器 对于使用事件对象确定的 Google 表格脚本 编辑了哪个单元格。

以下是该文档中的一些代码,其中包含我添加的 Logger.log() 语句:

function onEdit(e){
  // Set a comment on the edited cell to indicate when it was changed.
  Logger.log('onEdit ran!');
  Logger.log('value of e: ' + e);
  var range = e.range;
  Logger.log('This is the range: ' + range);
  range.setNote('Last modified: ' + new Date());
}

因此,该代码将为您提供有关编辑了哪个单元格的信息。 然后,您需要将其与F5:F12范围内的单元格进行比较。

请注意"Logger.log()"语句。 要查看打印到日志的内容,请单击"查看"菜单和"日志"。

通过查看日志来验证函数是否正在运行。 另请检查"查看"菜单下的"执行脚本"以查看任何错误消息。

请使用任何日志消息和/或错误更新您的问题,并在下面发表评论。

相关文章: