Как получить модифицированный контент из листов Google? - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь получить измененный контент по истечении заданного времени из листов Google.Нигде не могу найти API для получения данных.То, что я вижу, это получение одной только измененной даты с диска ApiКак я могу получить данные, используя Drive или Sheets Api?Дайте мне предложения, если это возможно

1 Ответ

0 голосов
/ 11 июля 2019

Google Диск отслеживает историю изменений файлов, которые на нем содержатся.Тем не менее, невозможно получить ревизии только по запросу.

Google позволяет вам получать уведомления по электронной почте всякий раз, когда пользователь вносит изменения в ваш лист, которые вы можете настроить.выполнив следующие шаги:

  1. В веб-представлении электронной таблицы нажмите Tools -> Notification rules...
  2. Под Notify me at myemail@address.ext when... выберите Any changes are made
  3. Под Notify me with... выберитеEmail - right away
  4. Нажмите Save.

Вы также должны знать, что вы не получите уведомление о внесенных вами изменениях в лист - уведомления будут получены только тогда, когда лист редактирует другой пользователь.Всякий раз, когда вы получаете уведомление по электронной почте, вы получите ссылку для просмотра изменений в электронной таблице в виде ссылки для просмотра в Интернете только для чтения.

Вы можете обойти это программно, хотя его нет.правильный путь, и это может быть довольно сложно.Вы можете использовать Revisions: list метод Drive REST API , чтобы получить информацию о пользователе, который выполнил редактирование, а также список ссылок, которые вы можете использовать для экспорта этой ревизии листа другому типу MIME, как показано ниже в ответе на запрос.

Запрос:

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

с revisions/exportLinks,revisions/lastModifyingUser/emailAddress в качестве поля fields и замена SPREADSHEET_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() триггер , привязанный к листу, что позволит вам автоматически получать изменения каждый раз, когда пользователь редактирует лист.

...