Google Apps脚本 - autoResizeColumn错误[超出范围]

时间:2016-03-09 16:13:50

标签: google-apps-script

我有一个将工作表复制到另一个工作表并对其进行格式化的功能。我只是想让列调整大小,但我收到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

上停止

我在这里缺少什么?

1 个答案:

答案 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);
  }

}

希望这有助于某人。