Dou*_*Fir 6 google-sheets google-apps-script
我在Google云端硬盘中的"我的信息中心"工作表中有一个自动信息中心.
仪表板的数据来自Google Analytics(GA),通过API.我使用Google表格GA增加了大部分数据.
我在仪表板中其中一个表的源数据非常大 - 太大而无法放入工作表本身.
因此,通过一些有限的脚本技能以及本论坛和一些在线教程的帮助,我在Google-Apps-Script中创建了一个脚本,用于查询GA api并返回我需要的所有数据,然后将其放入csv文件中与主仪表板相同的目录.
所以现在,在我的Drive中的"dashboard"文件夹中,我有2个文件:"我的仪表板" - 一个工作表和"我的数据"一个csv文件.我可以,如果我想,而是将api调用的结果输出到工作表我只是假设csv文件会更有效.
我在Gsheet中打开了"我的数据"csv文件并称之为"合并".以下是数据的示例:
ga:year ga:month ga:medium ga:source ga:campaign ga:goal1Completions
2013 5 (none) (direct) (not set) 116
2013 5 (not set) Adperio silvercontact?dp 0
2013 5 (not set) Conde*it _medium=email 0
2013 5 (not set) Hearst (not set) 0
2013 5 (not set) stackersocial stackersocial 0
2013 5 12111 9591 201fHN000xRGGszT3aEAA11uIsaT000. 0
2013 5 12111 9591 201fHN00BrT.K.AY0Hvf3q1uIqgl000. 0
2013 5 12111 9591 201fHN00CK619oBE3OsBZp1uIqGX000. 0
2013 5 12111 9591 201fHN00DFXJxnUu1jx25M1uIzkC000. 0
Run Code Online (Sandbox Code Playgroud)
有大约65,000行数据.
现在,在我的仪表板中,我需要一个表,在"组合"表中对数据进行分组和聚合(或者我可以以某种方式使用csv?).我喜欢的配方通常是例如
=sum(filter(ga:goal1Completions, ga:year="2015"... ))
拉入并查询这些数据证明是困难的,我希望得到一些建议.
我不能简单地将数据导入我的仪表板,因为我得到关于超过最大尺寸200k单元的最大尺寸的警报.所以我必须依靠公式导入数据并每次运行计算.这是我刚刚使用的一个例子:
=SUM(filter(IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit?usp=sharing","combined!F2:F"),
IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit?usp=sharing","combined!A2:A")=year(G$17),
IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit?usp=sharing","combined!B2:B")=month(G$17),
IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit?usp=sharing","combined!C2:C")="(direct)",
IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit?usp=sharing","combined!D2:D")="(none)"))
Run Code Online (Sandbox Code Playgroud)
因此,对于单元格中函数中的每个参数,我必须导入数据列并对其进行子集化.
我相信一定有更好的方法.现在这确实有效,但速度特别慢.
我正在考虑的途径:
我希望我已经充分地传达了我的问题.我需要找到一种更有效的方法来查询仪表板中的外部数据.
无需使用多个 IMPORTRANGE 和 FILTER 一次导入一列,而是使用一个 IMPORTRANGE 来单步提取所需的所有列,并使用QUERY执行所需的操作。
就像在 FILTER 中包含 IMPORTRANGE 一样,您可以将其包含在 QUERY 中
IE 为简单起见,我将仅添加一个过滤条件
`=QUERY(IMPORTRANGE("key","range"),"select sum(Col6) where Col1 ='"&G$17&'")`
Run Code Online (Sandbox Code Playgroud)