我编写了一个返回简单数组的自定义函数。 (这是在多张纸上进行简单的脏3D查找)。如果它有帮助,这是代码:
function get3DCellValues(startSheet, endSheet, cell) {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var sum = 0;
var cellValues = [];
for (var i = (startSheet); i < endSheet; i++ ) {
var sheet = sheets[i];
var val = sheet.getRange(cell).getValue();
cellValues.push(val);
}
//Logger.log(cellValues);
return cellValues;
}
问题是,当我返回cellValues时,值会向列溢出。但是我希望它能够在行中向右溢出。有办法吗?谢谢。
谷歌的guide对于返回值的自定义函数有这个说法:
每个自定义函数都必须返回要显示的值,例如:
如果自定义函数返回值,则该值将显示在单元格中 该函数是从。如果自定义函数返回一个 二维数组值,值溢出到相邻 细胞只要那些细胞是空的
但这似乎对我没有帮助。
答案 0 :(得分:8)
数组中的每个条目代表一行。
例如[[1,2],[3,4]]
将分为两行[1,2]
和[3,4]
。
[1,2,3,4]
被解释为[[1],[2],[3],[4]]
,因此它是4行,每行一个。
如果您只需要一行,则可以编写[[1,2,3,4]]
。
所以你必须像这样改变你的代码
...
var cellValues = [[]];
...
cellValues[0].push(val);
答案 1 :(得分:1)
SpiderPig非常明确的答案对我帮助很大。
如果您只想返回一行,那么您也可以将代码编写为
...
var cellValues = [];
...
cellValues.push(val);
...
return [cellValues];
这将返回一个数组,其中包含您的cellValues数组作为其第一个且唯一的条目