Rya*_*yan 7 google-docs export-to-excel google-docs-api export-to-csv
我目前正在使用Google表单,以允许用户提交存储在Google文档电子表格中的信息.我想知道是否可以定期自动备份电子表格.例如,每周五,电子表格将以CSV格式导出,并通过电子邮件发送给我或存储在服务器上受密码保护的目录中.
感谢阅读,任何想法都表示赞赏!
小智 5
Google文档是在线编辑和协作文档的理想工具.虽然Google Docs不提供自动备份功能,但与Google Docs同时使用Dropbox存储的用户可以获得解决方案.
解决方案是cloudHQ(10 $ +/pm)服务,提供Google Docs和Dropbox之间的实时同步.例如,在用户编辑某些Google文档网络文档时,该文档会在Dropbox中自动修改.这意味着,cloudHQ会自动将文件从Google Docs复制到Dropbox.
我想提出以下链接到cloudHQ快速浏览.CloudHQ还提供Google Chrome扩展程序.借助cloudHQ Chrome浏览器扩展程序,您可以直接从Google文档界面同步或复制Dropbox或Basecamp帐户中的任何内容与Google文档.Google Chrome网上应用店中提供了扩展功能.
如果有人能就云服务之间的数据同步提供一些提示或意见,我将不胜感激.
两种不涉及付费订阅的解决方案:
解决方案 1:编写一个脚本或简短的应用程序(选择您的语言),使用Google Drive API将 Google 表格导出为 CSV。为什么使用云端硬盘 API?Sheets API用于面向电子表格的功能,即数据格式化、列调整大小、创建图表、单元格验证等,而Drive API 用于面向文件的功能,即导入/导出。
如果您使用 Python,这里有一个完整的示例,您可以将其作为 cron 作业在您的服务器上运行,或者如果在Google App Engine上托管应用程序。如果不这样做,您可以将其用作伪代码并选择Google API 客户端库支持的任何语言。以下是该示例的核心代码(假设最新的工作表名为“inventory”):
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')
Run Code Online (Sandbox Code Playgroud)
如果您的工作表很大,您可能必须将其分块导出 - 请参阅本页了解如何执行此操作。您还可以使用 Gmail API 将文件内容通过电子邮件发送给自己。如果您对 Google API 不太熟悉,我为您准备了一个(有些过时但)用户友好的介绍视频。(之后还有 2 个视频也许也有用。)
解决方案 2:另一种解决方案适用于那些对使用 API“过敏”的人,该替代方案是Google Apps Script、浏览器之外的 Javascript。与 Node 一样,它在服务器端运行,但运行在 Google 的服务器上。借助 Apps 脚本,您可以使用DriveApp或高级 Drive 服务来访问您的工作表,然后使用MailApp或GmailApp将其通过电子邮件发送给自己,或使用UrlFetch服务将其发送到您选择的某个服务器。要按正常时间间隔运行它,您需要创建一个脚本作为时间驱动的可安装触发器。无论哪种情况,您都不需要自己托管+执行您的应用程序。
附:最新的 Drive API 版本是v3 ,但如果您从 Apps 脚本访问 Drive,它将使用v2(尚未弃用)。如果您确实需要从 Apps 脚本访问 Drive API v3,请使用Drive 高级服务。
这是一个解决方案:
步骤1
在Google云端硬盘中为备份文件创建一个文件夹(例如“我的云端硬盘>文档>备份”)。在浏览器中将其打开,然后从URL中记下其“ 文件夹ID ”。例如,以下URL中的文件夹ID为1234abcdefgh_98765ijklmnopqrs_0XY
https://drive.google.com/drive/u/0/folders/1234abcdefgh_98765ijklmnopqrs_0XY?ths=true
第2步
打开您要自动备份的Google Spreadsheet。从顶部菜单中,选择“工具”>“脚本编辑器”。在打开的新窗口中,将默认代码替换为下面的代码,并确保执行以下操作:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx您的备份文件夹ID来更新FOLDER IDvar 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 Code Online (Sandbox Code Playgroud)
如果要测试脚本,请单击代码上方的“ 运行 ”图标。这将在您配置的备份文件夹(基于前面提到的文件夹ID)中创建电子表格的备份Excel文件。
第三步
保存脚本(从顶部菜单中选择“文件”>“保存”),然后单击代码上方的“ 触发器 ”图标(时钟形图标)。在打开的新窗口中,单击“ +添加触发器 ”(在右下角)。您应该看到一个标题为“为backupSheet添加触发器”的覆盖图,您可以在其中计划自动备份的执行。例如,如果您希望它在每周的星期一运行,则应配置以下设置:
完成配置后,保存触发器。现在,将自动在您的Google云端硬盘中的所需文件夹中创建Excel备份。
第四步
最后,在您的计算机上安装Google的备份和同步(如果尚未安装),并将其配置为从您的Google云端硬盘帐户同步备份文件夹-在“首选项”>“ Google云端硬盘”>启用“将我的云端硬盘同步到此计算机”,并确保备份文件夹位于要同步的文件夹之中。
该应用程序现在将自动下载Google Spreadsheet的Excel备份,供您离线使用!
| 归档时间: |
|
| 查看次数: |
9036 次 |
| 最近记录: |