我知道如何创建一个范围来从单元格中获取值并添加到数组中。我在添加几个不按顺序(1,1,10,1(的单元格中的值时遇到问题。
我正在尝试添加像这个这样的值
var Array = [
sheet.getRange("AD3").getValue(),
sheet.getRange("AG3").getValue(),
sheet.getRange("AJ3").getValue(),
sheet.getRange("AM3").getValue(),
sheet.getRange("AD23").getValue(),
sheet.getRange("AG23").getValue(),
sheet.getRange("AJ23").getValue(),
sheet.getRange("AM23").getValue(),
]
它不起作用,每次返回";未定义";。它们是那些单元格中的日期。以下是我的测试方法:
for (var i=0; i < Array.length; i++) {
if (Array[i][0] != ""){
Logger.log(Array[i][0])
}
}
任何帮助都是先决条件。
从您在评论中的回复中,我了解到您的问题来自以下脚本。
var Array = [
sheet.getRange("AD3").getValue(),
sheet.getRange("AG3").getValue(),
sheet.getRange("AJ3").getValue(),
sheet.getRange("AM3").getValue(),
sheet.getRange("AD23").getValue(),
sheet.getRange("AG23").getValue(),
sheet.getRange("AJ23").getValue(),
sheet.getRange("AM23").getValue(),
];
for (var i=0; i < Array.length; i++) {
if (Array[i][0] != ""){
Logger.log(Array[i][0])
}
}
在您的值中,Array
是一维数组。因此,当您使用此脚本时,将检索每个元素的首字母。在这种情况下,当每个值都是日期对象时,返回null
。我想这可能是你问题的原因。
当您想使用附加脚本查看Array
中的每个值时,下面的修改如何?
修改的脚本:
在此修改中,将修改for循环。
for (var i = 0; i < Array.length; i++) {
if (Array[i].toString() != "") {
Logger.log(Array[i]);
}
}
使用RangeList类:
function myfunk() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0');
const rgl = sh.getRangeList(["AD3","AG3","AJ3","AM3","AD23","AG23","AJ23","AM23"]);
let vals = []
rgl.getRanges().forEach(r => {
vals.push({loc: r.getA1Notation(),value: r.getValue()})
});
Logger.log(JSON.stringify(vals))
}
RangeList
Execution log
11:16:15 AM Notice Execution started
11:16:17 AM Info [{"loc":"AD3","value":""},{"loc":"AG3","value":""},{"loc":"AJ3","value":""},{"loc":"AM3","value":""},{"loc":"AD23","value":""},{"loc":"AG23","value":""},{"loc":"AJ23","value":""},{"loc":"AM23","value":""}]
11:16:17 AM Notice Execution completed
显然,我的价值观不会与你的一致,因为我没有你的数据