将Google云端硬盘备份到.zip文件并进行文件转换

时间:2016-06-15 18:09:00

标签: linux google-drive-api applescript google-docs

我一直在讨论这个主题,并且无法找到适用于Google云端硬盘大量数据的自动方法。这是我希望实现的目标:

我的公司使用无限制的Google云端硬盘存储共享文档,我们希望自动备份内容。但是,我们无法将数据存储在备份中,而是使用谷歌文档,例如" .gdoc"和#34; .gsheet" ...我们需要以Microsoft / Open-Office格式备份文档(" .docx"和" .xlsx")。

我们目前使用Google的“外卖”页面压缩云端硬盘的所有内容并将其保存在我们的Linux服务器上(具有冗余存储空间)。并且它将zip文件压缩并将文件导出为正确的格式。 这里:[https://takeout.google.com/settings/takeout][1]

现在有效......但我们需要一些手动工作。保姆拉链,下载和上传过程变得浪费。我已经搜索过,并且已经阅读过google API for Takeout无法通过gscript使用。所以,这似乎是不可能的。

使用Google脚本,我已经能够转换单个文件....但是,例如,无法转换" .gsheet"的文件夹。文件到" .xlsx"格式。也许可以将所有谷歌文件复制并转换为驱动器上的新文件夹。有权访问驱动器和转换后的"备份",然后我们可以通过服务器备份转换后的文件集合...

所以这就是一切:

1)你能从#34; .gdoc"大规模转换驱动器上的所有谷歌驱动器和/或特定文件夹吗? to" .docx"," .gsheet"到" .xlsx"。这可以用gscript完成吗?

2)如果无法通过问题1的方法,是否有人熟悉Linux的Mac应用程序可以进行这样的目录转换? (因为googles专有文件类型而不相信它)

我陷入了困境,对这个问题的任何见解都会有所帮助。我真的希望谷歌允许用户通过脚本选择转换和导出驱动器文件夹。

感谢您提供任何帮助

1 个答案:

答案 0 :(得分:0)

#1)您可以从" .gdoc"批量转换驱动器上的所有Google驱动器和/或特定文件夹。 to" .docx"," .gsheet"到" .xlsx"。可以用gscript吗?

你可以试试这个:

How To Automaticlly Convert files in Google App Script

将Google App Script中的文件转换为blob

ActivityRecognitionResult

在云端硬盘

中将文件另存为docx
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();
}

Time-driven triggers

  

时间驱动的触发器(也称为时钟触发器)类似于Unix中的cron作业。时间驱动的触发器允许脚本在特定时间或重复间隔执行,每分钟或不经常每月执行一次。 (请注意,附加组件最多可以每小时使用一次时间驱动的触发器。)时间可能会稍微随机化 - 例如,如果您创建一个周期性的上午9点触发器,Apps脚本会选择上午9点到10点之间的时间。 am,然后保持每天的时间一致,以便在触发器再次触发前24小时过去。

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;
}

过程:

  1. List all files id inside a folder
  2. 转换文件
  3. 将代码插入时间驱动的触发器
  4. 2)如果无法通过问题1的方法,是否有人熟悉Linux的Mac应用程序可以进行这样的目录转换? (因为googles专有文件类型而不相信它)

    如果您想在本地保存,请尝试设置cronjob并使用Download Files

      

    Drive API允许您下载存储在Google云端硬盘中的文件。此外,您还可以下载应用程序可以处理的格式的Google文档(文档,电子表格,演示文稿等)的导出版本。 Drive还支持通过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(); } 属性中的URL为用户提供对文件的直接访问。

         

    根据您要执行的下载类型 - 文件,Google文档或内容链接 - 您将使用以下网址之一:

         
        
    1. 使用webViewLink files.get
    2. 下载文件 - file resource   
    3. 下载并导出Google文档 - files.export
    4.   
    5. 将用户链接到文件 - file resource
    6. 中的alt=media   

    示例代码:

    webContentLink

    希望这有助于解答所有问题