【问题标题】:Is it possible to get rows with last modification date > certain date with Java Google Sheets API是否可以使用 Java Google Sheets API 获取最后修改日期>特定日期的行
【发布时间】:2020-05-07 17:49:05
【问题描述】:

我有一张每天都会更新数据的表格。我正在使用 Java Sheets API v4 在我的 java 应用程序中加载数据,我需要在我的工作表上进行增量加载。有没有办法有效地做到这一点?

这是我的电话,但这每次都会加载所有数据,是否可以添加过滤器以在特定日期后更新行? (考虑到表格没有时间戳列,我可以使用该行的插入/修改日期吗?)

ValueRange response = service.spreadsheets().values()
            .get(spreadsheetId, range)
            .execute();

如果有时间戳列,有没有办法在加载之前过滤数据?

【问题讨论】:

  • 服务器不过滤,必须本地过滤。在 v3->v4 转换中删除了“结构化查询”。可能您应该做的只是查询您的“键”列,检查它以找出要提取的值,然后使用批处理获取要提取的相关行中的值。您还可以利用其他 Drive API 来检查审核日志并确定哪些行或工作表或 w/e 已被修改。但从根本上说,电子表格不是数据库,因此它们不关心上次修改行的时间。
  • @tehhowch 你试过batchGetByDataFilter吗?是否可以将其设置为列值 = x 的位置?或者如何在 java sheet API 中使用查询语言
  • 我没用过;查看resource schema 足以表明您必须已经知道要检索的范围。您不能对 Sheets API v4 端点执行“查询”。一个“查询”包括“where column value = x”

标签: java google-sheets google-api google-sheets-api


【解决方案1】:

恐怕没有内置方法可以通过 API 实际执行此操作。到目前为止,单元格不包含日期修改字段。

您需要自己跟踪修改,然后检索范围内的单元格并检查您的修改日志。

【讨论】:

  • 那么可以按行设置范围吗?如何做到第 10 行直到结束?是否可以在查询前根据列值进行过滤?
  • 我不明白你想要什么。也许问另一个问题,解释你想要的行为是什么。但是,您想要的似乎非常简单且有据可查。
  • 我需要的是能够在执行请求之前过滤数据(过滤要在服务器上完成),我尝试了 batchGetByDataFilter,但无法过滤列 X 值 = y 的位置。你知道这是怎么做到的吗?
  • 能否请您更新您的问题,详细说明这部分,也许添加一个示例。不过这似乎是可行的。
猜你喜欢
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 2017-09-10
相关资源
最近更新 更多