0

我一直在使用 Drive 在公共文件夹中托管 HTML 页面的能力。根据此页面,您可以使用文件夹 ID 和文件名获取公用文件夹中文件的 URL。极好的。问题是,如果文件名发生变化,URL 也会发生变化。这意味着对该文件的外部引用现在已损坏。

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

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

谢谢。

4

1 回答 1

1

检查 API 文档似乎不可能获得一个通用 URL 来按预期访问 HTML 文件(在信息亭上显示该 HTML 文件),但需要一点 Google AppsScript 并知道如何为 Google 中的文件构建 URL Drive Hosted site,以下步骤可以解决问题。

我使用Serving content 功能创建了一个 Google AppsScript 网络应用程序,它动态地重新创建已发布 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 服务时的前缀参数)-showIframe替换已经存在的 iframe 的 src

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

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

于 2013-09-08T19:41:20.563 回答