Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何使用列标题引用Google Apps脚本电子表格中的单元格_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 如何使用列标题引用Google Apps脚本电子表格中的单元格

Google apps script 如何使用列标题引用Google Apps脚本电子表格中的单元格,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有几个谷歌表格,我可以连接和更新它们之间的单元格。现在我必须使用R1C1或A1类型引用来定义基于特定列获取或设置单元格 如果添加了一个新列,所有这些引用现在都将关闭 每个工作表的第一行都有列标题作为这些单元格中的值 我能否以[columnHeader]5等格式引用该列第五行中的单元格 我曾想过将每个单独的列标题设置为“命名范围”,但我一直无法使用[named range]5引用单元格 我想我可以使用某种方法,将100个变量动态定义为当时的列号(R1C1)格式(在所有的表中),然后尝试在单元格引

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

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

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

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

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

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

提前谢谢


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()方法删除数组的第一项并返回该项”的引用!我将范围限制在最上面一行(我真的只想要标题);但你的方法解决了这个问题。向你致敬!