仅在列电子表格上获取特定的通知

时间:2019-03-18 11:14:29

标签: spreadsheet

我在脚本中添加了仅当列'C'中的任何内容更改时,它才会通过电子邮件通知我。

但是到目前为止,即使列A到Q都被更改,我也已经收到了一封电子邮件。有人可以帮助我吗?

function onEdit(e) {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var s = SpreadsheetApp.getActiveSheet();
   if (s.getName() == 'OUT OF STOCK') {

     var cell = s.getActiveCell().getA1Notation();
     var row = s.getActiveRange().getRow();
     var cellvalue = s.getActiveCell().getValue().toString();
     var recipients = "ringo@ledstores.nl";
     var message = '';
     if(cell.indexOf('CC')!=-1){ 
       message = s.getRange('CC'+ s.getActiveCell().getRowIndex()).getValue()
     }
     var subject = 'Update to '+s.getName();
     var body = s.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellvalue + '». For message: «' + message + '»';
     MailApp.sendEmail(recipients, subject, body);

   }
 };

1 个答案:

答案 0 :(得分:0)

几个小时后,我自己尝试修复自己的代码,然后我提出了解决方案!希望与可以帮助他们的其他人分享。

function onEditTrigger(e){
  var range = e.range;
  var intCol = range.getColumn();

  if (intCol == 3)                                          
  {
    var intRow = range.getRow();                              
    var sheet = SpreadsheetApp.getActiveSheet();
    var dataRange = sheet.getRange(intRow, 1, 1, 3);          
    var dataValues = dataRange.getValues();                   
    var s = SpreadsheetApp.getActiveSheet();
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var row = s.getActiveRange().getRow();
    var cellvalue = s.getActiveCell().getValue().toString();
    var recipients = "youremail@here.com";
    var message = '';

       if (s.getName() == 'Sheet name'){ 
         
    var subject = 'Update to '+s.getName();
     var body = s.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellvalue + '»';
     MailApp.sendEmail(recipients, subject, body);
     }
  }
}