Как я могу автоматически загружать резервные копии таблицы Google Docs? - PullRequest
7 голосов
/ 13 марта 2012

В настоящее время я использую форму Google, чтобы позволить людям отправлять информацию, хранящуюся в электронной таблице документов Google.Мне было интересно, если можно автоматизировать резервное копирование таблицы на регулярной основе.Например, каждую пятницу электронная таблица будет экспортироваться в формате CSV и либо отправляться мне по электронной почте, либо храниться в защищенном паролем каталоге на сервере.

Спасибо за чтение, любые идеи приветствуются!

Ответы [ 3 ]

5 голосов
/ 13 марта 2012

Документы Google - это идеальный инструмент для редактирования и совместной работы над документами в Интернете. Хотя Google Docs не предоставляет функцию автоматического резервного копирования, люди, которые используют хранилище Dropbox одновременно с Google Docs, имеют решение для этого.

Решением является cloudHQ (10 $ + / pm), который обеспечивает синхронизацию в реальном времени между Google Docs и Dropbox . Например, когда пользователь редактирует веб-документ Google Docs, документ автоматически изменяется в Dropbox. Это означает, что cloudHQ автоматически копирует файл из Google Docs в Dropbox.

Я хотел бы предложить следующую ссылку на cloudHQ Quick Tour . CloudHQ также предоставляет расширение Google Chrome. С cloudHQ расширением браузера Chrome вы можете синхронизировать или реплицировать что угодно в своем аккаунте Dropbox или Basecamp с Google Docs - прямо из интерфейса Google Docs. Расширение доступно в интернет-магазине Google Chrome.

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

4 голосов
/ 16 февраля 2019

Вот решение:

  • автоматически создавать резервные копии электронной таблицы Google (ежедневно / еженедельно и т. Д.)
  • в виде файла Excel (XLSX) в указанной папке изВаш Google Диск
  • , который затем можно настроить для автоматической синхронизации с вашим компьютером

Шаг 1

Создать папку для файлов резервных копий вВаш Google Диск (например, «Мой диск> Документы> Резервные копии»).Откройте его в браузере и запишите его « идентификатор папки » из URL.Например, идентификатор папки из следующего URL будет 1234abcdefgh_98765ijklmnopqrs_0XY

https://drive.google.com/drive/u/0/folders/1234abcdefgh_98765ijklmnopqrs_0XY?ths=true

Шаг 2

Откройте нужную таблицу Google.для автоматического резервного копирования.В верхнем меню выберите «Инструменты»> «Редактор скриптов».В открывшемся новом окне замените код по умолчанию на приведенный ниже код и убедитесь, что:

  • включите Advanced Drive Service , если вы этого еще не сделали: изВ верхнем меню выберите «Ресурсы»> «Расширенные службы Google ...»> «API накопителя»> переключите «ВКЛ»
  • ОБНОВЛЕНИЕ ИД ПАПКИ , заменив xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx на вашID папки резервной копии, в строке с var backupFolder = ...
// function to backup the current Spreadsheet as an Excel file (XLSX) in a given folder
// -- requires "Advanced Drive Service" which must be enabled in "Resources" > "Advanced Google services..." > "Drive API" > toggle "ON"
function backupSheet() {
  // UPDATE THE FOLDER ID for e.g. "My Drive > Docs > Backups"
  var backupFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var spreadsheetId = spreadsheet.getId();
  var file = Drive.Files.get(spreadsheetId);
  var url = file.exportLinks[MimeType.MICROSOFT_EXCEL];
  var token = ScriptApp.getOAuthToken();
  var options = { headers: { Authorization: "Bearer " + token } };
  var response = UrlFetchApp.fetch(url, options);
  var doc = response.getBlob();
  var backupDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd' 'HH-mm-ss");
  var backupName = spreadsheet.getName() + ".backup " + backupDate + ".xlsx";
  var tempFile = DriveApp.createFile(doc).setName(backupName);
  tempFile.makeCopy(backupName, backupFolder);
  tempFile.setTrashed(true);
}

Если вы хотите протестировать скрипт, нажмите на значок « Run » над кодом.Это создаст резервную копию файла Excel вашей электронной таблицы в папке резервного копирования, которую вы настроили (на основе идентификатора папки, упомянутого ранее).

Шаг 3

