Web 应用

如果您为脚本构建了界面,则可以将该脚本作为 Web 应用发布。例如,如果允许用户安排与支持团队成员的预约,则该脚本最好呈现为 Web 应用,以便用户直接从其浏览器访问。

独立脚本与应用绑定的脚本只要符合以下要求,都可以转换为 Web 应用。

Web 应用的要求

如果脚本符合以下要求,则可作为 Web 应用发布:

请求参数

当用户访问应用或程序向应用发送 HTTP GET 请求时,Apps 脚本会运行 doGet(e) 函数。当程序向应用发送 HTTP POST 请求时,Apps 脚本会改为运行 doPost(e)。在这两种情况下,e 参数都表示可包含任何请求参数相关信息的事件参数。下表中显示了事件对象的结构:

字段
e.queryString

网址的查询字符串部分的值,如果未指定查询字符串,则为 null

name=alice&n=1&n=2
e.parameter

与请求参数对应的键值对对象。对于具有多个值的参数,仅返回第一个值。

{"name": "alice", "n": "1"}
e.parameters

一个与 e.parameter 类似的对象,但每个键都有一个值数组

{"name": ["alice"], "n": ["1", "2"]}
e.pathInfo

/exec/dev 后面的网址路径。 例如,如果网址路径以 /exec/hello 结尾,则路径信息为 hello

e.contextPath 不使用,始终为空字符串。
e.contentLength

POST 请求的请求正文长度,或 GET 请求的 -1 长度

332
e.postData.length

e.contentLength 相同

332
e.postData.type

POST 正文的 MIME 类型

text/csv
e.postData.contents

POST 正文的内容文本

Alice,21
e.postData.name

值“postData”

postData

例如,您可以将 usernameage 等参数传递到网址,如下所示:

https://script.google.com/.../exec?username=jsmith&age=21

然后,您可以按如下所示显示参数:

function doGet(e) {
  var params = JSON.stringify(e);
  return HtmlService.createHtmlOutput(params);
}

在上面的示例中,doGet(e) 返回以下输出:

{
  "queryString": "username=jsmith&age=21",
  "parameter": {
    "username": "jsmith",
    "age": "21"
  },
  "contextPath": "",
  "parameters": {
    "username": [
      "jsmith"
    ],
    "age": [
      "21"
    ]
  },
  "contentLength": -1
}

将脚本部署为 Web 应用

如需将脚本部署为 Web 应用,请按以下步骤操作:

  1. 在脚本项目的右上角,点击部署 > 新建部署
  2. 在“选择类型”旁边,依次点击“启用部署类型” > Web 应用
  3. 在“Deployment configuration”(部署配置)下的字段中输入有关您 Web 应用的信息。
  4. 点击部署

您可以将 Web 应用网址分享给想要使用该应用的用户,前提是您授予他们访问权限。

测试 Web 应用部署

如需将脚本作为 Web 应用进行测试,请按以下步骤操作:

  1. 在脚本项目的右上角,点击部署 > 测试部署
  2. 在“选择类型”旁边,依次点击“启用部署类型” > Web 应用
  3. 在 Web 应用网址下,点击复制
  4. 将该网址粘贴到浏览器中并测试您的 Web 应用。

    此网址以 /dev 结尾,仅拥有脚本编辑权限的用户可以访问。该应用的这个实例始终运行最新保存的代码,仅用于开发期间进行测试。

权限

Web 应用的权限因您选择执行该应用的方式而异:

  • 以我的身份执行应用 - 在这种情况下,脚本始终以您(即脚本的所有者)的身份执行,无论谁访问 Web 应用都是如此。
  • 以 Web 应用用户身份执行应用 - 在这种情况下,脚本将以 Web 应用的用户身份的身份运行。此权限方法会导致 Web 应用在用户授予访问权限时,显示脚本所有者的电子邮件。

在 Google 协作平台中嵌入您的 Web 应用

您还可以在传统版新版 Google 协作平台中嵌入 Web 应用。

在新版协作平台中嵌入 Web 应用

如需嵌入 Web 应用,必须先对其进行部署。您还需要 Deploy 对话框中的已部署的网址

如需将 Web 应用嵌入到新版 Google 协作平台页面中,请按以下步骤操作:

  1. 打开您要添加 Web 应用的“网站”页面。
  2. 依次选择插入 > 嵌入网址
  3. 粘贴 Web 应用网址,然后点击添加

Web 应用会显示在页面预览中的框架中。当您发布该网页时,您的网站查看者可能需要先对其授权,然后它才能正常执行网页。未经授权的 Web 应用会向用户显示授权提示。

在传统版协作平台中嵌入 Web 应用

您可以将脚本绑定传统版 Google 协作平台,就像将脚本绑定到 Google 文档或表格一样。如需创建绑定脚本,请访问您的网站,点击 设置 齿轮图标,然后选择管理网站。在“管理网站”页面上,点击左侧导航栏中的 Apps 脚本,然后点击添加新脚本按钮。此操作会在 Apps 脚本编辑器中打开一个新脚本,您可以在其中编写和部署 Web 应用。

您也可以将 Web 应用嵌入到页面中。您可以将 Web 应用绑定到网站,也可以使用您知道相应网址的任何 Web 应用。如需将 Web 应用嵌入 Google 协作平台页面,请按以下步骤操作:

  1. 打开一个您有权编辑的现有网站,或创建一个新网站。
  2. 导航到您的网站中要嵌入 Web 应用的页面。
  3. 点击修改图标,然后点击插入 > Google Apps 脚本
  4. 从列表中选择代表您的 Web 应用的脚本。如果您的 Web 应用未绑定到此网站,您可以粘贴 Web 应用网址。
  5. 点击选择按钮,在下一个对话框中选择所需的选项,然后点击保存
  6. 保存对页面所做的更改,然后您应该会看到 Web 应用嵌入到“网站”页面中。

Web 应用和浏览器历史记录

最好让 Apps 脚本 Web 应用模拟多页应用,或者使应用具有通过网址参数控制的动态界面。为了实现这一目标,您可以定义一个状态对象来表示应用的界面或页面,并在用户浏览应用时将状态推送到浏览器历史记录中。您还可以监听历史记录事件,以便 Web 应用在用户使用浏览器按钮来回导航时显示正确的界面。通过在加载时查询网址参数,您可以让应用根据这些参数动态构建其界面,从而允许用户以特定状态启动应用。

Apps 脚本提供了两个异步客户端 JavaScript API,用于协助创建与浏览器历史记录相关联的 Web 应用:

  • google.script.history 提供了允许对浏览器历史记录更改进行动态响应的方法。这包括:将状态(您可以定义的简单对象)推送到浏览器历史记录,替换历史记录堆栈中的顶层状态,以及设置监听器回调函数来响应历史记录更改。

  • google.script.url 提供了检索当前页面的网址参数和网址片段(如果存在)的方法。

这些 History API 仅适用于 Web 应用。而不适用于边栏、对话框或插件。此外,也不建议在嵌入 Google 协作平台的 Web 应用中使用该功能。