javascript - GAS:getLastRow() 是否仅对工作表有效,对数组无效?
问题描述
我想保存服务器调用并尝试在其他操作之前将工作表加载到内存中:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Condo1");
var allSheetData = sheet.getDataRange().getValues(); // load all sheet data into memory
var lastRow = allSheetData.getLastRow();
但网络控制台指出:
Error TypeError: allSheetData.getLastRow is not a function
at [unknown function](Code:9:28)
getLastRow()是否仅适用于工作表,不适用于其他数据数组?
我无法在文档中得到明确的答案。
在获得 getLastRow() 的帮助后 - 感谢马里奥斯!- 我仍然对最小化服务器调用的基本目标感到困惑。我制作了一个类似的脚本,由于调用每一行,特别是在较长的表中,我对较长的执行时间感到恼火。现在我想让它变得更好并在本地操作表格。如果我能得到一个好的搜索词,我相信对于谷歌应用程序脚本的 SO 有很多类似的问题。“异步批量请求”并没有给我很好的 SO。然后我就可以开始自学了。谢谢你!
解决方案
问题:
正如您在官方文档 getLastRow
中看到的那样,是一个应用于工作表对象的函数。
您正在尝试应用于getLastRow()
2DJavaScript
数组:[[x1,y1],[x2,y2]]
这就是您收到getLastRow
无法应用于JavaScript
数组的消息的原因。
解决方案:
你有两个选择:
使用内置
JavaScript
数组方法length onallSheetData
来获取此数据数组占用的“行数”:var lastRow = allSheetData.length;
应用于对象
getLastRow
:sheet
var lastRow = sheet.getLastRow();
请注意:
确保了解getLastRow()返回的内容是工作表中包含内容的最后一行。
在您的情况下,您正在使用getDataRange来getLastRow
计算范围。但是如果你想手动定义一个范围对象,那么length
和getLastRow
可能会给出不同的结果!
推荐阅读
- php - 使用“显示完整帖子”(wordpress)时如何从主页隐藏视频
- c# - SelectPDF 不显示网格数据
- javascript - 具有单个文件组件的 WordPress Vue 插件 - 无法使用导入
- angular - 如何仅重新加载模块
- c# - 一旦用户键入“停止”,我就需要中止 NUnit 测试执行。我如何实现这一目标?
- c# - 如何将节点按钮添加到空节点元素
- intellij-idea - PhpStorm HTTP 客户端
- excel - 在 Open XML for Excel 文件中更改小数点和千位分隔符
- asp.net-core - 如何在 asp.net core razor 页面中更新图像
- amazon-web-services - 创建具有对尚未创建的资源的依赖关系的 terraform 资源的问题