google-apps-script - 在谷歌表格上查询和比较日期

标签 google-apps-script google-sheets google-sheets-query

我正在努力将 sheet1 的副本复制到另一个 sheet2(同一文档)上,并且 query() 工作正常,直到我要过滤的列是公式单元格(每个带有查询、匹配等的 LONG 单元格)。

我想要做的是过滤 sheet1 中 M 列中的事件日期即将到来的行(有更多过滤条件,但只是为了简化这是主要问题)。

我不想要日期为空的行,过去(各种日期格式),或者公式给出空字符串“”的结果。

我试过的公式(会出错) - 请注意,我只是选择了 2 列进行测试:

=query(sheet1!A3:N, "选择 I,M where I = 'Singapore' AND DATEVALUE(M)>TODAY() ",0)

=query(sheet1!A3:N, "选择 I,M where I = 'Singapore' AND M>TODAY() ",0)

这个公式没有给出错误但没有显示正确的数据 - 显示除 2017 年 1 月 - 2017 年 8 月 7 日以外的所有数据:

=过滤器(表1!A3:N,表1!I3:I =“新加坡”,表1!M3:M>今天())

此公式给出空输出:

=query(sheet1!A3:N, "选择 I,M where I = 'Singapore' AND M='22 August' ",0)

我是谷歌表格和应用程序脚本的新手,所以感谢任何人的建议
谢谢!!

最佳答案

Query 中没有 today() 。

=query(sheet1!A3:N, " select I,M where I = 'Singapore' AND M > now() ",0)

这在理论上应该有效,前提是您在 M 中拥有任何格式的所有正确日期,无论实际字符串如何,Google 表格都能识别(即,公式栏显示正确的日期或时间)。如果没有,您应该手动将所有剩余日期转换为正确的格式。查询公式中正确的日期格式为date 'yyyy-mm-dd' .日期在工作表中的格式无关紧要(只要 Google 工作表识别出这一点),但实际的公式必须仅包含此格式的日期以进行比较。例如,要查找所有小于 2017 年 8 月 31 日的日期,
=query(A2:B6, "select A where A < date '2017-08-31'")

您可以使用它来找出 Google 无法识别的所有日期:
N:N= M:M*1
如果在辅助列 N 中出现错误,则无法识别这些日期。即使您没有收到错误消息,Google 工作表也可能会错误识别日期。

编辑 Google 表格中日期的语法

关于google-apps-script - 在谷歌表格上查询和比较日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45782256/

相关文章:

google-sheets - 如何修复 ARRAY_LITERAL 中的错误,数组文字缺少一行或多行的值

google-sheets - 使用查询从特定列中选择特定行和行范围

google-apps-script - 使用脚本复制公式

google-apps-script - 强制刷新 ImportXML

python - 如何使用 gspread 在 google 工作表单元格中插入任何超链接

google-sheets - 谷歌表格公式=$G1=

google-apps-script - 对于因触发器是由现已禁用的 Google Workplace 用户创建而被禁用的问题,有什么好的解决方法吗?

javascript - 谷歌应用程序脚本 AppendRow 到顶部

google-sheets - 组合数据后如何获得连接文本的查询?

google-sheets - 如何在查询结果中添加额外的文本?