8

需要谷歌脚本的帮助。我有多行电子表格

需要一个执行以下操作的脚本:

如果 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 列中的单元格的值

最后脚本 - 回答我的问题

电子表格

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 上设置触发器,脚本将正常工作

4

2 回答 2

6

您应该在发布问题之前搜索此论坛;我确实在电子邮件+手机上进行了搜索,并得到了一些结果:

例如,这个帖子答案几乎完全符合您的要求。

编辑后编辑:

使用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)
于 2013-03-11T11:53:24.303 回答
1

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

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

注意:函数名称不应该是 onEdit,它是应用程序脚本中的特殊名称。由于LIMITED authMode ,onEdit 函数不允许发送电子邮件。

这是一个应用程序脚本,如果在特定范围内编辑单元格,它允许发送电子邮件。它还允许在通知电子邮件中发送要发送的整行、整列或自定义范围。

于 2016-09-12T12:08:44.493 回答