Google脚本根据Google工作表中的单元格发送条件电子邮件

时间:2016-07-26 21:37:19

标签: google-sheets

我有一张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?

谢谢!

1 个答案:

答案 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)