可透過指令碼提供的 HtmlOutput
物件。基於安全考量
指令碼無法直接將 HTML 傳回給瀏覽器。他們必須加以清理
且無法執行惡意動作您可以按照下列方式傳回經過清理的 HTML:
function doGet() { return HtmlService.createHtmlOutput('<b>Hello, world!</b>'); }
HtmlOutput
中的程式碼可包含嵌入式 JavaScript 和 CSS。(這是標準做法)
處理 DOM 而非 Apps Script 的用戶端 JavaScript)。所有內容皆
採用沙箱機制 iframe
沙箱機制。詳情請參閱 HTML 服務限制指南。方法
內容詳盡的說明文件
addMetaTag(name, content)
在網頁中加入中繼標記。直接納入 Apps Script 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 | 中繼標記的 content 屬性值。 |
回攻員
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
的目前狀態正確逸出內容。
,這樣結果是沒有標記或邊面的安全字串。使用此 API 取代
請在新增不受信任的來源 (例如使用者) 的內容時附加 ,以避免
您附加了內容或標記,因而不小心允許跨網站指令碼攻擊 (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 的形式傳回這個物件中的資料,做為轉換成指定內容類型的 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' 格式
有效。如果是 Google 文件,'text/markdown' 也是有效的格式。 |
回攻員
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 Script 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
是發布為網頁應用程式,則這個
方法會傳回 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 Script 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
是發布為網頁應用程式,則這個
方法會傳回 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)
在頁面中加入網站小圖示的連結標記。直接加入應用程式的網站小圖示連結標記 系統會忽略指令碼 HTML 檔案。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setFaviconUrl('http://www.example.com/image.png');
參數
名稱 | 類型 | 說明 |
---|---|---|
iconUrl | String | 網站小圖示圖片的網址,其中的圖片額外資訊指出圖片 類型。 |
回攻員
HtmlOutput
:這個輸出項目用於鏈結。
setHeight(height)
設定 Google 中自訂對話方塊的初始高度
。如果 HtmlOutput
是發布為網頁應用程式,則這個
方法不會產生任何效果。如要調整已開啟的對話方塊大小,請呼叫
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)
設定輸出頁面的標題。如果是網頁應用程式,這是指整個網頁的標題;
(Google 試算表顯示的 HtmlOutput
),這是對話方塊標題。
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setTitle('My First Page');
參數
名稱 | 類型 | 說明 |
---|---|---|
title | String | 新名稱。 |
回攻員
HtmlOutput
:這個輸出項目用於鏈結。
setWidth(width)
設定 Google 中自訂對話方塊的初始寬度
。如果 HtmlOutput
是發布為網頁應用程式,則這個
方法不會產生任何效果。如要調整已開啟的對話方塊大小,請呼叫
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 Script 會預設使用 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
:這個輸出項目用於鏈結。