2014-01-19 24 views
0

我已經寫過這個函數,但是我得到一個錯誤「執行失敗:這些列超出範圍。」 (在我的翻譯)。產生錯誤的行是var CellName = sheet.getRange(1, i+1);。而我得到了這樣的結果:如何解決此問題「執行失敗:這些列超出範圍。」錯誤?

enter image description here

這些日誌:

enter image description here

而這個成績單:

enter image description here

的代碼是波紋管。我懷疑爲什麼for循環停在header7而不是所有的頭文件?

var font_size = 12; 
    var headers = "HEADER1 HEADER2 HEADER3 HEADER4 HEADER5 HEADER6 HEADER7 HEADER8 HEADER9"; 
    var arrayHeaders = headers.split(/[\s\t]+/); 
    Logger.log("arrayHeaders = " + arrayHeaders); 
    for (var i = 0; i < arrayHeaders.length; i++){ 
     Logger.log("arrayHeaders.length = " + arrayHeaders.length); 
     var CellName = sheet.getRange(1, i+1); 
     CellName.setValue(arrayHeaders[i]).setBackgroundRGB(34, 139, 34).setFontSize(font_size).setFontWeight("bold").setFontFamily("Arial"); 
     // There is no column 0, so i+1 to start 
     sheet.setColumnWidth(i+1, 100); 
    } 

回答

1

在下面的功能沒有錯誤和預期的列標題完成了劇本是在電子表格中的每個單元使用代碼:

function myFunction() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
    var font_size = 12; 
    var headers = "HEADER1 HEADER2 HEADER3 HEADER4 HEADER5 HEADER6 HEADER7 HEADER8 HEADER9"; 
    var arrayHeaders = headers.split(/[\s\t]+/); 

    Logger.log("arrayHeaders = " + arrayHeaders); 

    for (var i = 0; i < arrayHeaders.length; i++){ 
    Logger.log("arrayHeaders.length = " + arrayHeaders.length); 
    var CellName = sheet.getRange(1, i+1); 
    CellName.setValue(arrayHeaders[i]).setBackgroundRGB(34, 139, 34).setFontSize(font_size).setFontWeight("bold").setFontFamily("Arial"); 
    // There is no column 0, so i+1 to start 
    sheet.setColumnWidth(i+1, 100); 
    } 
} 

我最初以爲,因爲在截圖中有隻有7列getRange失敗,因爲它試圖獲取的列索引不存在。在測試過程中,儘管我發現getRange在需要的地方創建了新列。

我只能認爲你的工作表中可能有受保護的範圍或凍結的列?在新電子表格中試用上面的功能,看看會發生什麼。

0

實際上,新的Google Spreadsheet編輯器不會在需要的地方插入新的列。所以,我必須插入這個如果塊:

if ((i+1) > sheet.getLastColumn()) { 
     sheet.insertColumnAfter(i); 
    } 
+0

很高興你解決它。你有什麼機會能夠幫助你走上正軌? 「getRange失敗了,因爲它試圖獲取的列索引尚不存在。」 –

相關問題