繁体   English   中英

从谷歌表中获取列值大于 X 的行(来自 python api)?

[英]Get rows from google sheet where column value greater than X (from python api)?

有没有办法使用 python API 从谷歌表中获取列值大于 X 的行?

例如。 我有一个链接到工作表的谷歌表单。 将响应添加到工作表时,我有 appscript 代码,该代码将 unix 毫秒时间戳添加到行。 所以这张表看起来像......

<default form response metadata headers>...<form response headers>...MSTIMESTAMP
<values>...1234567
<values>...1234568
.
.
.

我想从谷歌 python API 客户端访问此表,并仅获取我尚未处理的值(即 mstimestamp 的值大于我存储在客户端的时间戳值)。 例如。 将最近看到的时间戳保存在 API 客户端的文件中,并用它来做一些假设的片段,比如......

latest_ts = get_from_file(latest_timestamp.log)

service = build("sheets", "v4", credentials=creds)
sheet = service.spreadsheets()
result = sheet.values().getBySomeQueryFunction(spreadsheetId=MY_SPREADSHEET_ID
                                               where=f"where MSTIMESTAMP_COLUMN > {latest}").execute()

(顺便说一句,我想使用生成的时间戳而不是保存行号的原因是因为它不能保证以后不会以随机方式删除行(例如,如果表单响应使其由于某种原因,该工作表无效))。

这样的事情可能吗? 任何替代方案(基本上是试图避免将整个工作表带到客户端进行处理)? 看到工作表的getDataByFilter()文档,但过滤器参数似乎与此处无关。

您的工作表是否有一些 header 可以识别另一列? 如果您确实有一些 header,并且有一列称为“时间戳”,则可以使用库 Sheetfu及其表模块。 这就是它的工作方式:

from sheetfu import Table

spreadsheet = SpreadsheetApp('path/to/secret.json').open_by_id('<insert spreadsheet id here>')
data_range = spreadsheet.get_sheet_by_name('whatever').get_data_range()

table = Table(data_range)

items_to_process = []
for item in table:
    if item.get_field_value('timestamp') >= 'your timestamp threshold':
        items_to_process.append(item)

items_to_process列表将包含您想要的所有行,您可以使用以下命令访问任何行值:

my_value = item.get_field_value("my_field")

如果您的 header 在第一页上,则此代码段将起作用。 如果不是,您可以参考 Sheetfu 文档以了解如何操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM