Восстановление указанной c версии электронной таблицы с помощью Google API - PullRequest
1 голос
/ 10 февраля 2020

Как и в заголовке, я пытаюсь найти способ восстановить электронную таблицу до указанной c версии, используя Google Sheets API v4 (или Google Drive API v3).

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

До сих пор я заметил, что в API Google Sheets нет возможности сделать что-то подобное. Что касается использования Google Drive API, я попытался использовать revisions (получить список всех ревизий и удалить все ревизии после требуемой), но безрезультатно.

Я также попытался захватить запрос после нажатия кнопки Восстановить эту версию и обнаружил, что существует конечная точка revisions/revert.

> Example:
> https://docs.google.com/spreadsheets/d/**spreadsheetId**/revisions/revert?includes_info_params=false

Мне действительно удалось отменить версию таким образом, но с использованием Postman и использованием жестко закодированных значений - что плохо.

Любой совет, как подойти к этому?

1 Ответ

1 голос
/ 10 февраля 2020

Обычный способ восстановить старую версию из документа с помощью Drive API - удалить все более поздние версии с Revisions: delete . Но, как указано в ссылочной документации, « можно удалять только ревизии для файлов с бинарным содержимым в Google Диске, например изображений или видео. Ревизии для других файлов, таких как Google Docs или Sheets, и последняя оставшаяся версия файла могут». быть удаленным". Таким образом, нет прямого способа вернуться к предыдущей версии с помощью Drive API (Sheets API для этого не нужен).

Обходной путь:

Возможный обходной путь заключается в следующем:

  • Получить идентификатор ревизии, которую вы хотите восстановить, с помощью Revisions.list .
  • Экспортировать версию, которую вы хотите восстановить, с помощью Revisions.get и exportLinks, свойство ресурса Revisions . Вам нужно будет выбрать тип MIME для экспорта этой версии (см. список поддерживаемых типов экспорта MIME ). Обновление: необходимо указать, что вы хотите получить поле exportLinks, установив для параметра fields значение exportLinks.
  • Получить блоб этой экспортированной версии.
  • Используя этот BLOB-объект, обновите электронную таблицу с помощью Files.update .

Вы можете увидеть код для этого в скрипте Google Apps в этот ответ, Вам придется использовать API напрямую и адаптировать его к C#, но рабочий процесс в основном такой же.

Ссылка:

...