Class HtmlOutput

HTMLOutput

可通过脚本提供的 HtmlOutput 对象。出于安全方面的考虑,脚本无法直接将 HTML 返回浏览器。而是必须对其进行清理,使其无法执行恶意操作。您可以按如下方式返回经过清理的 HTML:

function doGet() {
  return HtmlService.createHtmlOutput('<b>Hello, world!</b>');
}
HtmlOutput 中的代码可以包含嵌入式 JavaScript 和 CSS。(这是操控 DOM 的标准客户端 JavaScript,而不是 Apps 脚本)。所有内容都已使用 iframe 沙盒进行了沙盒化。如需了解详情,请参阅 HTML 服务中的限制指南

方法

方法返回类型简介
addMetaTag(name, content)HtmlOutput向网页添加元标记。
append(addedContent)HtmlOutput向此 HtmlOutput 的内容附加新内容。
appendUntrusted(addedContent)HtmlOutput使用上下文转义方式为此 HtmlOutput 的内容附加新内容。
asTemplate()HtmlTemplate返回由此 HtmlOutput 支持的 HtmlTemplate
clear()HtmlOutput清除当前内容。
getAs(contentType)Blob以转换为指定内容类型的 blob 形式返回此对象中的数据。
getBlob()Blob以 blob 的形式返回此对象中的数据。
getContent()String获取此 HtmlOutput 的内容。
getFaviconUrl()String通过调用 setFaviconUrl(iconUrl) 获取添加到网页的网站图标链接网址。
getHeight()Integer获取 Google 文档、表格或表单中自定义对话框的初始高度。
getMetaTags()HtmlOutputMetaTag[]通过调用 addMetaTag(name, content),获取代表添加到网页的元标记的对象数组。
getTitle()String获取输出页面的标题。
getWidth()Integer获取 Google 文档、表格或表单中自定义对话框的初始宽度。
setContent(content)HtmlOutput设置此 HtmlOutput 的内容。
setFaviconUrl(iconUrl)HtmlOutput将网页图标的链接标记添加到网页中。
setHeight(height)HtmlOutput设置 Google 文档、表格或表单中自定义对话框的初始高度。
setSandboxMode(mode)HtmlOutput此方法现在无效 - 之前,它会设置用于客户端脚本的 sandbox mode
setTitle(title)HtmlOutput设置输出页面的标题。
setWidth(width)HtmlOutput设置 Google 文档、表格或表单中自定义对话框的初始宽度。
setXFrameOptionsMode(mode)HtmlOutput设置网页的 X-Frame-Options 标头的状态,该标头用于控制点击劫持预防。

详细文档

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');

参数

名称类型说明
nameString元标记的名称属性的值。
contentString元标记的内容属性的值。

返回

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());

参数

名称类型说明
addedContentString要附加的内容。

返回

HtmlOutput - 此输出,用于串联。

抛出

Error - 如果 HTML 格式不正确

另请参阅


appendUntrusted(addedContent)

使用上下文转义方式为此 HtmlOutput 的内容附加新内容。

此方法会根据 HtmlOutput 的当前状态正确转义内容,因此结果会生成一个安全字符串,不会产生任何标记或副作用。每当您添加来自不可信来源(例如来自用户的来源)的内容时,都不要使用附加功能,以免意外允许出现跨站脚本攻击 (XSS) 错误,因为附加的内容或标记会导致代码意外执行。

// Log "<b>Hello, world!</b>&lt;p&gt;Hello again, world.&lt;/p&gt;"
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.appendUntrusted('<p>Hello again, world.</p>');
Logger.log(output.getContent());

参数

名称类型说明
addedContentString要附加的内容。

返回

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 网域可能暂时受到更严格的配额约束。

参数

名称类型说明
contentTypeString要转换为的 MIME 类型。对于大多数 blob,'application/pdf' 是唯一有效的选项。对于 BMP、GIF、JPEG 或 PNG 格式的图片,'image/bmp''image/gif''image/jpeg''image/png' 中的任意一种都有效。

返回

Blob - 数据作为 blob。


getBlob()

以 blob 的形式返回此对象中的数据。

返回

Blob - 数据作为 blob。


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>');

参数

名称类型说明
contentString要投放的内容。

返回

HtmlOutput - 此输出,用于串联。

抛出

Error - 如果 HTML 格式不正确


setFaviconUrl(iconUrl)

将网页图标的链接标记添加到网页中。直接包含在 Apps 脚本 HTML 文件中的网站链接链接标记将被忽略。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setFaviconUrl('http://www.example.com/image.png');

参数

名称类型说明
iconUrlString网站图标图片的网址,其中图片扩展名可指示图片类型。

返回

HtmlOutput - 此输出,用于串联。


setHeight(height)

设置 Google 文档、表格或表单中自定义对话框的初始高度。如果 HtmlOutput 作为 Web 应用发布,则该方法不会产生任何影响。如需调整已经打开的对话框的大小,请在客户端代码中调用 google.script.host.setHeight(height)

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setHeight(200);

参数

名称类型说明
heightInteger以像素为单位的新高度;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>

参数

名称类型说明
modeSandboxMode要使用的沙盒模式。

返回

HtmlOutput - 此输出,用于串联。


setTitle(title)

设置输出页面的标题。对于 Web 应用,此字段是整个页面的标题,而对于 Google 表格中显示的 HtmlOutput,是对话框标题。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setTitle('My First Page');

参数

名称类型说明
titleString新标题。

返回

HtmlOutput - 此输出,用于串联。


setWidth(width)

设置 Google 文档、表格或表单中自定义对话框的初始宽度。如果 HtmlOutput 作为 Web 应用发布,则该方法不会产生任何影响。如需调整已经打开的对话框的大小,请在客户端代码中调用 google.script.host.setWidth(width)

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setWidth(200);

参数

名称类型说明
widthInteger以像素为单位的新宽度;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);

参数

名称类型说明
modeXFrameOptionsMode要设置的 XFrame 选项模式。

返回

HtmlOutput - 此输出,用于串联。