google-apps-script - 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");
}
解决方案
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.
推荐阅读
- html - 使用 CSS 应用 VCR OSD MONO
- azure-devops - 添加远程相关 Azure Devops 项目工作项链接
- reactjs - 忽略父母或孩子的事件处理程序
- python - 如何使用python找到具有成对值的两个列表之间的差异
- javascript - 导出 lambda 函数模式
- python - 如何计算多句摘要的 ROUGE?
- tkinter - 想要移除按钮的边框
- python - 在 Selenium (Python) 的帮助下,如何使用 Instagram 上的链接点赞图片?
- javascript - 为什么我的成帧器运动动画没有在卸载时触发?
- r - 计算数据框中多列的中位数