Google Apps 脚本 - autoResizeColumn 错误 [越界]



我有一个函数,可以将一张纸复制到另一张纸上并格式化它。我只是想让列调整大小,但我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);
  }
}

希望这对某人有所帮助。

最新更新