Google表格脚本参数,例如按钮

时间:2016-03-16 13:56:42

标签: excel google-sheets spreadsheet google-spreadsheet-api

是否可以在已签名的脚本上传递参数?

我有一个电子表格,并为每个按钮签署了几个按钮功能。

示例功能:

function foo(){
    return "bar";
}

在单元格上调用此函数

=foo()

返回bar,将此功能签名为按钮

foo

什么也没有给我回报,但当然有效。我的意思是脚本不能将字符串返回到图像(实际上我的按钮是什么)。无论如何......

带参数的示例函数:

function foo(bar){
    return bar;
}

在单元格中调用脚本

=foo('hello world')

hello world作为已过期的

返回给我

将此签名设为我的按钮

foo('hello world') 

导致错误,因为按钮无法找到脚本。他正在搜索函数名foo('hello world'),但(...)与函数无关。

那么在签署脚本时如何传递参数?

目前我有26个功能(全部相同,只有1个参数更改)来解决这个问题。但是通过传递参数,我可以用2个函数而不是26个来完成所有这些。

2 个答案:

答案 0 :(得分:0)

使用自定义功能时,通过将参数指定给可绘制图像,您无法传递参数。它仅在从单元格调用自定义函数时有效。 可能的解决方法是将参数存储在某些工作表和单元格上,然后通过它们检索它们 getRange()getDisplayedValue()

其他可能的解决方法发布在Google产品帮助论坛中,可以找到here

答案 1 :(得分:0)

我找到了为每个按钮创建单独的助手方法的最佳选择,然后将正确的参数传递给泛型方法。

在下面的示例中,您将绑定到特定于城市的方法的按钮,例如“赫尔辛基”按钮“ updateAvailabilityInfoHelsinki”。

function updateAvailabilityInfoHelsinki() {
  updateAvailabilityInfo("Helsinki");
}

function updateAvailabilityInfoPorvoo() {
  updateAvailabilityInfo("Porvoo");
}

function updateAvailabilityInfo(citySheet) {
    // Do something with citySheet parameter
}