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

时间:2014-12-24 04:23:49

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

我使用了从某人复制的代码,并根据我需要的内容进行了编辑。但是,我几乎没有经验,我确信我已经破坏了任何功能。我正在尝试向Google发送一封电子邮件,当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);
    }
}

2 个答案:

答案 0 :(得分:1)

如果您的代码应该在编辑F5:F12范围内的单元格时发送电子邮件,并且仅包含&#34;☁&#34;或者&#34;☀&#34;,那么你的代码应该是这样的:

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是&#34;☁&#34;的十进制Unicode值。和&#34;☀&#34;分别

您的代码存在许多致命的语法错误。我想你可能会受益于研究basic JavaScript tutorial

答案 1 :(得分:0)

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

Google Documentation - Triggers

来自文档的引用:

  

例如,下面的示例代码显示了一个简单的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()&#39;声明。要查看打印到LOG的内容,请单击VIEW菜单和LOGS。

通过查看日志验证该功能是否正在运行。另请查看VIEW菜单下的EXECUTION TRANSCRIPT以查看任何错误消息。

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