如何使用Google Drive Push Notification API获取Google Sheets变更数据?
Google Sheets变更内容获取操作步骤
Google Drive Push Notification API本身仅推送变更发生的通知,不会携带具体变更数据,你可以按以下步骤操作获取新增行内容:
- 第一步:提前获取并存储变更起始标记
首次启动监听前,调用GET https://www.googleapis.com/drive/v3/changes/startPageToken接口获取初始pageToken,存储到你的服务端,每次处理完变更后都要更新这个标记。 - 第二步:收到推送后拉取变更列表
当收到资源状态为changed的推送通知时,调用GET https://www.googleapis.com/drive/v3/changes接口,请求参数携带你本地存储的上一次pageToken,按需添加includeItemsFromAllDrives=true、supportsAllDrives=true(适配共享盘场景)、fields=changes/fileId,changes/file/name,nextPageToken等字段过滤参数,返回结果中找到你要监听的Google Sheets对应的文件ID的变更记录。 - 第三步:获取表格具体变更内容
定位到对应表格的变更后,调用Google Sheets API的GET https://sheets.googleapis.com/v4/spreadsheets/{你的表格ID}/values/{监听范围,例如Sheet1!A:Z}拉取最新表格数据,和你本地缓存的上一次表格数据做对比,即可定位到新增的行内容。
如果想要优化性能,可以在表格中新增自增ID、创建时间类的标识列,每次拉取时只查询大于你上次记录的最大ID/最晚创建时间的行,无需每次拉取全量对比 - 第四步:更新本地存储内容
本次变更处理完成后,将变更接口返回的nextPageToken更新到本地存储,同时更新缓存的表格最新数据,用于下一次变更对比。
注意事项
- 你调用watch接口创建的推送通道默认最长有效期为1小时,需要在通道过期前重新调用watch接口续期,避免推送中断
- 推送通知存在重复投递的可能,你可以通过请求头中的
X-Goog-Message-Number做幂等处理,避免重复处理同一变更
内容的提问来源于stack exchange,提问作者Liton
相关产品推荐
相关产品推荐

