永久链接到公用文件夹中的Google云端硬盘文件

时间:2013-09-08 10:40:01

标签: google-drive-api

我一直在玩Drive能够在公共文件夹中托管HTML页面。根据{{​​3}},您可以使用folderID和文件名获取公用文件夹中文件的URL。太棒了。问题是,如果文件名更改,URL也会更改。这意味着现在打破了对该文件的外部引用。

我调查了GDrives,但我不认为这对我有用。我的应用程序不是传统意义上的网站。我只是使用公共文件夹作为我可以存储HTML文件的机制,这样我以后可以通过各自的URL轻松访问所有这些文件,而无需登录Google云端硬盘。总之,这些HTML文件不构成网站,而是恰好位于同一文件夹中的单独实体,以便使管理更容易。重要的是,用户不必在以后显示HTML页面时再次登录Drive,因为它正在自助服务终端计算机上呈现。

是否有其他可以使用的URL,也许是使用文件ID而不是文件名的URL?还是有其他一些创造性的方法可以解决这个问题吗?

THX。

1 个答案:

答案 0 :(得分:1)

检查API文档似乎无法获得通用URL来按预期访问HTML文件(在自助服务终端上显示该HTML文件),但需要使用一些Google AppsScript并了解如何为文件构建URL在Google云端硬盘托管网站中,以下步骤可以解决问题。

我使用Serving content capability创建了一个Google AppsScript Web应用程序,该应用程序动态地重新创建已发布HTML文件的URL。 由于Google AppsScript以我自己的身份运行,因此最终用户无需对应用程序进行身份验证或批准,我只需要从我的帐户中批准该应用。

现场概念证明在这里: https://googledrive.com/host/0B0CnV_gvF2TgNzBlbHBxeUlUYmM/base.html

可以在此处找到带JS调用的“在JS修改之前”的base.html页面: https://drive.google.com/folderview?id=0B0CnV_gvF2TgNzBlbHBxeUlUYmM&usp=sharing

可以在此处找到存储“iframed”HTML页面的公用文件夹: https://drive.google.com/folderview?id=0ByI2-lJS5-g4YXNtNzJkdWduQ1E&usp=sharing

我使用了2个不同的帐户来测试即使是来自不同文件夹和帐户的文件,一切都按预期工作。

可在此处找到AppScript代码: https://script.google.com/d/1c9oJKLvNHrxkmEltTvm9OfZuirFJeJJojAORZ8mnlGKmm2UXy8yROM8Z/edit?usp=sharing

简而言之: - base.html是一个包装器,用于调用AppScript并使用回调函数(showIframe)处理结果 - AppsScript接收folderId和fileId并为请求的HTML文件创建当前URL,然后调用showIframe函数(在调用AppsScript服务时在prefix参数中指定) - showIframe替换已存在的iframe的src

我使用过AppsScript,但是通过调用能够运行某些代码服务器端的任何页面并从ID中检索当前文件名,可以完成同样的事情。

请记住,已发布的文件夹ID不能始终作为公共文件的父文件之一进行检索,因为该文件可以组织到与我正在访问它的用户不同的目录中。 在上面的示例中,“iframed”文件未列在AppsScript使用的用户的Google云端硬盘结构中。