在Google电子表格中更改单元格时发送电子邮件

时间:2015-03-03 20:40:26

标签: google-apps-script google-sheets

我正在尝试为Google电子表格设置一个脚本,只要将M列中的单元格修改为“y”,该脚本就会通过电子邮件发送给特定的人。我找到了这个脚本, email notification if cell is changed 而我正在尝试修改它以满足我的需求,但我有一个问题让它工作。这是我现在的剧本。

function onEdit(e){
  Logger.log(e)
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  Logger.log(ss)
  var sheet = ss.getActiveSheet();
  Logger.log(sheet)
  var cell = ss.getActiveCell().getA1Notation();
  Logger.log(cell)
  var row = sheet.getActiveRange().getRow();
  Logger.log(row)
  var column = sheet.getActiveRange().getColumn();
  Logger.log(column)
  var cellvalue = ss.getActiveCell().getValue().toString();
  Logger.log(cellvalue)
  var recipients = "08cylinders@gmail.com"; //email address will go here
  var message = '';
  if(cell.indexOf('M')!=-1){ 
message = sheet.getRange('M'+ sheet.getActiveCell().getRowIndex()).getValue()
} 
  Logger.log(message)
  Logger.log(cell)
  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);
} 

如果有人知道我缺少什么,我将非常感谢你的帮助。

谢谢,

维克多

2 个答案:

答案 0 :(得分:0)

我认为这可以解决您的活动问题:

function onEdit(e) {
var ssActive = e.source;
var ssActiveRange = ssActive.getActiveRange();
var ssActiveRangeVal = ssActiveRange.getValue();
var ActiveRow = ssActiveRange.getRow(); // if needed to put on body's message
var ActiveColumn = ssActiveRange.getColumn();

if((ssActiveRangeVal=='y' || ssActiveRangeVal=='Y') && ActiveColumn==13){ // ActiveColumn==13 for M
  // write down your mail code here
}

}

答案 1 :(得分:0)

您无法从onEdit触发器发送电子邮件。您需要做的是将编辑保存为文档属性,然后设置一个基于时间的1分钟触发器,该触发器在电子邮件中发送属性的内容并刷新队列。