Сохраните ваш скрипт (в верхнем меню выберите «Файл»> «Сохранить»), а затем щелкните значок « Триггеры » над кодом (значок в форме часов).В открывшемся новом окне нажмите « + Добавить триггер » (в правом нижнем углу).Вы должны увидеть наложение под названием «Добавить триггер для backupSheet», где вы можете запланировать выполнение вашего автоматического резервного копирования.Например, если вы хотите, чтобы он запускался каждую неделю в понедельник, вы должны настроить следующие параметры:

  • Выберите, какую функцию запустить: backupSheet
  • Выберите, какуюразвертывание должно выполняться: Голова
  • Выбор источника события: Управляемый временем
  • Выбор типа триггера на основе времени: Таймер недели
  • Выберите день недели: Каждый понедельник

Сохранить триггер, когда вы закончите его настройку.Резервные копии Excel теперь будут автоматически создаваться в нужной папке на вашем Google Диске.

Шаг 4

Наконец, установите Резервное копирование и синхронизация из Google на вашем компьютере (если вы этого еще не сделали) и настройте его для синхронизации папки резервных копий из учетной записи Google Диска - в «Предпочтения»> «Диск Google»> включите «Синхронизировать мой диск с этим компьютером» и убедитесь, чтопапка резервных копий находится среди синхронизируемых папок.

Приложение теперь автоматически загрузит резервные копии Excel вашей таблицы Google для вашего удовольствия в автономном режиме!

0 голосов
/ 28 февраля 2017

Два решения, которые не предусматривают платную подписку: 1) написать скрипт или короткое приложение ( выберите ваш язык ), которое экспортирует Google Sheet с помощью Google Drive API как CSV. Почему Drive API? Sheets API предназначен для электронных таблиц -ориентированных функций, т. Е. Форматирования данных, изменения размера столбцов, создания диаграмм, проверки ячеек и т. Д., В то время как Drive API предназначен для file -ориентированная функциональность, т. Е. Импорт / экспорт.

Если вы используете Python, вот полный пример , который вы можете запустить в качестве задания cron на своем сервере или, если хостинг приложений на Google App Engine . Если вы этого не сделаете, вы можете использовать его в качестве псевдокода и выбрать любой язык, поддерживаемый клиентскими библиотеками Google APIs . Вот основной фрагмент кода из этого примера (предположим, что самый последний Лист называется инвентаризацией):

FILENAME = 'inventory'
SRC_MIMETYPE = 'application/vnd.google-apps.spreadsheet'
DST_MIMETYPE = 'text/csv'

files = DRIVE.files().list(
    q='name="%s" and mimeType="%s"' % (FILENAME, SRC_MIMETYPE),
    orderBy='modifiedTime desc,name').execute().get('files', [])

if files:
    fn = '%s.csv' % os.path.splitext(files[0]['name'].replace(' ', '_'))[0]
    print('Exporting "%s" as "%s"... ' % (files[0]['name'], fn), end='')
    data = DRIVE.files().export(fileId=files[0]['id'], mimeType=DST_MIMETYPE).execute()
    if data:
        with open(fn, 'wb') as f:
            f.write(data)
        print('DONE')

Если ваш Лист большой, вам, возможно, придется экспортировать его порциями - см. на этой странице о том, как , . Вы также можете отправить по электронной почте содержимое файла с помощью Gmail API . Если вы, как правило, плохо знакомы с API Google, у меня есть (несколько устарело, но) удобное для пользователя вступительное видео для вас. (Есть 2 видео после этого, может быть, тоже полезно.)

2) Другое решение предназначено для тех, у кого "аллергия" на использование API, и альтернативой является Google Apps Script , Javascript вне браузера. Как и Node, он работает на стороне сервера, но на серверах Google. С помощью скрипта Apps вы можете использовать DriveApp или расширенный сервис Drive для доступа к вашему Листу, а затем использовать MailApp или GmailApp , чтобы отправить его по электронной почте или используйте сервис UrlFetch , чтобы отправить его на какой-либо сервер по вашему выбору. Чтобы запустить его с нормальным интервалом, вам нужно будет создать сценарий как управляемый по времени триггер . В любом случае вам не нужно самостоятельно размещать и запускать ваше приложение.

пс. последняя версия Drive API - v3 , но если вы обращаетесь к Drive из скрипта приложений, он использует v2 (пока не рекомендуется).

...