【问题标题】:How to use a column header to reference a cell in Google Apps Script Spreadsheet如何使用列标题来引用 Google Apps 脚本电子表格中的单元格
【发布时间】:2015-07-03 21:24:21
【问题描述】:

我有几个 Google 表格,我可以在它们之间连接和更新单元格。现在我必须使用 R1C1 或 A1 类型引用来定义基于特定列的获取或设置单元格。

如果添加了新列,所有这些引用现在都将关闭。

每张工作表的第一行都有列标题作为这些单元格中的值。

我能否以 [columnHeader]5 等格式引用该列第五行中的单元格?

我想将每个单独的列标题设置为“命名范围”,但我无法使用 [命名范围]5 引用单元格。

我想我可以使用某种方法将 100 个变量动态定义为当时的当前列号 (R1C1) 格式(在所有工作表中),然后尝试在我的单元格引用中使用这些伪标题变量。但我可能每天会运行 100 次脚本,这种可怕的低效率伤害了我的工程师。

提前致谢。

查一下

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    我使用了一个小的帮助函数,它将列索引作为我可以在getRange(row,col)中使用的数字返回

    这是非常基本的,如下所示:

    function getColByName(name){
      var headers = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getDataRange().getValues().shift();
      var colindex = headers.indexOf(name);
      return colindex+1;
    }
    

    像这样测试:

    function testgetColByName(){
      Logger.log(getColByName('header string'));  
    }
    

    【讨论】:

    • 感谢 Serge,我对其进行了修改以通过传入适当的“getSheetByName”和特定的列标题来处理从多个工作表中获取列号。
    • 抱歉,CR 太快了。我想补充一点,我接受这个作为答案。虽然它可能不是最好的(没有反对 Serge),但它对我有用。再次感谢 Serge。
    • 啊,谢尔盖;我不明白你为什么选择整个范围并使用 shift()。然后我终于找到了对“shift() 方法删除数组的第一项,并返回该项”的引用。很棒的工作!我正在沿着将范围限制为仅顶行的路径(我真的只想要标题);但你的方法处理了。向你致敬!
    猜你喜欢
    • 2017-01-20
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2018-01-12
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    相关资源
    最近更新 更多