我正在尝试为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);
}
如果有人知道我缺少什么,我将非常感谢你的帮助。
谢谢,
维克多
答案 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分钟触发器,该触发器在电子邮件中发送属性的内容并刷新队列。