【问题标题】:Google Sheets: how to make returned value of custom function overflow into a row?Google表格:如何使自定义函数的返回值溢出成一行?
【发布时间】:2016-01-02 07:21:05
【问题描述】:

我编写了一个自定义函数,它返回一个简单的数组。 (这是对多张纸的简单脏 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 时,值会溢出列。但我希望它通过行向右溢出。有没有办法这样做?谢谢。

Google 的 guide 对自定义函数返回值有这样的说法:

每个自定义函数都必须返回一个值来显示,例如:

如果自定义函数返回一个值,该值将显示在单元格中 该函数是从中调用的。如果自定义函数返回 二维值数组,值溢出到相邻的 单元格,只要这些单元格是空的

但这似乎对我没有帮助。

【问题讨论】:

    标签: javascript google-apps-script google-sheets google-apps


    【解决方案1】:

    数组中的每个条目代表一行。 例如[[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);
    

    【讨论】:

    • 谢谢!完美的答案。我不知道数组条目的这种行为。
    【解决方案2】:

    SpiderPig 非常明确的回答对我帮助很大。

    如果您总是只想返回一行,那么您也可以将代码编写为

    ...
    var cellValues = [];
    ...
    cellValues.push(val);
    ...
    return [cellValues];
    

    这将返回一个数组,其中包含您的 cellValues 数组作为其第一个也是唯一的条目

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多