pal*_*aja 24 spreadsheet google-apps-script google-spreadsheet-api
我正在使用Google应用脚本将表单数据写入电子表格.现在我想从Excel中获取符合条件的值(例如,按日期,用户名过滤)并使用app脚本显示它们.
我的电子表格有
+-------------+-----------+----------------------+
| 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 |
+-------------+-----------+----------------------+
Run Code Online (Sandbox Code Playgroud)
现在我想过滤2012-05-02
日期和raja
用户名的数据,并使用app-script(作为Web服务运行)中的标签显示它们.
我的所有搜索都返回了解决方案SpreadsheetApp.getActiveSheet().getDataRange();
,我认为这不是优化方式,可以在工作表中显示1000多行中的一条记录.
编辑
现在,我.getValues()
只使用.这里显示的数据仅供参考; 我的实际工作表现在有15列和5000多行.最终它将增长到数百万,因为这是一个时间表应用程序.我想知道有没有其他方法来getValues()
过滤行?
=Filter
在tmp单元格上应用公式也是一个问题,因为脚本可以由多个人同时使用.
小智 30
最简单的方法,也就是我所知道的方法是:
使用数组获取数组中的值
var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
Run Code Online (Sandbox Code Playgroud)
然后做一个循环
for (i in data) {
Run Code Online (Sandbox Code Playgroud)
在这个循环中检查date(data[i][0]
)是否等于你要查找的那个,以及name(data[i][1]
)是否等于你正在寻找的那个.并将其推送到阵列
var labels=new Array;
label.push( [data[i][0], data[i][1], data[i][2]] );
Run Code Online (Sandbox Code Playgroud)
然后将所有数据放在此数组中,您可以使用for循环填充带有标签的窗格Ui
for (i in labels) { ...
Run Code Online (Sandbox Code Playgroud)
小智 9
好吧,您可以考虑使用单元格并在其上使用"查询"公式.让我们假设Date在A列,Username = B列,Comment是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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
53865 次 |
最近记录: |