javascript - 在尝试将该参数中的值作为二维数组返回时,在以范围作为参数的 Google 表格自定义函数上,不会打印该值
问题描述
如果我通过键入“=chart(A2:A5, B2:B5”从 Google 表格单元格中调用以下函数,则不会打印任何内容,甚至不会打印错误消息。我希望打印的是两行,其中一行包含A2:A5 和另一个包含 B2:B5 的内容。
function chart(range, range2){
return [range, range2];
}
但是,如果我返回一个不包含参数值的二维数组,那么它会正确显示信息。如果我调用 "=chart(A2:A5, B2:B5" 将创建两行,第一行包含车辆列表,然后是数字列表。
function chart(range, range2){
vehicles = ["airplane", "motorcycle", spaceship]
numbers = [43, 29, 11]
return [vehicles, numbers];
}
如果我进行组合,如下所示,第一行将留空,第二行将包含车辆列表。
function chart(range, range2){
vehicles = ["airplane", "motorcycle", "spaceship"]
return [range, vehicles];
}
对于最后一个示例,我从“范围”参数中获取了一个值,并将其添加到数组中的数组中。这次,第一行将包含车辆列表,第二行将包含值“1, 2, , 3”,其中 2 和 3 之间有一个空格。
function chart(range, range2){
vehicles = ["airplane", "motorcycle", spaceship, "submarine"]
numbers = [1, 2, range[0], 3]
return [vehicles, numbers];
}
总之,每次我尝试返回一个包含参数值(或整个参数)的二维数组时,这些值在 Google 表格上都是空白的。它只发生在二维数组上。返回 2D 数组仅适用于我未在数组中包含参数值的所有其他情况。任何帮助,将不胜感激。
解决方案
对于您的问题,请注意自定义功能的以下规则。
作为自定义函数的返回值,它们是数字、字符串、布尔值、一维数组、二维数组。
在 Google Apps 脚本端,当
=chart(A2:A5, B2:B5)
被放入单元格时,A2:A5
和B2:B5
是分别包含单元格值的二维数组。
根据上述规则,我认为您的问题的原因是二维数组被放入[]
. 在这种情况下,它是 3 维数组。我想为每个脚本回答如下。
在您的情况下,它假设将=chart(A2:A5, B2:B5)
其放入每个脚本的单元格中。
答案1:
关于以下脚本,
function chart(range, range2){
return [range, range2];
}
我认为你的问题的原因是什么时候=chart(A2:A5, B2:B5)
被放入一个单元格,A2:A5
并且B2:B5
是二维数组。例如,A2:A5
就像[['a2'],['a3'],['a4'],['a5']]
. 由此,[range, range2]
是3维数组。当数组作为自定义函数的返回值时,可以使用一维和二维数组。
当您要放置类似的值[range, range2]
时,需要合并range
,range2
如下所示。
function chart(range, range2){
return range.concat(range2);
}
如果要放入range, range2
2 行,脚本如下。
function chart(range, range2){
return [range.flat(), range2.flat()];
}
答案 2:
关于以下脚本,
function chart(range, range2){
vehicles = ["airplane", "motorcycle", "spaceship"]
numbers = [43, 29, 11]
return [vehicles, numbers];
}
在这种情况下,vehicles
和numbers
是一维数组。这样,[vehicles, numbers]
是二维数组,每个值都被放入每行的单元格中。似乎即使返回 3 维数组,也不会发生错误。
答案 3:
关于以下脚本,
function chart(range, range2){
vehicles = ["airplane", "motorcycle", "spaceship"]
return [range, vehicles];
}
在这种情况下,range
和vehicles
是二维数组和一维数组。这样,range
of[range, vehicles]
不能被放入单元格中,而vehicles
被放入。
答案 4:
关于以下脚本,
function chart(range, range2){
vehicles = ["airplane", "motorcycle", spaceship, "submarine"]
numbers = [1, 2, range[0], 3]
return [vehicles, numbers];
}
在这种情况下,当spaceship
在其他地方声明时,range[0]
是一维数组,如[1, 2, [#, #, #,,,], 3]
. 因为range
是二维数组。似乎当元素是数字和一维数组时,一维数组没有放。例如,当[1, 2, range[0], 3]
被修改为时[1, 2, range[0][0], 3]
,range[0][0]
可以放。
笔记:
- 在自定义函数中,似乎当数组是二维数组时,每个列的长度不需要相同
const sample = () => [[1, 2, 3], [1], [, 2, 3], [1, 2]];
。
参考:
推荐阅读
- mysql - 使用 Group By 计数和过滤;和行到列的转换
- javascript - 从文本输入中删除重复的字符
- c++ - IOPCShutdown::Advise 失败:错误 80040202
- typescript - 模块 '"../node_modules/@types/d3"' 没有导出的成员 'event'
- package-lock.json - 如何在 build.gradle 中排除 package-lock.json 中可用的依赖项或模块以摆脱漏洞
- c++ - Cpp 中的模板实现没有合适的默认构造函数
- java - 将 .txt 文件中的每一行与 Java 中的数组字符串进行比较
- kubernetes - 如何在无头服务上使用 Traefik IngressRoute
- unity3d - 如何在 Unity 中制作具有颜色变化的动画?
- json - 错误类型“未来”
- >' 不是类型“列表”的子类型