【问题标题】:Sent email notification if a change happens on specified columns on a google sheet如果 Google 表格上的指定列发生更改,则发送电子邮件通知
【发布时间】:2016-04-15 12:48:14
【问题描述】:

我在 Google Drive 中有一个电子表格,里面有两张表格“生产”和“萌芽”

对于生产工作表,如果对 A - F 的列进行了更改,我会发送电子邮件通知。此外,如果从工作表中添加或删除行。

以下代码在一定程度上起到了作用:

    function onEdit( e ){
    //To get email notification if any changes to the perticular cells
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("production");
    var cell = ss.getActiveCell().getA1Notation();
    var row = sheet.getActiveRange().getRow();
    var cellvalue = ss.getActiveCell().getValue().toString();
    var recipients = "zeeshanrang@gmail.com";
    var message = '';
    if(cell.indexOf('C')!=-1){ 
      message = sheet.getRange('D'+ sheet.getActiveCell().getRowIndex()).getValue()
    }
    var subject = 'Update to '+sheet.getName();
    var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellvalue + '». For message: «' + message + '»';
    Logger.log(body);
   //MailApp.sendEmail(recipients, subject, body);
 };

但它会在每次编辑时向我发送一封邮件,这不是必需的。需要每小时发送一次邮件(如果有变化)。同样,现在它只检查 C 列的更改,而不检查其他列的更改。

另外,我无法理解 if(cell.indexOf('C')!=-1) 。有人可以解释一下这句话是什么意思。

TIA

【问题讨论】:

  • 我为此使用 Zapier。
  • It (IndexOf) 在没有找到任何东西时返回负数。在您的情况下,如果 Range A1 包含 C 那么这将执行... message = sheet.getrange..

标签: javascript excel google-sheets


【解决方案1】:

意思如下:

if(cell.indexOf('C')!=-1) // means that if you edit column C
       .......  //the following will happen
    }

所以要详细解释一下:

cell.indexOf('C')-> 搜索“C”

!= -> 不等于

-1 -> 不存在/找不到

if(cell.indexOf('C')!=-1) -> 如果 indexOf('C') 不等于 '-1'(即如果存在 'C',则执行 'if' 语句

【讨论】:

  • 所以这意味着 cell.indexOf('C') 与工作表的 C 列无关.. ?
猜你喜欢
  • 1970-01-01
  • 2017-08-22
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多