首页 文章

单元格更改时的电子邮件通知

提问于
浏览
8

需要谷歌脚本的帮助 . 我有多行spreadsheet .

需要执行以下操作的脚本:如果G列中的任何单元格已更改,则使用此行中的信息向自定义地址发送电子邮件通知:来自单元格D的信息和单元格G的新值 .

UPD

我找到了有用的信息:

function emailNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation();
  var cellvalue = ss.getActiveCell().getValue().toString();
  var recipient = "me@gmail.com";
  var subject = 'Update to '+sheet.getName();
  var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on cell: «' + cell + '» New cell value: «' + cellvalue + '»';
  MailApp.sendEmail(recipient, subject, body);
};

此脚本跟踪整个表中的更改 . 我想仅跟踪G列中的更改,并从列D获取值 .

问题:当值更改了G列中的单元格时,如何获取D列中单元格的值

Finally script — answer to my question

spreadsheet

function sendNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation();
  var row = sheet.getActiveRange().getRow();
  var cellvalue = ss.getActiveCell().getValue().toString();
  var recipients = "me@gmail.com";
  var message = '';
  if(cell.indexOf('G')!=-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 + '»';
  MailApp.sendEmail(recipients, subject, body);
};

在onEdit上设置触发器,脚本可以正常工作

2 回答

  • 6

    您应该在发布问题之前搜索此论坛;我在电子邮件单元格上搜索并获得了一些结果:

    例如,this post answer几乎完全符合您的要求 .

    编辑后编辑:

    使用 IF 条件 .

    像这样的东西:

    var cellG = ''
        if(cell.indexOf('D')!=-1){ // = if you edit data in col D
    cellG = sheet.getRange('G'+ sheet.getActiveCell().getRowIndex()).getValue()
    // add more condition if necessary and/or send your mail (cellG contains the value in column G of the active row
    }
        Logger.log(cellG)
    
  • 1

    跟踪单元格更改事件的正确方法是将事件对象“e”与onEdit触发器一起使用 . 事件对象包含已编辑的范围,因此您始终可以获取已更改的单元格的内容 .

    function sendNotification(e){
      var range = e.range;
      range.setNote('Last modified: ' + new Date());
    }
    

    注意:由于 LIMITED authMode,函数名称不允许发送电子邮件 .

    Here is an apps script,如果在特定范围内编辑单元格,则允许发送电子邮件 . 它还允许发送整个行,整列或自定义范围以在通知电子邮件中发送 .

相关问题