如果您为脚本构建界面,则可以将脚本发布为 Web 应用。例如,如果某个脚本允许用户安排与支持团队成员的预约,则最好以 Web 应用的形式呈现,以便用户直接从浏览器访问该脚本。
独立脚本和绑定到 Google Workspace 应用的脚本都可以转换为 Web 应用,只要它们满足以下要求即可。
针对 Web 应用的要求
如果脚本满足以下要求,就可以作为 Web 应用发布:
- 它包含一个
doGet(e)
或doPost(e)
函数。 - 该函数会返回 HTML 服务
HtmlOutput
对象或内容服务TextOutput
对象。
请求参数
当用户访问应用或程序向该应用发送 HTTP GET
请求时,Apps 脚本会运行函数 doGet(e)
。如果某个程序向应用发送 HTTP POST
请求,Apps 脚本会运行 doPost(e)
。在这两种情况下,e
参数都表示事件参数,可以包含有关任何请求参数的信息。下表显示了该事件对象的结构:
字段 | |
---|---|
e.queryString |
网址中查询字符串部分的值,如果未指定查询字符串,则为 name=alice&n=1&n=2 |
e.parameter |
与请求参数对应的键值对的对象。对于具有多个值的参数,仅返回第一个值。 {"name": "alice", "n": "1"} |
e.parameters |
一个类似于 {"name": ["alice"], "n": ["1", "2"]} |
e.pathInfo |
|
e.contextPath |
未使用,始终为空字符串。 |
e.contentLength |
对于 POST 请求,请求正文的长度;对于 GET 请求,则是 332 |
e.postData.length |
与 332 |
e.postData.type |
POST 正文的 MIME 类型 text/csv |
e.postData.contents |
POST 正文的内容文本 Alice,21 |
e.postData.name |
值始终为“postData” postData |
例如,您可以将 username
和 age
等参数传递给网址,如下所示:
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 应用部署,请按以下步骤操作:
- 在脚本项目的右上角,点击部署 > 新建部署。
- 在“选择类型”旁边,依次点击“启用部署类型” > Web 应用。
- 在“部署配置”下的字段中输入 Web 应用的相关信息。
- 点击部署。
您可以将 Web 应用网址分享给想要使用您的应用的用户,前提是您已授予他们访问权限。
测试 Web 应用部署
如需将脚本作为 Web 应用进行测试,请按以下步骤操作:
- 在脚本项目的右上角,依次点击部署 > 测试部署。
- 在“选择类型”旁边,依次点击“启用部署类型” > Web 应用。
- 在 Web 应用网址下方,点击复制。
将该网址粘贴到浏览器中并测试您的 Web 应用。
此网址以
/dev
结尾,只有对脚本拥有编辑权限的用户才能访问。此应用实例始终运行最近保存的代码,且仅用于在开发期间进行测试。
权限
Web 应用的权限因您选择执行应用的方式而异:
- 以我的身份执行应用 - 在这种情况下,无论谁访问 Web 应用,脚本始终以您(脚本的所有者)的身份执行。
- 以访问 Web 应用的用户身份执行应用 - 在这种情况下,脚本会以使用该 Web 应用的活跃用户的身份运行。此权限方法会使 Web 应用在用户授予访问权限时显示脚本所有者的电子邮件地址。
在 Google 协作平台中嵌入您的 Web 应用
要在 Google 协作平台中嵌入 Web 应用,必须先部署该应用。您还需要从 Deploy
对话框中获取已部署的网址。
如需将 Web 应用嵌入到网站页面中,请按以下步骤操作:
- 打开您要在其中添加 Web 应用的 Google 协作平台页面。
- 依次选择插入 > 嵌入网址。
- 粘贴 Web 应用网址,然后点击添加。
Web 应用会显示在页面预览的框架中。当您发布网页时,网站查看者可能需要向 Web 应用授权,然后才能正常执行该应用。未经授权的 Web 应用会向用户显示授权提示。
Web 应用和浏览器历史记录
最好让 Apps 脚本 Web 应用模拟多页应用,或者一个具有通过网址参数控制的动态界面的应用。为了做到这一点,您可以定义一个状态对象来表示应用的界面或页面,并在用户浏览应用时将状态推送到浏览器历史记录中。您还可以监听历史记录事件,以便在用户使用浏览器按钮来回导航时,您的 Web 应用会显示正确的界面。通过在加载时查询网址参数,您可以让应用根据这些参数动态构建其界面,以便用户在特定状态下启动应用。
Apps 脚本提供了两个异步客户端 JavaScript API,可帮助您创建与浏览器历史记录相关联的 Web 应用:
google.script.history
提供的方法可对浏览器历史记录更改进行动态响应。这包括:将状态(您可以定义的简单对象)推送到浏览器历史记录、替换历史记录堆栈中的顶层状态,以及设置监听器回调函数以响应历史记录更改。google.script.url
提供检索当前网页的网址参数和网址片段(如果存在)的方法。
这些历史记录 API 仅适用于 Web 应用。边栏、对话框或插件不支持它们。我们也不建议在嵌入 Google 协作平台的 Web 应用中使用此功能。