正如标题所示,我正在尝试找到一种使用 Google Sheets API v4(或 Google Drive API v3)将电子表格恢复到特定版本的方法。
这是需要的,因为单元测试 - 我需要一个测试来在电子表格上执行一些操作(假设删除一行),断言结果,然后将电子表格重置为其初始状态,以便下一个测试可以在原始电子表格上执行。
到目前为止,我注意到 Google Sheets API 中没有执行类似操作的选项。就使用 Google Drive API 而言,我尝试使用修订 https://developers.google.com/drive/api/v3/reference/revisions(获取所有修订的列表并删除所需修订之后的所有修订),但无济于事。
我还尝试在单击后捕获请求恢复此版本按钮,发现有一个revisions/revert
端点。
> Example:
> https://docs.google.com/spreadsheets/d/**spreadsheetId**/revisions/revert?includes_info_params=false
我实际上设法以这种方式恢复版本,但是使用 Postman 并使用硬编码值 - 这很糟糕。
关于如何处理这个问题有什么建议吗?
使用 Drive API 从文档恢复旧版本的常用方法是删除所有更高版本修改:删除 https://developers.google.com/drive/api/v3/reference/revisions/delete。但是,正如参考文档所示,“您只能删除 Google 云端硬盘中包含二进制内容的文件(例如图像或视频)的修订版本。其他文件(例如 Google 文档或表格)的修订以及最后剩余的文件版本无法删除因此,没有直接的方法可以使用 Drive API 恢复到以前的版本(Sheets API 对此没有用)。
解决方法:
一种可能的解决方法是执行以下操作:
- 获取您想要恢复的修订 ID修订.列表 https://developers.google.com/drive/api/v3/reference/revisions/list.
- 导出您要恢复的版本修订版.get https://developers.google.com/drive/api/v3/reference/revisions/get and
exportLinks
,的一个属性修订资源 https://developers.google.com/drive/api/v3/reference/revisions#resource-representations。您必须选择导出此版本的 MIME 类型(请参阅支持的导出 MIME 类型列表 https://developers.google.com/drive/api/v3/ref-export-formats). 更新:您必须通过设置参数来指定要检索字段exportLinksfields
to exportLinks
.
- 获取此导出版本的 blob。
- 使用此 blob,更新电子表格文件更新 https://developers.google.com/drive/api/v3/reference/files/update.
您可以在 Google Apps 脚本中查看执行此操作的代码:这个答案 https://stackoverflow.com/a/57898660/10612011。您必须直接使用 API 并将其改编为 C#,但工作流程基本相同。
参考:
- 修改:删除 https://developers.google.com/drive/api/v3/reference/revisions/delete
- 修订资源 https://developers.google.com/drive/api/v3/reference/revisions#resource-representations
- G Suite 文档和相应的导出 MIME 类型 https://developers.google.com/drive/api/v3/ref-export-formats
- 文件更新 https://developers.google.com/drive/api/v3/reference/files/update
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)