是否可以通过列名(标题)动态检索列?
代替:
var values = sheet.getRange("A:A").getValues();
类似的东西(为简单起见)
var values = sheet.getRange(sheet.column.getHeader("name").getValues();
请记住,Google Apps脚本大致为ES3。
答案 0 :(得分:0)
虽然没有直接的方法,但是有很多方法可以通过一些简单的设置来获得所需的内容:
var values = sheet.getDataRange().getValues();
var headers = values.splice(0,1);
headerIdx = headers[0].indexOf("name");
values = values.map(function(row){return [row[headerIdx]];})
如果您已命名与该列关联的范围,
spreadsheet.getRangeByName('Sheet Name!name').getValues();//where 'name' is a named range
如果您有与该列关联的开发人员元数据,
SpreadsheetApp.getActive()
.createDeveloperMetadataFinder()
.withKey(/*METADATA_KEY_ASSOCIATED_WITH_COLUMN*/)
.find()[0]
.getLocation()
.getColumn()
.getValues();
答案 1 :(得分:0)
您可以写一个;)
function getColValuesByName(sheet, name) {
var index = sheet.getRange(1,1,1,sheet.getLastColumn()).getValues()[0].indexOf(name);
index++;
return sheet.getRange(1,index,sheet.getLastRow(),1).getValues();
}
答案 2 :(得分:0)
这是一个非常简单的单行函数,您可以复制。例如,它返回用于 getRange
的列号(A = 1、B = 2 等)。
function getColByHeader(name) {
return SpreadsheetApp.getActiveSheet().getRange('1:1').getValues()[0].indexOf(name) + 1;
}