首页 > 解决方案 > Google表格错误消息:异常:范围的坐标超出了表格的尺寸

问题描述

Google Apps 脚本向我抛出一个错误,该脚本已经运行了几个星期。

它在代码的第 6 行抛出错误:

例外:范围的坐标在工作表的尺寸之外。(第 6 行,文件“TL”)

这是一个范围内最后一行的代码行。

关于为什么会发生这种情况以及如何补救的任何意见?

function submitTLData() {
  var ss        = SpreadsheetApp.getActiveSpreadsheet();
  var formSS    = ss.getSheetByName("Truckload Invoice FORM"); //Data entry Sheet
  var datasheet = ss.getSheetByName("Truckload Invoice DATA"); //Data Sheet 

datasheet.getRange(datasheet.getRange("N5").getDataRegion().getLastRow()+1,18,1,1).insertCheckboxes();

  //Input Values
  var values = [[formSS.getRange("L6").getValue(),  //Timestamp
                 formSS.getRange("L7").getValue(),  // Type
                 formSS.getRange("G5").getValue()]];  //Location

  datasheet.getRange(datasheet.getRange("N5").getDataRegion().getLastRow(), 14, 1, 3).setValues(values);

//Input Values
  var values = [[formSS.getRange("L5").getValue(),  //Checkbox Value
                 formSS.getRange("G6").getValue(),  //TL Description
                 formSS.getRange("G7").getValue(),  //TL Qty 
                 formSS.getRange("G8").getValue(),  // TL Value  
                 formSS.getRange("L10").getValue(),  // TL Fee Amt             
                 formSS.getRange("L12").getValue(), //OTHER Description
                 formSS.getRange("L13").getValue(),  //OTHER Qty            
                 formSS.getRange("L14").getValue(), //OTHER Value                
                 formSS.getRange("L16").getValue(),  //OTHER Fee Amt           
                 formSS.getRange("L17").getValue(), // Freight               
                 formSS.getRange("L18").getValue(),  //Shipping          
                 formSS.getRange("L19").getValue(), // Deposit              
                 formSS.getRange("L23").getValue(), //Cr to Loan Amt  
                 formSS.getRange("L26").getValue()]]; //OTHER Cr Amt

  datasheet.getRange(datasheet.getRange("N5").getDataRegion().getLastRow(), 18, 1, 14).setValues(values); 

  //Input Values
  var values = [[formSS.getRange("L25").getValue(), //OTHER Cr Description
                 formSS.getRange("L20").getValue()]]; //TL Notes 

  datasheet.getRange(datasheet.getRange("N5").getDataRegion().getLastRow(), 33, 1, 2).setValues(values);  

var rangesToClear = ['G5:G27',"M7","M13"];
  for (var i=0; i<rangesToClear.length; i++) { 
    formSS.getRange(rangesToClear[i]).clearContent();
    }

  var noValues = ['G11', "G21:G23","G25"];
  for (var i=0; i<noValues.length; i++) {
    formSS.getRange(noValues[i]).setValue("No");  //Reset Form Cells to No
    }

  var yesValues = ['G9',"G15"];
  for (var i=0; i<yesValues.length; i++) {
    formSS.getRange(yesValues[i]).setValue("Yes");  //Reset Form Cells to No
    }

  datasheet.getRange('N5').activate();
  datasheet.getFilter().sort(14, false);

    var getInvNum = datasheet.getRange("Q6").getValue();
    datasheet.getRange("G6").setValue(getInvNum);  

  Browser.msgBox("New Truckload Invoice \\nHas Been Successfully Added");  

}

标签: google-apps-scriptgoogle-sheets

解决方案


If you data goes all the way down to the end of rows then try something like this:

var mr=datasheet.getMaxRows();
var nr=datasheet.getLastRow()+1;
if(n>mr) {
  datasheet.insertRowsAfter(mr,1)
}
datasheet.getRange(datasheet.getRange("N5").getDataRegion().getLastRow()+1,18,1,1).insertCheckboxes();

This should help you to avoid these errors.


推荐阅读