将不在行中的几个单元格的值写入数组



我知道如何创建一个范围来从单元格中获取值并添加到数组中。我在添加几个不按顺序(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

显然,我的价值观不会与你的一致,因为我没有你的数据

相关内容

最新更新