我需要Google电子表格才能在细胞发生变化时发送电子邮件。
问题是,此单元格中出现的内容是由另一张表格的值决定的(我使用if和过滤器函数)。
通常,
if(cell.indexOf('F')!=-1){
MailApp.sendEmail(emailAddress, subject, message);
}
似乎没有捕获单元格中的更改,因为更改是由编译来自另一个工作表的数据的公式引起的,但是,如果我要手动输入F列中的内容,它会向我发送电子邮件。 / p>
以下是我在脚本编辑器中的完整代码:
function Initialize() {
var triggers = ScriptApp.getProjectTriggers();
for(var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
ScriptApp.newTrigger("sendNotification")
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onEdit()
.create();
};
function sendNotification(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = ss.getActiveCell().getA1Notation();
var dataRange = sheet.getRange(2, 1, 2, 2);
var data = dataRange.getValues();
for (i in data) {
var row = data[i]
var emailAddress = row[0];
var message = row[1];
var subject = "Job exceeded time allocated";
if(cell.indexOf('F')!=-1){
MailApp.sendEmail(emailAddress, subject, message);
}
}
}
答案 0 :(得分:0)
get and set Value of a Cell do not work 基本上 - getCell()返回一个Range对象..您需要添加.getValue()方法来获取您尝试在脚本中执行的范围内的单元格的值。我发现使用带有单元格地址的getRange效果更好:即 getRange('B1')。
Trying to read cell 1,1 in spreadsheet using Google Script API
单元格对象是一个公式,所以你真的不希望这样。因此,使用getRange意味着您可以获得一个单元格中公式结果的范围。
这听起来比我知道得多。我自己偶然发现了这个问题并按照上面的说明进行了修复。