谷歌表:从单元格传递值/数据作为谷歌脚本函数中的参数

时间:2021-06-10 17:56:35

标签: google-sheets

我使用工具/脚本编辑器添加脚本。我添加了我的简单弹出功能:

function test(){
  Browser.msgBox('This is test')
}

然后在谷歌表中,我添加一个图像作为按钮并附加脚本“测试”。

它工作正常,但我想从单元格传递值。我该怎么做?

例如,我修改函数如下:

function test(val){
  Browser.msgBox('This is test. Value is '+val)
}

如果我想从单元格 B4 传递值 --> test(B4)。如何正确地做到这一点?将脚本分配给图像/按钮时,不允许包含参数 B4。它会说“找不到脚本”。

谢谢

2 个答案:

答案 0 :(得分:1)

正确,如果调用自定义函数作为工作表中的公式,则可以指定参数,但不能在按下按钮时作为附加到脚本的方式指定参数。我们在分配脚本时甚至不包括括号。

如果客户函数总是想使用 B4 的值,您可以修改脚本以从该单元格中获取值。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var val = sheet.getRange("B4");

答案 1 :(得分:1)

JohnA 的解决方案是正确的,但我想添加一些内容。我建议使用此增强功能,以避免在您希望将另一个单元格作为参数传递时不时修改您的脚本。

方法:

  • 存储您要在特定单元格上传递的单元格符号。 (例如 A1 中的“B4”)
  • 获取 A1 的值并访问该单元格符号的值。

代码:

function test() {
  sheet = SpreadsheetApp.getActiveSheet();
  // cell holds the range you want printed
  cell = sheet.getRange("A1").getValue();
  // value now holds the value of the range we got from the cell
  value = sheet.getRange(cell).getValue();
  Browser.msgBox(value);
}

工作表:

sheet

B4:

b4

B5:

b5

注意:

  • 每次更改 A1 的值时,它都会打印该单元格的值。
  • 当您在 A1 中写入无效范围时,它将无法正常运行。 (Exception: Range not found)
相关问题