我在表单A中使用新的google表格中的公式可以正常工作;它包含一个查询功能,可根据表B(“设置”)中的值和表C(“数据”)中的数据过滤日期。 工作公式:
=QUERY(Data!A1:G,"select G, sum(E) where F is not null AND toDate(D)>= date '" & text('Settings'!B5, "yyyy-MM-dd")&"' and toDate(D)<= date '" & text('Settings'!B6, "yyyy-MM-dd")&"'group by G pivot B label G'Pivot table for data in range'")
问题是我想使用.setFormula
或.setValue
范围方法使用脚本设置此公式,但是我遇到了公式字符串的问题。
这些方法将采用围绕公式/值的单引号或双引号。因此,如果您使用单引号来包装公式,则可以避免公式中双引号的大多数问题。 此外,您可以构建查询字符串,例如
formula = 'part of formula'+'another part of formula';
range.setFormula(formula);
尝试的解决方案是使用单引号AND将我的公式包装在set命令中 每当遇到一个恰好在工作公式中的意外结束单一报价时,我在此之前插入一个有意结束的单引号,带有+符号,如括号中的(+)。 和我一起到目前为止?我希望我很清楚。 所以尝试的改变看起来像这样。 首先,工作表中的表格:
=QUERY(Data!A1:G,"select G, sum(E) where F is not null AND toDate(D)>= date '" & text('Settings'!B5, "yyyy-MM-dd")&"' and toDate(D)<= date '" & text('Settings'!B6, "yyyy-MM-dd")&"'group by G pivot B label G'Pivot table for data in range'")
现在,尝试在脚本中设置:
range.setFormula('=QUERY(Data!A1:G,"select G, sum(E) where F is not null AND toDate(D)>= date '+'" & text('+'Settings'+'!B5, "yyyy-MM-dd")&"'+' and toDate(D)<= date '+'" & text('+'Settings'+'!B6, "yyyy-MM-dd")&"'+'group by G pivot B label G'+'Pivot table for data in range'+'")');
结果: 编写公式并且工作表显示错误:公式解析错误。我确信必须有一种方法来指示何时我需要单引号作为字符串的一部分,而不是将我的一些单引号视为下一个字符串的标记,如果这有意义的话。 感谢帮助,我会在发现时发布。
答案 0 :(得分:4)
太容易了!而不是&#39; +只是使用\来转义公式中的单引号,所以答案是:range.setFormula(&#39; = QUERY(数据!A1:G,&#34;选择G,sum(E)其中F不为空且toDate(D)&gt; = date \&#39;&#34;&amp; text(\&#39;设置\&#39;!B5,&#34; yyyy-MM-dd& #34;)&amp;&#34; \&#39;和toDate(D)&lt; = date \&#39;&#34;&amp; text(\&#39;设置\&#39;!B6 ,&#34; yyyy-MM-dd&#34;)&amp;&#34; \&#39;按G轴B分组标记G \&#39;数据范围内的数据表&#39;&# 34)\&#39);