网络应用

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

独立脚本绑定到应用的脚本 Google Workspace 都可以转换为 Web 应用,前提是它们满足以下要求。

针对 Web 应用的要求

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

请求参数

当用户访问应用或程序向应用发送 HTTP GET 请求时,Apps Script 会运行函数 doGet(e)。当程序向应用发送 HTTP POST 请求时,Apps Script 会改为运行 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 ContentService.createTextOutput(params).setMimeType(ContentService.MimeType.JSON);
}

在上述示例中,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. 在“部署配置”下的字段中输入您的网站应用的相关信息。
  4. 点击部署

您可以与希望使用您应用的用户分享 Web 应用网址,前提是您已向他们授予访问权限。

测试 Web 应用部署

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

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

    此网址以 /dev 结尾,只有对脚本拥有编辑权限的用户才能访问。此应用实例始终运行最近保存的代码,并且仅适用于开发期间的测试。

权限

Web 应用的权限取决于您选择的应用执行方式:

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

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

如需在 Google 协作平台中嵌入 Web 应用,您必须先部署该应用。您还需要 Deploy 对话框中的已部署应用的网址

如需将 Web 应用嵌入到网站页面中,请按以下步骤操作:

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

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

Web 应用和浏览器历史记录

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

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

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

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

这些历史记录 API 仅适用于 Web 应用。边栏、对话框或插件不支持显示对话框。我们也不建议在嵌入到 Google 协作平台中的 Web 应用中使用此功能。