我正在制作一个Google脚本来扩展Google电子表格。我正在尝试创建一个函数,通过在函数中传递其标题来确定给定列的索引。
function columnIndexForHeader(header) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues()
var headers = data[0]
var index = data.indexOf(header) + 1
Logger.log("Looking for header "+header)
Logger.log("List of headers: "+headers)
Logger.log("Header 12: "+headers[12])
Logger.log("Index of History:"+headers.indexOf("History"))
Logger.log("Requested index for header "+header+" is "+ index)
return index
}
在上面的例子中,我正在寻找一个名为History的列标题,目前是电子表格中的第13列(因此数组中的索引为12)。
当我调用我使用的功能时,例如:
currentSheet.getRange(i+1, columnIndexForHeader("History")).setValue("New")
现在使用字符串搜索头索引(与logger示例一样)工作正常,但由于某种原因,在使用变量搜索时无法找到头(返回-1到indexOf()。该日志将显示以下内容:
[14-06-28 22:30:37:665 ICT] Looking for header History
[14-06-28 22:30:37:702 ICT] List of headers: ID,First-Last,Nick,Course,Section,Grade,Correspondence,Remarks,Attendence,Status,Program,Major,History,Nationality,LEP ID,Email (Stamford),Email (Private),Phone,
[14-06-28 22:30:37:703 ICT] Header 12:History
[14-06-28 22:30:37:703 ICT] Index of History:12
[14-06-28 22:30:37:703 ICT] Requested index for header History is 0
为什么它无法从变量中找到标题,而在传递字符串时似乎是成功的?
答案 0 :(得分:1)
你忘了一个数组索引,
var headers = data[0];
var index = data[0].indexOf(header) + 1; // not data, data[0]!
或者,
var index = headers.indexOf(header) + 1; // using the variable from the previous line.