2014-06-28 12 views
0

我正在使用Google腳本來擴展Google Spreadsheet。我試圖做一個函數,通過在函數中傳遞它的頭來確定給定列的索引。Array.indexOf()在將字符串作爲變量傳遞時未找到值?

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 
} 

在上面的例子中,我尋找一個列標題叫歷史(在陣列中,因此索引12)在電子表格中當前的第13列。

當我打電話的功能我用如:

currentSheet.getRange(i+1, columnIndexForHeader("History")).setValue("New") 

現在有了一個字符串搜索在頭指數(與記錄儀爲例)工作正常,但由於某些原因,它是不能夠。與變量(返回-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 

爲什麼沒能找到一個變量的頭部,而這似乎是成功的何時傳球?

+2

你做'data.indexOf'而不是'headers.indexOf'。 – plalx

+0

Doh! (我現在已經看了2小時,並沒有看到它):O感謝您藉助鷹的視力。 – Benjamin

回答

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. 
相關問題