将 setValues() 与不同长度的数组一起使用
Using setValues() with arrays of different lengths
我在 Google 应用程序脚本中有一个二维数组,其中包含不同长度的数组。我想在电子表格中设置数组的值。但是,由于其中的数组长度不同,我收到一条错误消息,基本上说范围和数组高度不对齐。我在下面列出了数组结构的示例。
如果我向每个单独的数组添加空值,使它们都与最长数组的长度相匹配,我就能让它工作。不过,这似乎是一种解决方法。还有另一种方法可以设置二维数组的值吗?
var array = [
[a],
[b,c],
[d,e],
[],
[f,g,h,i],
[],
[j,k],
]
不,你不能。尺寸必须匹配。
如果你有几个 "rows" 并且长度差异很大,你可以做的是单独设置每一行。
for( var i = 0; i < array.length; ++i )
sheet.getRange(i+1, 1, 1, array[i].length).setValues([array[i]]);
但这只是另一种解决方法。但是在你的阵列上工作以使所有长度匹配并做一个 setValues
可能会表现得更好。
如果您的实际数组有很多行,则单独写入会很昂贵。由于 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);
}
我在 Google 应用程序脚本中有一个二维数组,其中包含不同长度的数组。我想在电子表格中设置数组的值。但是,由于其中的数组长度不同,我收到一条错误消息,基本上说范围和数组高度不对齐。我在下面列出了数组结构的示例。
如果我向每个单独的数组添加空值,使它们都与最长数组的长度相匹配,我就能让它工作。不过,这似乎是一种解决方法。还有另一种方法可以设置二维数组的值吗?
var array = [
[a],
[b,c],
[d,e],
[],
[f,g,h,i],
[],
[j,k],
]
不,你不能。尺寸必须匹配。
如果你有几个 "rows" 并且长度差异很大,你可以做的是单独设置每一行。
for( var i = 0; i < array.length; ++i )
sheet.getRange(i+1, 1, 1, array[i].length).setValues([array[i]]);
但这只是另一种解决方法。但是在你的阵列上工作以使所有长度匹配并做一个 setValues
可能会表现得更好。
如果您的实际数组有很多行,则单独写入会很昂贵。由于 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);
}