使用来自其他单元格的消息发送有关单元格值更改的电子邮件

时间:2018-04-18 04:56:22

标签: google-sheets sendmail

我是谷歌脚本的新手。我有一个范围,其中列中的单元格发生变化。如果该列中的单元格数量大于零,那么脚本必须发送一封电子邮件,其中的消息是来自同一行中具有更新单元格的单元格的内容(即不同的列)让我们说如果第I列中的值随后自动更改,则必须发送一封电子邮件,其中包含的信息包含在同一行但是列F中。请看下面,我将不胜感激。

function SendValue() {
    var ss = SpreadsheetApp.getActive();
    var sheet = ss.getSheetByName("Dividend");
    var values = sheet.getRange("I2:I").getValues();
      //var values1 = sheet.getRange("G2:G").getValues();
    var results = [];
    for(var i=0;i<values.length;i++){
      if(values[i]>0){
      results.push(sheet.getIndex([+i+2]+"G"));  
        // +2 because the loop start at zero and first line is the second one (I2)
      }
    }
    MailApp.sendEmail('sxxxxxx@gmail.com', 'EX-DIVIDEND', results );
  };

1 个答案:

答案 0 :(得分:0)

getValues()返回一个二维数组,或更准确地说是一个数组数组,即使其中一个维度为1. values[i]不是一个值,而是一个表示i行的数组范围。您将需要访问该数组以获取该行中特定列的单元格。

if(values[i]>0)替换为if(values[i][0]>0)

我怀疑results.push(sheet.getIndex([+i+2]+"G"));应该是results.push(sheet.getRange("G"+(i+2)).getValue());,因为getIndex()没有参数,看起来它是A1表示法。

然而,有一个比尝试构建A1Notation更好的选择。 getRange()支持使用数字来引用行和列。 getRange(7, i+2)是更好的选择。

https://developers.google.com/apps-script/reference/spreadsheet/range#getvalues https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange(Integer,Integer)