首页 > 解决方案 > 如何从谷歌表格中获取修改后的内容?

问题描述

我试图在给定时间后从谷歌表格中获取修改后的内容。我无处可以找到获取数据的api。我可以看到仅从驱动 Api 获取修改日期。如何使用 Drive 或 Sheets Api 获取数据?如果可能的话给我建议

标签: javagoogle-drive-apigoogle-sheets-api

解决方案


Google Drive 会跟踪其中包含的文件的修订历史记录。但是,无法仅从请求中获取修订。

Google 允许您在用户对您的工作表进行编辑时接收电子邮件通知,您可以通过完成以下步骤进行设置:

  1. 在电子表格的 Web 视图中,单击Tools -> Notification rules...
  2. Notify me at myemail@address.ext when...选择下Any changes are made
  3. Notify me with...选择下Email - right away
  4. 单击Save

您还应该注意,您不会收到有关您对工作表进行编辑的通知 - 仅当其他用户编辑工作表时才会收到通知。每当您收到电子邮件通知时,您都会收到一个链接,以只读 Web 视图链接的形式查看电子表格的更改。

您可以以编程方式解决此问题,尽管没有一种正确的方法,而且可能非常复杂。您可以使用Revisions: listDrive REST API 的方法来获取有关进行编辑的用户的信息,以及可用于将该工作表的修订版导出到另一个 MIME 类型的链接列表,如下面的请求响应。

请求:

GET https://www.googleapis.com/drive/v3/files/SPREADSHEET_ID/revisions

使用revisions/exportLinks,revisions/lastModifyingUser/emailAddress作为fields字段并将 SPREADSHEET_ID 替换为电子表格的 ID 将为您提供200响应:

{
 "revisions": [
  {
   "lastModifyingUser": {
    "emailAddress": "username@domain.ext"
   },
   "exportLinks": {
    "application/x-vnd.oasis.opendocument.spreadsheet": "https://docs.google.com/spreadsheets/export?id=SPREADSHEET_ID&revision=revisionNumber&exportFormat=ods",
    "text/tab-separated-values": "https://docs.google.com/spreadsheets/export?id=SPREADSHEET_ID&revision=revisionNumber&exportFormat=tsv",
    "application/pdf": "https://docs.google.com/spreadsheets/export?id=SPREADSHEET_ID&revision=revisionNumber&exportFormat=pdf",
    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "https://docs.google.com/spreadsheets/export?id=SPREADSHEET_ID&revision=revisionNumber&exportFormat=xlsx",
    "text/csv": "https://docs.google.com/spreadsheets/export?id=SPREADSHEET_ID&revision=revisionNumber&exportFormat=csv",
    "application/zip": "https://docs.google.com/spreadsheets/export?id=SPREADSHEET_ID&revision=revisionNumber&exportFormat=zip",
    "application/vnd.oasis.opendocument.spreadsheet": "https://docs.google.com/spreadsheets/export?id=SPREADSHEET_ID&revision=1&exportFormat=ods"
   }
  }
 ]
}

通过单个更改的链接,您可以使用 Apps 脚本获取和比较不同版本的工作表,并输出版本之间具有不同值的单元格的 A1 表示法。使用原始Revisions: list请求中的电子邮件地址,这足以编译包含的文件或日志。

您可以将其放入绑定到工作表的简单onEdit()触发器中,这将允许您在每次用户编辑工作表时自动获取更改。


推荐阅读