我正在使用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
的数据,并使用app-script (作为web服务运行)中的标签来显示它们。
我所有的搜索都返回使用SpreadsheetApp.getActiveSheet().getDataRange();
的解决方案,我认为这不是在工作表中显示1000+行中的一条记录的优化方式。
编辑
现在,我只使用.getValues()
。这里显示的数据是示例数据;我的实际工作表目前有15列和5000+行。最终它将增长到数百万,因为这是一个时间表应用程序。我想知道有没有其他的方法来getValues()
过滤的行?
在临时单元格上应用=Filter
公式也将是一个问题,因为脚本可能会被许多人同时使用。
发布于 2012-05-10 17:18:43
最简单的方法,也是我所知道的,是:
使用以下命令获取数组中的值
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) { ...
发布于 2013-03-07 07:53:39
那么,您可以考虑使用一个单元格,并在其上使用“查询”公式。假设日期在A列,用户名= B列,注释是C列,而空白单元格是D1,您的脚本将如下所示:
SpreadsheetApp.getActiveSheet().getRange("D1").setFormula('Query(A:C,"SELECT A,B,C WHERE B="' + "SomeOne'" + ',1)'; //filter the data and populate to D1 onwards
SpreadsheetApp.getActiveSheet().getRange("D:F").getValues();//this is the filtered data
https://stackoverflow.com/questions/10518084
复制相似问题