我在Google应用脚本中有一个二维数组,其中包含不同长度的数组。我想在电子表格中设置数组的值。但是,因为它内部的数组长度不同,所以我收到的错误基本上表示范围和数组高度不对齐。我已经列出了下面数组结构的一个例子。
如果我将空值添加到每个单独的数组,以便它们都匹配最长数组的长度,我可以使它工作。这似乎是一种解决方法。有没有其他方法可以设置二维数组的值?
var array = [
[a],
[b,c],
[d,e],
[],
[f,g,h,i],
[],
[j,k],
]

答案 0 :(得分:3)
如果你的行数很少,你可以做些什么?长度差异很大,就是设置它上面的每一行。
for( var i = 0; i < array.length; ++i )
sheet.getRange(i+1, 1, 1, array[i].length).setValues([array[i]]);
但这只是另一种解决方法。但是对你的数组进行处理以使所有长度匹配并执行单个setValues
可能会表现得更好。
答案 1 :(得分:2)
如果您的真实阵列有很多行,那么单独写入会很昂贵。由于js处理数组的方式,对每个行数组进行重新定义非常简单。与我使用的模式类似的模式是:
function myFunction() {
var array = [
[1],
[2,2],
[3,5],
[],
[0,0,0,0],
[],
[0,0],
];
// get length of the longest row
var max = array
.slice(0)
.sort(function (a,b) {
return ( (a.length !== b.length) ? 1 : 0 );
})[0].length;
// arrays are zero indexed
var maxi = max-1;
// insert a pointer at max index if none exists
array = array
.map(function (a){
a[maxi] = a[maxi] || "";
return a;
});
Logger.log(array);
}