我正在自动化我的谷歌表格,以自动发送电子邮件,我不知道如何比较变量数组与列在我的谷歌页。当我把它放在'IF‘语句中时,我会不断地得到返回的所有值,而不仅仅是数组中的值。我希望我的代码只显示gEnglish变量中的数据,而不是显示所有数据。我还想知道我如何能够根据地区向用户发送电子邮件。
function sendEmails() {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main").activate();
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr = ss.getLastRow();
var decisionOne = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange(1,1).getValue();
var decisionTWO = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange(2,1).getValue();
var decisionThree = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange(3,1).getValue();
var decisionFour = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange(5,1).getValue();
var decisionFive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange(4,1).getValue();
var gEnglish = ["IT","US","GB","UK"];
var gSpanish = ["SP"];
var user1 = ["JP","SK","IND","RU"];
var user2 = [gEnglish,"UK"];
var user3 = [gSpanish, "BR", "PT"];
var user4 = ["FR", "DE","IT"];
for (var i = 2;i<=lr;i++){
var type = ss.getRange(i,6).getValue();
var region = ss.getRange(i, 5).getValue();
var decision = ss.getRange(i,15).getValue();
//I used to have if(region == gEnglish)
if(gEnglish.includes(region[i]) ){
var channel = ss.getRange(i,3).getValue();
var decision = ss.getRange(i,15).getValue();
var url = ss.getRange(i, 9).getValue();
var name = ss.getRange(i,11).getValue();
var messageBody = {};
var subjectLine = "blahblahblah";
}
}
}
如果我的数组中只有一个值,它可以正常工作,但是一旦我放得更多,我就会得到所有返回的值。
我做错了什么?
发布于 2020-10-26 02:47:04
答案:
.getValue()
返回单元格的数据,而不是数组。因此,您不需要使用region[i]
__引用数据。
更多资料:
假设您有单元格C1
中的值"Hello“。要获得这个值,您可以使用getValue()
和getValues()
对象的Range
方法。
如果运行以下代码:
let c = SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName(sheetName)
.getRange("C1");
console.log(c.getValue());
console.log(c.getValues());
执行日志将显示以下内容:
Oct 26, 2020, 11:42:39 AM Debug Hello World
Oct 26, 2020, 11:42:39 AM Debug [ 'Hello World' ]
做同样的事情,但是访问元素
let c = SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName(sheetName)
.getRange("C1");
console.log(c.getValue()[0]);
console.log(c.getValues()[0]);
将在执行日志中显示以下内容:
Oct 26, 2020, 11:44:39 AM Debug H
Oct 26, 2020, 11:44:39 AM Debug Hello World
修正:
更改以下行:
if (gEnglish.includes(region[i])) {
//...
}
至:
if (gEnglish.includes(region)) {
// ...
}
参考文献:
https://stackoverflow.com/questions/64520033
复制相似问题