将一堆Google Calendar .ics文件导出到Google云端硬盘

时间:2016-07-19 11:43:46

标签: google-apps-script scripting calendar google-calendar-api google-apps

我的Google帐户中有几个日历,我想为此设置一个定期备份。

每个日历都有一个特定的.ics文件导出网址,例如https://calendar.google.com/calendar/exporticalzip?cexp=insert_long_string_of_characters

我想为每个日历提取每个导出链接,并使用某种脚本将文件导出到我的Google云端硬盘上的指定文件夹(而不是我的本地计算机)

这样的事情可能吗?

谢谢!

杰米

1 个答案:

答案 0 :(得分:0)

要获取特定的导出URL,您可以使用方法'Files:get'按ID获取文件的元数据。在downloadUrl下,exportLinks包含(密钥)。检索文件元数据中提供的相应下载URL,然后使用下载URL检索实际文件内容或链接。

要下载文件,您需要对文件的资源网址发出授权HTTP GET请求,并包含查询参数 alt = media

GET https://www.googleapis.com/drive/v2/files/0B9jNhSvVjoIVM3dKcGRKRmVIOVU?alt=media
Authorization: Bearer ya29.AHESVbXTUv5mHMo3RYfmS1YJonjzzdTOFZwvyOAUVhrs

private static InputStream downloadFile(Drive service, File file) {
if (file.getDownloadUrl() != null && file.getDownloadUrl().length() > 0) {
try {
HttpResponse resp =
service.getRequestFactory().buildGetRequest(new GenericUrl(file.getDownloadUrl()))
.execute();
return resp.getContent();
} catch (IOException e) {
// An error occurred.
e.printStackTrace();
return null;
}
} else {
// The file doesn't have any content stored on Drive.
return null;
}
}

有一些Google文档格式和受支持的导出MIME,请查看此文档:https://developers.google.com/drive/v2/web/manage-downloads#downloading_google_documents