我多次使用此功能来检索Google电子表格的最后一行数据,但这次我得到了一些非常奇怪的行为。
我字面上观看电子表格添加列,因为这段代码正在运行。最终我遇到 256 列限制,我的脚本执行失败。
我已经注释掉了我的所有代码并专门运行了这个功能,但我仍然遇到了同样的问题。
以前有没有人经历过这种情况,或者有其他解决方案?
//Grabs the latest data submission and return it as an array.
function getLastSubmit() {
//Find the Spreadsheet containing the data we need.
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses");
//Get the last row and column width of the sheet.
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
Logger.log("lastRow=" + lastRow);
Logger.log("lastColumn=" + lastColumn);
var range = sheet.getRange(lastRow, 1, 1, lastColumn);
var values = new Array();
for (var i = 0; i < lastColumn; i++) {
Logger.log(range.offset(0, i).getValue());
values.push(range.offset(0, i).getValue());
}
Logger.log("values=" + values);
//Return the values of the lastRow from 0 to the lastColumn.
return values;
}
此外,Execution Transcript说明以下内容(我显然没有尝试检索超出范围的数据。):
[14-02-07 21:13:47:648 MST] Logger.log([, []]) [0 seconds]
[14-02-07 21:13:47:648 MST] Range.offset([0, 116]) [0 seconds]
[14-02-07 21:13:47:702 MST] Range.getValue() [0.053 seconds]
[14-02-07 21:13:47:702 MST] Range.offset([0, 117]) [0 seconds]
[14-02-07 21:13:47:765 MST] Range.getValue() [0.062 seconds]
[14-02-07 21:13:47:773 MST] Execution failed: You can't add any more columns to this sheet. There is a limit of columns per sheet. To continue working, create a new sheet or a new workbook. For more information on size and complexity limits in Google spreadsheets, visit the <a target=_blank href=>Google Docs Help Center.</a> (line 19, file "Functions") [16.023 seconds total runtime]
我的记录器:
[14-02-07 21:13:31:908 MST] lastRow=3
[14-02-07 21:13:31:908 MST] lastColumn=140
答案 0 :(得分:1)
如果您阅读documentation :
,则使用offset
方法
offset(rowOffset,columnOffset) 返回一个新范围,该范围偏离此范围的给定行数和列数(可以为负数)。新范围将与原始范围相同。
所以您所遇到的是合乎逻辑的,因为您移动您的选择的索引值为i
在这两行中:
Logger.log(range.offset(0, i).getValue());
values.push(range.offset(0, i).getValue());
我猜您之前没有注意到它可能是因为您的工作表更短,因此它从未超过256列限制。