我有一张Google工作表,我想在一列大于另一列时生成电子邮件提醒。具体地,列F> G栏。这是我到目前为止所提出的任何建议都会非常感激,因为我没有太多的技能写作功能。
function readCell() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Watch list");
var value = sheet.getRange("F2").getValue();
var value1 = sheet.getRange("G2").getValue();
if(value>value1) MailApp.sendEmail('example@gmail.com', 'subject', 'message');
};
目前,这仅尝试将细胞F2与细胞G2进行比较。有没有办法让函数将整个F列与列G进行比较,并为Fx>的每个案例生成一个电子邮件。 Gx?
谢谢!
答案 0 :(得分:1)
你必须在整个范围内循环。
首先,而不是获取一个单元格的内容,您需要获取所有列的内容:
var value = sheet.getRange("F2").getValue();
成为那个
var values = sheet.getRange("F2:F").getValues();
(对于value1相同)
那么你需要创建一个收集结果的空表:
var results = [];
现在你需要遍历所有值:
for(var i=0;i<values.length;i++){
//do the comparaison and store result if greater for example
}
然后你可以发送结果。 所有这些都是这样的:
function readCell() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Watch list");
var values = sheet.getRange("F2:F").getValues();
var value1s = sheet.getRange("G2:G").getValues();
var results = [];
for(var i=0;i<values.length;i++){
if(values[i]<value1s[i]){
results.push("alert on line: "+(i+2)); // +2 because the loop start at zero and first line is the second one (F2)
}
}
MailApp.sendEmail('example@gmail.com', 'subject', results.join("\n"));
};
如果您想自动触发该功能,您还需要更改调用电子表格的方式(而不是getActive ....您需要使用openById)