google-apps-script - 使用谷歌应用程序脚本从电子表格数据中检索行

标签 google-apps-script spreadsheet google-sheets-api

我正在使用 Google 应用脚本将表单数据写入电子表格。现在我想从 Excel 中获取与条件匹配的值(例如,按日期、用户名过滤)并使用应用程序脚本显示它们。

我的电子表格有

+-------------+-----------+----------------------+
| Date        | Username  | Comment              |
+-------------+-----------+----------------------+
| 2012-05-02  | palani    | My first comment     |
| 2012-05-02  | raja      | My second comment    |
| 2012-05-03  | palani    | My third comment     |
| 2012-05-03  | raja      | My fourth comment    |
+-------------+-----------+----------------------+

现在我想过滤日期上的 2012-05-02 数据和用户名上的 raja 数据,并使用应用程序脚本中的标签显示它们(该脚本作为网络服务)。

我所有的搜索都使用SpreadsheetApp.getActiveSheet().getDataRange();返回解决方案我认为这不是在工作表中显示 1000 多行中的一条记录的优化方式。

编辑

现在,我仅使用 .getValues()。这里显示的数据是示例;我的真实工作表目前有 15 列和 5000 多行。最终它会增长到数百万,因为这是一个时间表应用程序。我想知道是否有其他方法来 getValues() 过滤行?

在 tmp 单元格上应用 =Filter 公式也将是一个问题,因为脚本可以由多人同时使用。

最佳答案

最简单的方法,也是我所知道的,是:
使用获取数组中的值

var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

然后进行循环

for (i in data) {

在此循环中检查日期 (data[i][0]) 是否等于您要查找的日期,以及名称 (data[i] [1]) 也与您要查找的相同。并将其推送到数组

var labels=new Array;
label.push( [data[i][0], data[i][1], data[i][2]] );

然后将所有数据放入该数组中,您可以使用 for 循环使用标签填充 panen Ui

for (i in labels) { ...

关于google-apps-script - 使用谷歌应用程序脚本从电子表格数据中检索行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10518084/

相关文章:

java - Google Spreadsheet Java API 不返回电子表格

ruby - 电子表格 gem : can't create empty workbook

c++ - 从 C++ 生成和打印电子表格

android - 通过 API v4 更新 Google 表格时转义单引号 (')

javascript - 如何在谷歌应用程序脚本中使用javascript从谷歌电子表格数据库获取日期值

javascript - 这是多余的吗?

javascript - 通过更新谷歌表格中的行在谷歌驱动器中创建文件夹

ruby - 使用 Ruby 搜索 Google 电子表格

javascript - 使用回车将数组写入单个单元格

google-apps-script - 通过Apps脚本强制刷新公式