移动列时更新脚本单元格引用

时间:2015-04-07 16:41:31

标签: google-apps-script google-spreadsheet-api

我们正在将大量业务逻辑迁移到幕后的脚本中,但我担心当列移动时它们会更加脆弱。

On Sheet Updates Automagically

例如,如果我在电子表格上有这样的公式:

=If(A1=5,"Yes","No")

然后我在A左边插入1列,公式将自动更新如下:

=If(B1=5,"Yes","No")

应用脚本无法更新

例如,如果我在脚本部分中有公式:

function myFunction() {
   var value = SpreadsheetApp.getActiveSheet().getRange("A1").getValue();
   var output = (value == 5) ? 'Yes' : 'No';
   Logger.log(output);
}

工作表更改时不会更新。

:如何在代码中获得可能会移动的列的稳定引用?

1 个答案:

答案 0 :(得分:3)

在代码中对字符串或数字进行硬编码时,这是一个普遍问题。

通常,javascript解析器无法分辨在工作表函数调用中可能使用的字符串。它有时不容易解决。

有两种方法:

  1. 如果事先知道列/单元格/范围,请使用命名范围: Define a named range并使用NamedRange in code。使用范围直接写入或查询其行/列位置。
  2. 与您类似的基于列的范围的另一个是您的代码通过使用列标题作为列名来手动命名。代码使用这些名称并读取标题以构建映射。
相关问题