我正在使用 gspread 加载电子表格中的读取内容,效果很好。然而,我经常遇到 Google 数据上限,尤其是在测试时。
我创建了一个缓存方法,如果本地副本不到一分钟,则使用该方法。但是,在调试时,我经常必须更改电子表格中的内容并立即看到代码执行的变化。另一方面,由于调试期间并非所有调用都需要新副本,因此如果删除缓存,我将很快达到数据上限。
有没有办法在获取电子表格之前检查它是否已更改?我知道电子表格的
modifiedTime
中有一个字段 _properties
,但它似乎没有访问器方法。这向我表明存在一种隐藏缓存机制。有吗。
在我看来,要填充
modifiedTime
,您无论如何都需要阅读整个电子表格。这是真的吗?
所以问题是:如何在不使用数据上限的情况下获取电子表格的最后修改时间?最好只使用 gspread?
在当前阶段,似乎无法通过编辑单元格正确更新
“Method: files.get”的
modifiedTime
的属性。 参考(作者:我) 所以,在这种情况下,“方法:revisions.list”用于检查更新时间。
在这种情况下,我认为
It also seems to me that to populate modifiedTime you need to read the entire spreadsheet anyways. Is that true?
的答案是否定的。
另外,关于
So here is the question: how do I get the last modified time of a spreadsheet without using my data cap? Preferably using only gspread?
,我认为Python的googleapis可以与gspread的客户端一起使用。
检查电子表格最后修改时间的示例脚本如下。
import gspread
from googleapiclient.discovery import build
client = ### # Please set your gspread client.
spreadsheetId = "###" # Please set your Spreadsheet ID.
drive = build("drive", "v3", credentials=client.auth)
revisions = []
pageToken = ""
while pageToken is not None:
res = drive.revisions().list(fileId=spreadsheetId, fields="nextPageToken,revisions(modifiedTime)", pageSize=1000, pageToken=pageToken if pageToken != "" else None).execute()
r = res.get("revisions", [])
revisions += r
pageToken = res.get("nextPageToken")
lastModifiedTime = revisions[-1]["modifiedTime"]
print(lastModifiedTime)
spreadsheetId
一样检索 2023-12-21T00:12:34.567Z
电子表格的最后修改时间。