使用 Smartsheet API 2.0 如何仅获取特定 sheet 的 'modifiedAt' 属性

Using Smartsheet API 2.0 how to get ONLY the 'modifiedAt' property of a specific sheet

我需要使用 Smartsheet API 2.0(最好是 Python SDK)获取 sheet 的最后修改时间戳 属性。 参考:

使用 Sheets.list_sheets 我可以获得 'modifiedAt' 属性(连同其他属性)我有权访问的所有 sheet。

使用 Sheets.get_sheet(sheet_id) 我获取指定 sheet.

的所有数据(行、列)

我如何只获得已知 sheet 的特定 sheet 的 'modifiedAt'(如果还存在其他一些小属性也没关系) =] ID。我不希望 API 响应中出现行、列、单元格信息。

Get Sheet 调用将始终 return 来自特定 sheet 的内容(行、列、数据)。虽然有一个 'exclude' 查询参数可以过滤掉一些属性,但它不适用于从 /sheets/{sheetId} 端点 return 编辑的主要 sheet 数据。

如果您只需要 modifiedAt 属性,那么 Sheets.list_sheets 调用似乎更简单。我会使用那个,然后遍历结果,直到找到匹配的 id。

我写信给 Smartsheet 支持团队,他们的回答符合我的目的。

Thanks for contacting Smartsheet Support. In order to narrow down the response that you're getting, you can use the exclude parameter: http://smartsheet-platform.github.io/api-docs/#query-strings. In my testing, I excluded all rows and columns where columnIds=0 and rowIds=0. That left me with only the Sheet information, which includes the modifiedAt for the sheet. You may be able to limit it further, but the result I got from this was pretty short and sweet.

(Python SDK 示例)

response = ss_client.Sheets.get_sheet(MY_SHEET_ID, column_ids='0', row_ids = '0')

使用上述参数,我能够排除所有 sheet 数据并仅获得元数据(包括 modifiedAt 属性)。

基本上我的意图是定期运行 同步脚本并将智能sheet 数据存储到我的本地数据库中。如果自上次执行以来没有任何变化,我希望 API 响应跳过实际的 Sheet 数据(行、列、单元格)。实现此目的的另一种巧妙方法是使用 ifVersionAfter 参数。

ifVersionAfter (optional): If version specified is still the current sheet version, then returns an abbreviated Sheet object with only the sheet version property. Otherwise, if the sheet has been modified, returns the complete Sheet object. Intended to allow clients with a cached copy to make sure they have the latest version.

last_version_fetched = 7724
response = ss_client.Sheets.get_sheet(MY_SHEET_ID, if_version_after=last_version_fetched)