我一直在讨论这个主题,并且无法找到适用于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专有文件类型而不相信它)
我陷入了困境,对这个问题的任何见解都会有所帮助。我真的希望谷歌允许用户通过脚本选择转换和导出驱动器文件夹。
感谢您提供任何帮助
答案 0 :(得分:0)
你可以试试这个:
How To Automaticlly Convert files in Google App Script
将Google App Script中的文件转换为blob
ActivityRecognitionResult
在云端硬盘
中将文件另存为docxvar 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();
}
时间驱动的触发器(也称为时钟触发器)类似于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;
}
过程:
如果您想在本地保存,请尝试设置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文档或内容链接 - 您将使用以下网址之一:
- 使用
下载文件 - file resourcewebViewLink
files.get- 下载并导出Google文档 - files.export
- 将用户链接到文件 - file resource
中的alt=media
醇>
示例代码:
webContentLink
希望这有助于解答所有问题