我有一个函数,可以将一张纸复制到另一张纸上并格式化它。我只是想让列调整大小,但我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
我在这里错过了什么?
由于这是被否决的,我想解释一下。
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);
}
}
希望这对某人有所帮助。