Pygsheets调用.updated报'File not found',如何获取modifiedTime?
解决pygsheets获取Google表格修改时间时的404错误
首先咱们拆解下问题:你能正常完成表格的读写操作,但调用my_worksheet.updated时触发404,核心原因是pygsheets的这个属性依赖Google Drive API,而你大概率没启用Drive API,或者相关权限配置存在疏漏。虽然Sheets API能处理表格的读写,但获取文件修改时间需要调用Drive API的files.get接口——这是两个独立的API服务,权限和启用状态是分开的。
下面是具体的解决方案:
1. 启用Google Drive API(最可能解决问题)
这是最常见的触发该404的原因:你只启用了Google Sheets API,但没启用Drive API。操作步骤如下:
- 打开Google Cloud Console,找到你当前使用的项目
- 在搜索栏输入「Drive API」,定位到对应的服务
- 点击「启用」按钮,等待服务启用完成
启用后重新运行你的代码,大概率能直接解决404问题。
2. 手动调用Drive API获取修改时间(绕开pygsheets的问题)
如果你暂时不想启用Drive API,或者想避开pygsheets旧版本的这个bug,可以直接用google-api-python-client调用Drive API来获取修改时间,代码示例如下:
from googleapiclient.discovery import build def get_sheet_modified_time(sheet_id, credentials): # 构建Drive API服务实例 drive_service = build('drive', 'v3', credentials=credentials) # 仅请求文件的modifiedTime字段,减少返回数据量 file_info = drive_service.files().get( fileId=sheet_id, fields='modifiedTime' ).execute() return file_info.get('modifiedTime') # 直接复用pygsheets客户端的服务账号凭证 last_updated = get_sheet_modified_time(my_key, my_client.oauth.service_account_credentials) print(last_updated)
这个方法绕过了pygsheets的updated属性实现,利用你已有的服务账号凭证直接请求Drive API,只要服务账号有表格的访问权限,就能正常获取修改时间。
3. 可选:升级pygsheets版本(谨慎操作)
你当前使用的pygsheets 1.1.4是较旧的版本,后续版本可能修复了这个API调用的兼容性问题。不过如果你因为Team Drive支持或其他依赖限制不能升级,可以忽略这个选项。如果要升级,执行:
pip install --upgrade pygsheets
升级后再测试my_worksheet.updated是否正常工作。
额外排查点
- 确认服务账号权限:虽然你能读写表格,但还是要确保服务账号的邮箱已被添加为表格的共享成员(编辑或查看权限均可)
- 检查表格ID正确性:错误信息里的
{API_KEY}应该是你的表格ID,确认你传入的my_key是正确的Google表格ID(不是API密钥)
内容的提问来源于stack exchange,提问作者Crowhill
相关产品推荐
相关产品推荐

