可透過指令碼提供的 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 | 中繼標記的內容屬性值。 |
回攻員
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 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)
在頁面中加入網站小圖示的連結標記。系統會忽略直接加入 Apps Script 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
:這是鏈結的輸出內容。