如果从单元格调用,则google-spreadsheet中的单元格着色会失败,但从脚本调用时可以正常工作。

时间:2014-06-26 07:42:17

标签: google-apps-script google-sheets

我创建了以下简单函数:

function test(r,c) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.getRange(r,c).setBackground("red");
  return 1;
}

在电子表格中,我写了" = test(row(),column())

这导致ERROR,并显示以下消息: 错误:您无权调用setBackground(第3行)。

如果我在脚本中创建另一个函数调用,则没有问题,如下所示:

function test_the_test(){
  test(5,4); 
}

为什么我不能从电子表格单元调用测试函数?

提前谢谢

2 个答案:

答案 0 :(得分:5)

正如documentation中明确解释的那样,自定义函数返回值,但它们无法在它们所在的单元格之外设置值。在大多数情况下,单元格A1中的自定义函数无法修改单元格A5 。对于其他方法,例如setBackground等,当然也是如此。

答案 1 :(得分:1)

无法调用任何设置内容来自单元格的内容,但可以通过按钮调用内容。

其实很容易。肯定的是,你无法改变其他细胞内容。

诀窍是不要从单元格调用函数,而是将其挂载到绘图/图像中。

  1. 点击插入 - >绘图
  2. 绘制图像并保存(你应该看到 您在电子表格中的图片)
  3. 点击鼠标右键 - 在右上角,有一点点 三角开放选项
  4. 点击分配脚本并输入您的姓名 没有括号的脚本(如" test" not" test()")并确认
  5. 单击按钮。将出现一个弹出窗口,要求提供访问电子表格的权限。
  6. 确认,如果发生刷新问题,只需手动刷新(F5)
  7. 现在您可以单击按钮,然后您可以编辑任何您喜欢的单元格
  8. 此代码在安装到按钮时工作正常。

    function test() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      sheet.getRange(3,5).setBackground("red");
    }