2016-06-15 2 views
0

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

Моя компания использует неограниченный Google Диск для хранения общих документов, и мы стремимся к резервному копированию содержимого автоматически. Но мы не можем хранить данные в резервной копии с помощью документов Google, таких как «.gdoc» и «.gsheet» ... нам нужно, чтобы документы были скопированы в формате Microsoft/Open-Office («.docx» и « .xlsx ").

В настоящее время мы используем страницу Google Takeout, чтобы закрепить все содержимое Диска и сохранить его на нашем Linux-сервере (у этого есть избыточное хранилище). И он дозирует zip и экспортирует файлы в правильные форматы. Здесь: [https://takeout.google.com/settings/takeout][1]

Теперь это работает ... но для этого требуется ручная работа с нашей стороны. И няня zip, загрузки и загрузки процессов становится расточительным. Я искал и прочитал, что API google для Takeout недоступен для использования через gscript. Таким образом, это, похоже, не может быть и речи.

Используя скрипты Google, я смог конвертировать отдельные файлы ... но не могу, например, преобразовать папку из файлов «.gsheet» в формат «.xlsx». Возможно, копирование и конвертирование всех файлов google в новую папку на диске может быть возможно. Имея доступ к диску и преобразованного «резервное копирование», тогда мы могли бы сделать резервную копию коллекции конвертированных файлов через сервер ...

Так вот только все это:

1) Можете ли вы масс- конвертировать весь привод Google и/или конкретную папку на диске из «.gdoc» в «.docx» и «.gsheet» в «.xlsx». Можно ли это сделать с помощью gscript?

2) Если вы не можете использовать метод, о котором идет речь, кто-нибудь знаком с Linux-приложением Mac, которое может сделать такое преобразование каталога? (Не верьте этому из-за собственных типов файлов в googles)

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

Спасибо за все помочь

ответ

0

# 1) Можно ли массово конвертировать все диск Google и/или в определенной папке на диске с «.gdoc» до «.docx», и " .gsheet "в" .xlsx ". Можно ли это сделать с помощью gscript?

Вы можете попробовать это:

How To Automaticlly Convert files in Google App Script

Преобразование файла в Google App Script в сгустка

var documentId = DocumentApp.getActiveDocument().getId();   

function getBlob(documentId) { 
var file = Drive.Files.get(documentId); 
var url = file.exportLinks['application/vnd.openxmlformats-officedocument.wordprocessingml.document']; 
var oauthToken = ScriptApp.getOAuthToken(); 
var response = UrlFetchApp.fetch(url, { 
    headers: { 
    'Authorization': 'Bearer ' + oauthToken 
    } 
}); 
return response.getBlob(); 
} 

Сохранение файла в качестве DOCX в Drive

function saveFile(blob) { 
    var file = { 
    title: 'Converted_into_MS_Word.docx', 
    mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' 
    }; 
    file = Drive.Files.insert(file, blob); 
    Logger.log('ID: %s, File size (bytes): %s', file.id, file.fileSize); 
    return file; 
} 

Time-driven triggers

Триггер с управлением по времени (также называемым триггером часы) похож на хроны в Unix.Триггеры, зависящие от времени, позволяют сценариям выполняться в определенное время или в повторяющийся интервал так часто, как каждую минуту или нечасто, как раз в месяц. (Обратите внимание, что надстройка может использовать триггер, управляемый по времени один раз в час.) Время может быть немного рандомизировано - например, если вы создаете повторяющийся триггер 9 утра, скрипт Apps выбирает время между 9:00 и 10 am, то сохраняет это время согласованным с каждым днем, так что до истечения 24 часов до срабатывания триггера.

function createTimeDrivenTriggers() { 
    // Trigger every 6 hours. 
    ScriptApp.newTrigger('myFunction') 
     .timeBased() 
     .everyHours(6) 
     .create(); 

    // Trigger every Monday at 09:00. 
    ScriptApp.newTrigger('myFunction') 
     .timeBased() 
     .onWeekDay(ScriptApp.WeekDay.MONDAY) 
     .atHour(9) 
     .create(); 
} 

процесса:

  1. List all files id inside a folder
  2. Convert Files
  3. Вставьте код с временным приводом Триггеры

2) Если не в состоянии с помощью метода, о котором идет речь, кто-нибудь знаком с Linux-приложением Mac, которое могло бы сделать такое преобразование каталога? (Не верьте этому из-за Googles запатентованные типы файлов)

Если вы хотите сохранить его локально попробуйте установить cronjob и использовать Download Files

Привод API позволяет загружать файлы, которые хранятся в Гугл Диск. Кроме того, вы можете загружать экспортированные версии документов Google (документы, таблицы, презентации и т. Д.) В форматы, которые может обрабатывать ваше приложение. Drive также поддерживает предоставление пользователям прямого доступа к файлу через URL-адрес в свойстве webViewLink.

В зависимости от типа загрузки вы хотите выполнить - файл, в документ Google или ссылку контента - вы будете использовать один из следующих адресов:

  1. Скачать файл - files.get с alt=mediafile resource
  2. Скачать и экспортировать документ Google - files.export
  3. Ссылка пользователю файл - webContentLink от file resource

Пример код:

$fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M'; 
$content = $driveService->files->get($fileId, array(
    'alt' => 'media')); 

Надеется, что это помогает, и ответил на все Ваши вопросы

+0

Как вы могли бы, вместо того, чтобы активный идентификатор документа, получить список или массив всех файлов в каталоге и конвертировать их один за другим, предвзятым по исходному типу файла? Я понимаю, что это может быть продвинуто ... Я просто не могу выразить себя в этом кодировании, как я делаю на C# и C + без знания. – Niko

+0

Доза, которую вы ответили мне в части № 1, относится к коду, связанному с каждым документом? Моя истинная проблема - массовое преобразование. Я видел, что конверсии файлов возможны ... Но как бы определить, скажем, папку на диске и преобразовать ВСЕ ее содержимое. Независимо от того, был ли это 1 файл gsheet или 1000. Это не возможно для наших пользователей (потому что многие из пользователей являются неквалифицированными), чтобы добавить gscript в отдельные файлы, которые они создают, и для меня сделать это с помощью сотен файлов. – Niko

Смежные вопросы