我有一个将工作表复制到另一个工作表并对其进行格式化的功能。我只是想让列调整大小,但我收到Those columns are out of bounds
错误。
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 :(得分: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);
}
}
希望这有助于某人。