我是谷歌脚本的新手。我有一个范围,其中列中的单元格发生变化。如果该列中的单元格数量大于零,那么脚本必须发送一封电子邮件,其中的消息是来自同一行中具有更新单元格的单元格的内容(即不同的列)让我们说如果第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 );
};
答案 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)