2016-03-09 63 views
-1

我有一個功能,可以將一張紙複印到另一張紙上並對其進行格式化。我只是試圖讓列調整大小,但我得到Those columns are out of bounds錯誤。Google Apps腳本 - autoResizeColumn錯誤[越界]

function print_weekly_schedule(){ 

    // ************************ 
    // Sheet Variables Setup 
    // ************************ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var print = ss.getSheetByName("Print") 
    var schedule = ss.getSheetByName("Schedule") 

    // Create Weekly, Printable Schedule 
    print.clear({formatOnly:true}); 
    print.deleteColumns(2, print.getMaxColumns()-1); 
    print.deleteRows(2, print.getMaxRows()-1); 

    print.insertRows(1, 1); 

    schedule.getRange(8, 1, schedule.getMaxRows(), schedule.getMaxColumns()).copyTo(print.getRange(2, 1)); 

    for (var i=1; i < print.getLastColumn(); i++){ 
    print.autoResizeColumn(i); 
    } 

} 

一個非常類似的腳本工作在另一個功能,但我難住爲什麼這是行不通的。我試着Logger.log(print.getLastColumn)我找回所需的數字,23

當我調試這個腳本,它將停止在i=2

缺少什麼我在這裏?

+0

從哪一行觸發?你確定它來自'autoResizeColumn'嗎?我傾向於相信它來自'copyTo'行 – Adelin

+0

我不想回答我自己的問題,因爲它沒有貢獻。 @Adelin是對的,這個問題是由'copyTo'造成的。我必須先創建行,然後複製,然後'autoResizeColumn'。之後一切都奏效了。 – Bardworx

回答

0

由於這是低票,我想解釋。

schedule.getRange (8, 1, schedule.getMaxRows(), schedule.getMaxColumns()).copyTo(print.getRange(2, 1));

效果很好,它會適當地進行復制,但您將無法使用print.autoResizeColumn。調整列大小的唯一方法是如果先插入空列,然後複製數據並調整大小。

全面實施:

function print_weekly_schedule(){ 

    // ************************ 
    // Sheet Variables Setup 
    // ************************ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var print = ss.getSheetByName("Print"); 
    var schedule = ss.getSheetByName("Schedule"); 

    // Clear out content that is present 
    print.clear({formatOnly:true}); 
    print.deleteColumns(2, print.getMaxColumns()-1); 
    print.deleteRows(2, print.getMaxRows()-1); 

    // Insert new row and columns 
    print.insertRows(1, 1); 
    print.insertColumns(1, 22); 

    // Copy over content from previous tab 
    schedule.getRange(8, 1, schedule.getMaxRows(), schedule.getMaxColumns()).copyTo(print.getRange(1, 1), {contentOnly:true}); 

    // Resize Columns 
    for (var i=1; i < print.getLastColumn(); i++){ 
    print.autoResizeColumn(i); 
    } 

} 

希望這可以幫助別人。