微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在尝试将范围内的值作为2D数组返回的Google Sheets自定义函数中,该值未打印 答案1:答案2:答案3:答案4:注意:参考:

如何解决在尝试将范围内的值作为2D数组返回的Google Sheets自定义函数中,该值未打印 答案1:答案2:答案3:答案4:注意:参考:

如果我通过键入“ = chart(A2:A5,B2:B5”)从Google表格单元格中调用以下函数,则不会打印任何内容,甚至不会显示错误消息。我希望打印的是两行,其中一行包含A2:A5的内容,另一个包含B2:B5的内容

function chart(range,range2){
  return [range,range2];
}

但是,如果我返回不包含参数值的2D数组,则它会正确显示信息。如果我叫“ = chart(A2:A5,B2:B5”,则将创建两行,第一行包含车辆列表,下面是数字列表。

function chart(range,range2){
  vehicles = ["airplane","motorcycle",spaceship]
  numbers = [43,29,11]
  return [vehicles,numbers];
}

如果进行组合(如下所示),第一行将保留为空白,第二行将包含车辆列表。

function chart(range,"spaceship"]
  return [range,vehicles];
}

对于最后一个示例,我从“范围”参数中获取一个值,并将其添加到数组中的数组中。这次,第一行将包含车辆列表,第二行将包含值“ 1、2、3”,在2和3之间有一个空格。

function chart(range,spaceship,"submarine"]
  numbers = [1,2,range[0],3]
  return [vehicles,numbers];
}

总而言之,每次我尝试返回包含参数值(或整个参数)的2D数组时,这些值在Google表格中都会留空。它仅在2D阵列中发生。返回2D数组的工作原理是在所有其他不包含数组中参数值的情况下都可以找到。 任何帮助将不胜感激。

解决方法

对于您的问题,请注意以下有关自定义功能的规则。

  • 作为自定义函数的返回值,它们是数字,字符串,布尔值,一维数组,二维数组。

  • =chart(A2:A5,B2:B5)放在单元格中时,在Google Apps脚本一侧,A2:A5B2:B5是包含单元格值的二维数组。

根据上述规则,我认为您遇到问题的原因是将二维数组放入[]中。在这种情况下,它是3维数组。我想为每个脚本回答如下。

根据您的情况,它假设每个脚本都将=chart(A2:A5,B2:B5)放在单元格中。

答案1:

关于以下脚本,

function chart(range,range2){
  return [range,range2];
}

我认为您遇到问题的原因是,将=chart(A2:A5,B2:B5)放在单元格中时,A2:A5B2:B5是二维数组。例如,A2:A5就像[['a2'],['a3'],['a4'],['a5']]。由此,[range,range2]是3维数组。将数组用作自定义函数的返回值时,可以使用1维和2维数组。

要放置[range,range2]之类的值时,需要按如下所示合并rangerange2

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];
}

在这种情况下,vehiclesnumbers是一维数组。这样,[vehicles,numbers]是二维数组,并且每个值都被放置到每一行的单元格中。似乎即使返回3维数组,也不会发生错误。

答案3:

关于以下脚本,

function chart(range,"spaceship"]
  return [range,vehicles];
}

在这种情况下,rangevehicles是2维数组和1维数组。如此一来,range中的[range,vehicles]不能放入单元格,而vehicles则不能放入单元格。

答案4:

关于以下脚本,

function chart(range,spaceship,"submarine"]
  numbers = [1,2,range[0],3]
  return [vehicles,numbers];
}

在这种情况下,当在其他位置声明spaceship时,range[0]是一维数组,类似于[1,[#,#,],3]。因为range是二维数组。看起来当元素是数字和一维数组时,不会放置一维数组。例如,将[1,3]修改为[1,range[0][0],3]时,可以放置range[0][0]

注意:

  • 在自定义函数中,似乎当数组是二维数组时,不需要像const sample = () => [[1,3],[1],[,[1,2]];那样使每列长度相同。

参考:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。