Google表格忽略某些单元格更改/更新

时间:2018-10-03 19:43:07

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

我在Google表格中有一个脚本,当列中的任何单元格发生更改时,该脚本都会发送一封电子邮件。 (这有效)但是,我想忽略单元格是否从“空白”更改为“值”。即仅当值从先前输入的值更改后才发送电子邮件。 -谢谢

更新: 我做了更多的工作,这是我想出的解决方案。它似乎有效。希望这会使其他人受益。在下面发布。

1 个答案:

答案 0 :(得分:0)

这是我建议的答案。它已经在生产中进行了测试。

  • 触发“编辑”
  • 如果更改已填充的单元格,则会发送电子邮件
  • 如果更改为空单元格,则不会发送电子邮件
  • 电子邮件发件人是“不回复”默认电子邮件(仅供参考:“ noreply”选项 似乎覆盖了“名称”属性)
  • 电子邮件在更改的同一行中包含来自其他单元格的值

代码如下:

function sendNotificationCellChange(e) {
  var ss = e.source;
  var sheet = ss.getActiveSheet();
  var range = e.range;
  var oldvalue = e.oldValue;
  var newvalue = e.value;

  var recipients = "you@gmail.com" + "," + "me@gmail.com";
  var cust_name = '';
  var proj_num = '';
  var subject = '';
  var body = '';

  if (range.getA1Notation().indexOf('K') != -1 && oldvalue !== undefined && newvalue !== undefined) {
    cust_name = sheet.getRange('B'+ sheet.getActiveCell().getRowIndex()).getValue();
    proj_num = sheet.getRange('C'+ sheet.getActiveCell().getRowIndex()).getValue();

    var subject = 'Ship Date Has Changed: \"'+newvalue+'\" Customer: \"'+cust_name+'\" Project Number: "'+proj_num+'"';
    MailApp.sendEmail(recipients, subject, body, {
      name: 'Schedule',
      noReply: 'true'
    });
  }
};