可通过脚本提供的 HtmlOutput
对象。出于安全方面的考虑,脚本无法直接将 HTML 返回浏览器。而是必须对其进行清理,使其无法执行恶意操作。您可以按如下方式返回经过清理的 HTML:
function doGet() { return HtmlService.createHtmlOutput('<b>Hello, world!</b>'); }
HtmlOutput
中的代码可以包含嵌入式 JavaScript 和 CSS。(这是操控 DOM 的标准客户端 JavaScript,而不是 Apps 脚本)。所有内容都已使用 iframe 沙盒进行了沙盒化。如需了解详情,请参阅 HTML 服务中的限制指南。方法
详细文档
addMetaTag(name, content)
向网页添加元标记。直接包含在 Apps 脚本 HTML 文件中的元标记会被忽略。仅允许使用以下元标记:
<meta name="apple-mobile-web-app-capable" content="..."/> <meta name="google-site-verification" content="..."/> <meta name="mobile-web-app-capable" content="..."/> <meta name="viewport" content="..."/>
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.addMetaTag('viewport', 'width=device-width, initial-scale=1');
参数
名称 | 类型 | 说明 |
---|---|---|
name | String | 元标记的名称属性的值。 |
content | String | 元标记的内容属性的值。 |
返回
HtmlOutput
- 此输出,用于串联。
append(addedContent)
向此 HtmlOutput
的内容附加新内容。请仅对可信来源的内容使用此标记,因为系统不会转义。
// Log "<b>Hello, world!</b><p>Hello again, world.</p>" var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.append('<p>Hello again, world.</p>'); Logger.log(output.getContent());
参数
名称 | 类型 | 说明 |
---|---|---|
addedContent | String | 要附加的内容。 |
返回
HtmlOutput
- 此输出,用于串联。
抛出
Error
- 如果 HTML 格式不正确
另请参阅
appendUntrusted(addedContent)
使用上下文转义方式为此 HtmlOutput
的内容附加新内容。
此方法会根据 HtmlOutput
的当前状态正确转义内容,因此结果会生成一个安全字符串,不会产生任何标记或副作用。每当您添加来自不可信来源(例如来自用户的来源)的内容时,都不要使用附加功能,以免意外允许出现跨站脚本攻击 (XSS) 错误,因为附加的内容或标记会导致代码意外执行。
// Log "<b>Hello, world!</b><p>Hello again, world.</p>" var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.appendUntrusted('<p>Hello again, world.</p>'); Logger.log(output.getContent());
参数
名称 | 类型 | 说明 |
---|---|---|
addedContent | String | 要附加的内容。 |
返回
HtmlOutput
- 此输出,用于串联。
抛出
Error
- 如果 HTML 格式有误
另请参阅
asTemplate()
返回由此 HtmlOutput
支持的 HtmlTemplate
。此方法可用于逐步构建模板。将来对 HtmlOutput
的更改也会影响 HtmlTemplate
的内容。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); var template = output.asTemplate();
返回
HtmlTemplate
- 新的 HtmlTemplate
。
clear()
清除当前内容。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.clear();
返回
HtmlOutput
- 此输出,用于串联。
getAs(contentType)
以转换为指定内容类型的 blob 形式返回此对象中的数据。此方法会在文件名中添加适当的扩展名,例如 "myfile.pdf"。但是,它假定文件名中最后一个句号后面的部分(如果有)是应替换的现有扩展名。因此,“ShoppingList.12.25.2014”将变为“ShoppingList.12.25.pdf”。
如需查看转化的每日配额,请参阅 Google 服务的配额。新创建的 Google Workspace 网域可能暂时受到更严格的配额约束。
参数
名称 | 类型 | 说明 |
---|---|---|
contentType | String | 要转换为的 MIME 类型。对于大多数 blob,'application/pdf' 是唯一有效的选项。对于 BMP、GIF、JPEG 或 PNG 格式的图片,'image/bmp' 、'image/gif' 、'image/jpeg' 或 'image/png' 中的任意一种都有效。 |
返回
Blob
- 数据作为 blob。
getBlob()
getContent()
获取此 HtmlOutput
的内容。
// Log "<b>Hello, world!</b>" var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); Logger.log(output.getContent());
返回
String
- 提供的内容。
getFaviconUrl()
通过调用 setFaviconUrl(iconUrl)
获取添加到网页的网站图标链接网址。直接包含在 Apps 脚本 HTML 文件中的网站链接链接标记将被忽略。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setFaviconUrl('http://www.example.com/image.png'); Logger.log(output.getFaviconUrl();
返回
String
- 网站图标图片的网址。
getHeight()
获取 Google 文档、表格或表单中自定义对话框的初始高度。如果 HtmlOutput
作为 Web 应用发布,此方法将返回 null
。如需调整已经打开的对话框的大小,请在客户端代码中调用 google.script.host.setHeight(height)
。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setHeight(200); Logger.log(output.getHeight());
返回
Integer
- 高度(以像素为单位)。
getMetaTags()
通过调用 addMetaTag(name, content)
,获取代表添加到网页的元标记的对象数组。直接包含在 Apps 脚本 HTML 文件中的元标记会被忽略。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.addMetaTag('viewport', 'width=device-width, initial-scale=1'); var tags = output.getMetaTags(); Logger.log('<meta name="%s" content="%s"/>', tags[0].getName(), tags[0].getContent());
返回
HtmlOutputMetaTag[]
- 表示通过调用 addMetaTag(name, content)
添加到网页的元标记的对象数组。
getTitle()
获取输出页面的标题。请注意,<title> HTML 元素将被忽略。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); Logger.log(output.getTitle());
返回
String
- 网页的标题。
getWidth()
获取 Google 文档、表格或表单中自定义对话框的初始宽度。如果 HtmlOutput
作为 Web 应用发布,此方法将返回 null
。如需调整已经打开的对话框的大小,请在客户端代码中调用 google.script.host.setWidth(width)
。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setWidth(200); Logger.log(output.getWidth());
返回
Integer
- 以像素为单位的宽度。
setContent(content)
设置此 HtmlOutput
的内容。
var output = HtmlService.createHtmlOutput(); output.setContent('<b>Hello, world!</b>');
参数
名称 | 类型 | 说明 |
---|---|---|
content | String | 要投放的内容。 |
返回
HtmlOutput
- 此输出,用于串联。
抛出
Error
- 如果 HTML 格式不正确
setFaviconUrl(iconUrl)
将网页图标的链接标记添加到网页中。直接包含在 Apps 脚本 HTML 文件中的网站链接链接标记将被忽略。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setFaviconUrl('http://www.example.com/image.png');
参数
名称 | 类型 | 说明 |
---|---|---|
iconUrl | String | 网站图标图片的网址,其中图片扩展名可指示图片类型。 |
返回
HtmlOutput
- 此输出,用于串联。
setHeight(height)
设置 Google 文档、表格或表单中自定义对话框的初始高度。如果 HtmlOutput
作为 Web 应用发布,则该方法不会产生任何影响。如需调整已经打开的对话框的大小,请在客户端代码中调用 google.script.host.setHeight(height)
。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setHeight(200);
参数
名称 | 类型 | 说明 |
---|---|---|
height | Integer | 以像素为单位的新高度;null 会返回默认值。 |
返回
HtmlOutput
- 此输出,用于串联。
setSandboxMode(mode)
此方法现在无效 - 之前,它会设置用于客户端脚本的 sandbox
mode
。为避免向用户投放恶意 HTML 或 JavaScript,通过 HTML 服务提供的客户端代码会在对代码施加限制的安全沙盒中执行。最初,该方法允许脚本作者在不同的沙盒版本之间进行选择,但现在,无论设置了何种沙盒模式,所有脚本现在都使用 IFRAME
模式。如需了解详情,请参阅 HTML 服务限制指南。
IFRAME
模式施加的限制比其他沙盒模式少得多,运行速度最快,但在某些旧版浏览器(包括 Internet Explorer 9)中根本不起作用。通过检查 google.script.sandbox.mode
,可以在客户端脚本中读取沙盒模式。请注意,此属性会返回客户端上的实际模式。如果用户浏览器不支持所请求的模式,则该模式可能与服务器上请求的模式不同。
<!-- Read the sandbox mode (in a client-side script). --> <script> alert(google.script.sandbox.mode); </script>
参数
名称 | 类型 | 说明 |
---|---|---|
mode | SandboxMode | 要使用的沙盒模式。 |
返回
HtmlOutput
- 此输出,用于串联。
setTitle(title)
设置输出页面的标题。对于 Web 应用,此字段是整个页面的标题,而对于 Google 表格中显示的 HtmlOutput
,是对话框标题。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setTitle('My First Page');
参数
名称 | 类型 | 说明 |
---|---|---|
title | String | 新标题。 |
返回
HtmlOutput
- 此输出,用于串联。
setWidth(width)
设置 Google 文档、表格或表单中自定义对话框的初始宽度。如果 HtmlOutput
作为 Web 应用发布,则该方法不会产生任何影响。如需调整已经打开的对话框的大小,请在客户端代码中调用 google.script.host.setWidth(width)
。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setWidth(200);
参数
名称 | 类型 | 说明 |
---|---|---|
width | Integer | 以像素为单位的新宽度;null 会返回默认值。 |
返回
HtmlOutput
- 此输出,用于串联。
setXFrameOptionsMode(mode)
设置网页的 X-Frame-Options
标头的状态,该标头用于控制点击劫持预防措施。
通过设置 XFrameOptionsMode.ALLOWALL
,任何网站 iframe 页面都可以访问,因此开发者应实现自己的保护措施,以防范点击劫持。
如果脚本未设置 X-Frame-Options
模式,Apps 脚本会使用 XFrameOptionsMode.DEFAULT
模式作为默认值。
// Serve HTML with no X-Frame-Options header (in Apps Script server-side code). var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
参数
名称 | 类型 | 说明 |
---|---|---|
mode | XFrameOptionsMode | 要设置的 XFrame 选项模式。 |
返回
HtmlOutput
- 此输出,用于串联。