Google apps script 如何使用列标题引用Google Apps脚本电子表格中的单元格
我有几个谷歌表格,我可以连接和更新它们之间的单元格。现在我必须使用R1C1或A1类型引用来定义基于特定列获取或设置单元格 如果添加了一个新列,所有这些引用现在都将关闭 每个工作表的第一行都有列标题作为这些单元格中的值 我能否以[columnHeader]5等格式引用该列第五行中的单元格 我曾想过将每个单独的列标题设置为“命名范围”,但我一直无法使用[named range]5引用单元格 我想我可以使用某种方法,将100个变量动态定义为当时的列号(R1C1)格式(在所有的表中),然后尝试在单元格引用中使用这些伪头变量。但我可能会每天运行100次脚本,这种可怕的低效率伤害了我内心的工程师 提前谢谢Google apps script 如何使用列标题引用Google Apps脚本电子表格中的单元格,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有几个谷歌表格,我可以连接和更新它们之间的单元格。现在我必须使用R1C1或A1类型引用来定义基于特定列获取或设置单元格 如果添加了一个新列,所有这些引用现在都将关闭 每个工作表的第一行都有列标题作为这些单元格中的值 我能否以[columnHeader]5等格式引用该列第五行中的单元格 我曾想过将每个单独的列标题设置为“命名范围”,但我一直无法使用[named range]5引用单元格 我想我可以使用某种方法,将100个变量动态定义为当时的列号(R1C1)格式(在所有的表中),然后尝试在单元格引
chuck我使用一个小的helper函数,它将列索引作为一个数字返回,我可以在
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'));
}
这样测试:
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没有什么不利),但它对我很有效。再次感谢谢尔盖。啊,谢尔盖;我不明白您为什么选择整个范围并使用shift()。然后我终于找到了对“shift()方法删除数组的第一项并返回该项”的引用!我将范围限制在最上面一行(我真的只想要标题);但你的方法解决了这个问题。向你致敬!