Google sheets GoogleSheets脚本:在特定工作表中进行更改时发送电子邮件通知

Google sheets GoogleSheets脚本:在特定工作表中进行更改时发送电子邮件通知,google-sheets,onchange,email-notifications,Google Sheets,Onchange,Email Notifications,我在谷歌电子表格中有一个工作日程,如果日程发生变化,我需要它自动向日程上的每个人发送电子邮件。我为每个人创建了一个额外的工作表,其中只有他们的日程安排(这些工作表会根据原始日程安排的更改自动更新)。我如何修改脚本,使其能够检测其中一张工作表(例如,名为“Todd”的工作表)中的更改并向他发送电子邮件?下面是我到目前为止所拥有的 我已经和这个脚本斗争了几个星期,我在任何地方都找不到一个明确的答案,所以我发布了我自己的问题(对不起,我非常缺乏经验,所以请容忍我) 在脚本编辑器中,您需要在“资源->当

我在谷歌电子表格中有一个工作日程,如果日程发生变化,我需要它自动向日程上的每个人发送电子邮件。我为每个人创建了一个额外的工作表,其中只有他们的日程安排(这些工作表会根据原始日程安排的更改自动更新)。我如何修改脚本,使其能够检测其中一张工作表(例如,名为“Todd”的工作表)中的更改并向他发送电子邮件?下面是我到目前为止所拥有的

我已经和这个脚本斗争了几个星期,我在任何地方都找不到一个明确的答案,所以我发布了我自己的问题(对不起,我非常缺乏经验,所以请容忍我)


在脚本编辑器中,您需要在“资源->当前项目的触发器”中添加一个触发器,该触发器在“更改时”触发sendNotification()函数。您可以使用google的触发函数在脚本本身中指定附加条件:

感谢RSynest的快速回复!实际上我已经正确设置了我的项目触发器。问题是,它只在我在脚本编辑器中点击“运行”时给我发电子邮件,而不是在我的工作表中进行更改时。另外,我为每个人设置单独的表单的原因是,当进行更改时,它将只向日程已更改的人发送电子邮件,而不是向所有人发送电子邮件。有没有更简单的方法?也许可以去掉单独的工作表,只有一个工作表,给每个人分配一系列的单元格,然后设置我的脚本,如果他们的单元格发生变化,就给他们发电子邮件?啊,我没有注意到你脚本中的API触发器调用。我已经一字不差地复制了你的代码,它工作得非常好。您的问题可能是由于多张工作表造成的。我要做的是用一张带有“email_address”栏的单张纸。然后通过在脚本中引用该列中的地址,将电子邮件通知发送到该列中的地址。不过,它应该可以正常工作。是否确实已在“项目触发器”菜单中为sendNotification()启用onChange触发器?。如果您只在sendNotification函数代码中指定触发器,那么它将不起作用,因为除非触发sendNotification函数,否则永远不会调用它。是的,onChange触发器肯定已启用。也许是多张床单。我会用一张纸和一个电子邮件地址栏试试你的建议。
function sendNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Todd');
  var range = sheet.getActiveRange().getA1Notation();
  var recipients = "Todd@XXXXX.com";
  var message = '';
    function createSpreadsheetChangeTrigger() {
    var ss = SpreadsheetApp.getActive();
    ScriptApp.newTrigger('onChange')
      .forSpreadsheet(ss)
      .onChange()
      .create();
    }  
  var subject = 'Update to Work Schedule';
  var body = 'Todd, your schedule has changed. Visit ' + ss.getUrl();
  MailApp.sendEmail(recipients, subject, body);
};