ออบเจ็กต์ HtmlOutput ที่แสดงจากสคริปต์ได้ เนื่องด้วยเหตุผลด้านความปลอดภัย สคริปต์จึงไม่สามารถส่งคืน HTML ไปยังเบราว์เซอร์ได้โดยตรง แต่ต้องล้างข้อมูลเพื่อให้
ไม่สามารถดำเนินการที่เป็นอันตรายได้ คุณสามารถส่งคืน HTML ที่ผ่านการล้างข้อมูลได้ดังนี้
function doGet() { return HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); }
HtmlOutput สามารถมี JavaScript และ CSS แบบฝังได้ (นี่คือ JavaScript ฝั่งไคลเอ็นต์มาตรฐานที่จัดการ DOM ไม่ใช่ Apps Script) เนื้อหาทั้งหมดนี้จะ
อยู่ในแซนด์บ็อกซ์โดยใช้แซนด์บ็อกซ์ iframe ดูข้อมูลเพิ่มเติมได้ที่คำแนะนำเกี่ยวกับข้อจำกัดในบริการ HTMLเมธอด
| วิธีการ | ประเภทการแสดงผล | รายละเอียดแบบย่อ |
|---|---|---|
add | Html | เพิ่มเมตาแท็กลงในหน้า |
append(addedContent) | Html | ต่อท้ายเนื้อหาใหม่กับเนื้อหาของ Html นี้ |
append | Html | ผนวกเนื้อหาใหม่กับเนื้อหาของ Html โดยใช้การหลีกเลี่ยงตามบริบท |
as | Html | แสดง Html ที่ได้รับการสนับสนุนโดย Html นี้ |
clear() | Html | ล้างเนื้อหาปัจจุบัน |
get | Blob | แสดงผลข้อมูลภายในออบเจ็กต์นี้เป็น Blob ที่แปลงเป็นประเภทเนื้อหาที่ระบุ |
get | Blob | ส่งคืนข้อมูลภายในออบเจ็กต์นี้เป็น Blob |
get | String | รับเนื้อหาของ Html นี้ |
get | String | รับ URL สำหรับแท็กลิงก์ไอคอน Fav ที่เพิ่มลงในหน้าโดยการเรียก set |
get | Integer | รับความสูงเริ่มต้นของกล่องโต้ตอบที่กำหนดเองใน Google เอกสาร ชีต หรือฟอร์ม |
get | Html | รับอาร์เรย์ของออบเจ็กต์ที่แสดงแท็กเมตาที่เพิ่มลงในหน้าโดยการเรียกใช้ add |
get | String | รับชื่อของหน้าเอาต์พุต |
get | Integer | รับความกว้างเริ่มต้นของกล่องโต้ตอบที่กำหนดเองใน Google เอกสาร ชีต หรือฟอร์ม |
set | Html | กำหนดเนื้อหาของ Html นี้ |
set | Html | เพิ่มแท็กลิงก์สำหรับ favicon ไปยังหน้า |
set | Html | กำหนดความสูงเริ่มต้นของกล่องโต้ตอบที่กำหนดเองใน Google เอกสาร ชีต หรือฟอร์ม |
set | Html | ตอนนี้วิธีนี้ไม่มีผลแล้ว ก่อนหน้านี้วิธีนี้จะตั้งค่า sandbox
mode ที่ใช้สำหรับสคริปต์ฝั่งไคลเอ็นต์ |
set | Html | กำหนดชื่อของหน้าเอาต์พุต |
set | Html | กำหนดความกว้างเริ่มต้นของกล่องโต้ตอบที่กำหนดเองใน Google เอกสาร, ชีต หรือฟอร์ม |
set | Html | ตั้งค่าสถานะของส่วนหัว X-Frame-Options ของหน้า ซึ่งควบคุมการป้องกันการคลิกแจ็กกิ้ง
|
เอกสารโดยละเอียด
addMetaTag(name, content)
เพิ่มเมตาแท็กลงในหน้า ระบบจะ ไม่สนใจเมตาแท็กที่รวมอยู่ในไฟล์ HTML ของ Apps Script โดยตรง อนุญาตให้ใช้เฉพาะเมตาแท็กต่อไปนี้
<meta name="apple-mobile-web-app-capable" cont>e<nt="..."/ meta name="google-site-ver>i<fication" content="..."/ meta name>=<"mobile-web-app-capable" >content="..."/ meta name="viewport" content="..."/
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); output.addMetaTag('viewport', 'width=device-width, initial-scale=1');
พารามิเตอร์
| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
name | String | ค่าของแอตทริบิวต์ชื่อของแท็ก Meta |
content | String | ค่าของแอตทริบิวต์เนื้อหาของแท็ก Meta |
รีเทิร์น
HtmlOutput — เอาต์พุตนี้สำหรับการเชื่อมโยง
append(addedContent)
ต่อท้ายเนื้อหาใหม่กับเนื้อหาของ HtmlOutput นี้ ใช้สำหรับเนื้อหาจากแหล่งที่มาที่เชื่อถือได้เท่านั้น เนื่องจากไม่ได้มีการหลีกเลี่ยง
// Log &<q>uot;bHello, w<or><l>d!/bpHello again, w<or>ld./p" const output = HtmlService.createHt<m>lOutput('<bH>ello, world!/b'<)>; output.append(<9;>pHello again, world./p'); Logger.log(output.getContent());
พารามิเตอร์
| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
added | String | เนื้อหาที่จะต่อท้าย |
รีเทิร์น
HtmlOutput — เอาต์พุตนี้สำหรับการเชื่อมโยง
ส่ง
Error — หาก HTML มีรูปแบบไม่ถูกต้อง
ดูเพิ่มเติม
appendUntrusted(addedContent)
ผนวกเนื้อหาใหม่กับเนื้อหาของ HtmlOutput โดยใช้การหลีกเลี่ยงตามบริบท
เมธอดนี้จะหลีกเลี่ยงเนื้อหาอย่างถูกต้องตามสถานะปัจจุบันของ HtmlOutput, เพื่อให้ผลลัพธ์เป็นสตริงที่ปลอดภัยโดยไม่มีมาร์กอัปหรือผลข้างเคียง ใช้ฟังก์ชันนี้แทนการใช้
append ทุกครั้งที่คุณเพิ่มเนื้อหาจากแหล่งที่มาที่ไม่น่าเชื่อถือ เช่น จากผู้ใช้ เพื่อหลีกเลี่ยง
การอนุญาตข้อบกพร่องของ Cross-site Scripting (XSS) โดยไม่ตั้งใจ ซึ่งเนื้อหาหรือมาร์กอัปที่คุณผนวก
ทำให้เกิดการเรียกใช้โค้ดที่ไม่คาดคิด
// Log &<q>uot;bHello, w<or>&ld!/&blt;pgt;Hello again, w&orld.</pgt;" const output = HtmlService.createHt<m>lOutput('<bH>ello, world!/b'); output<.>appendUntrusted(<9;>pHello again, world./p'); Logger.log(output.getContent());
พารามิเตอร์
| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
added | String | เนื้อหาที่จะต่อท้าย |
รีเทิร์น
HtmlOutput — เอาต์พุตนี้สำหรับการเชื่อมโยง
ส่ง
Error — หาก HTML มีรูปแบบไม่ถูกต้องอย่างมาก
ดูเพิ่มเติม
asTemplate()
แสดง HtmlTemplate ที่ได้รับการสนับสนุนโดย HtmlOutput นี้ คุณสามารถใช้วิธีนี้เพื่อ
สร้างเทมเพลตทีละขั้นได้ การเปลี่ยนแปลงในอนาคตของ HtmlOutput จะส่งผลต่อเนื้อหาของ
HtmlTemplate ด้วย
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); const template = output.asTemplate();
รีเทิร์น
HtmlTemplate — HtmlTemplate ใหม่
clear()
ล้างเนื้อหาปัจจุบัน
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); output.clear();
รีเทิร์น
HtmlOutput — เอาต์พุตนี้สำหรับการเชื่อมโยง
getAs(contentType)
แสดงผลข้อมูลภายในออบเจ็กต์นี้เป็น Blob ที่แปลงเป็นประเภทเนื้อหาที่ระบุ วิธีนี้จะเพิ่มนามสกุลที่เหมาะสมให้กับชื่อไฟล์ เช่น "myfile.pdf" อย่างไรก็ตาม ระบบจะ ถือว่าส่วนของชื่อไฟล์ที่อยู่หลังจุดสุดท้าย (หากมี) เป็นนามสกุลที่มีอยู่ ซึ่งควรแทนที่ ดังนั้น "ShoppingList.12.25.2014" จะกลายเป็น "ShoppingList.12.25.pdf"
หากต้องการดูโควต้า Conversion รายวัน โปรดดูโควต้าสำหรับบริการของ Google โดเมน Google Workspace ที่สร้างขึ้นใหม่จะอยู่ภายใต้โควต้าที่เข้มงวดกว่าชั่วคราว
พารามิเตอร์
| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
content | 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 &<q>uot;bHello, w<or>ld!/b" const output = HtmlService.createHt<m>lOutput('<bH>ello, world!/b'); Logger.log(output.getContent());
รีเทิร์น
String — เนื้อหาที่แสดง
getFaviconUrl()
รับ URL สำหรับแท็กลิงก์ไอคอน Fav ที่เพิ่มลงในหน้าโดยการเรียก setFaviconUrl(iconUrl) ระบบจะไม่สนใจแท็กลิงก์ไอคอน Fav ที่รวมอยู่ในไฟล์ HTML ของ Apps Script โดยตรง
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); output.setFaviconUrl('http://www.example.com/image.png'); Logger.log(output.getFaviconUrl());
รีเทิร์น
String — URL ของรูปภาพไอคอน Fav
getHeight()
รับความสูงเริ่มต้นของกล่องโต้ตอบที่กำหนดเองใน Google เอกสาร ชีต หรือฟอร์ม หากHtmlOutputเผยแพร่เป็นเว็บแอปแทน วิธีนี้จะแสดงผล null หากต้องการปรับขนาดกล่องโต้ตอบที่เปิดอยู่แล้ว ให้เรียกใช้
google.script.host.setHeight(height) ในโค้ดฝั่งไคลเอ็นต์
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); output.setHeight(200); Logger.log(output.getHeight());
รีเทิร์น
Integer — ความสูงเป็นพิกเซล
getMetaTags()
รับอาร์เรย์ของออบเจ็กต์ที่แสดงแท็กเมตาที่เพิ่มลงในหน้าโดยการเรียกใช้ addMetaTag(name, content) ระบบจะ
ไม่สนใจเมตาแท็กที่รวมอยู่ในไฟล์ HTML ของ Apps Script โดยตรง
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); output.addMetaTag('viewport', 'width=device-width, initial-scale=1'); const tags = output.getMetaT<ags(); Logger.log( '>meta name="%s" content="%s"/', tags[0].getName(), tags[0].getContent(), );
รีเทิร์น
HtmlOutputMetaTag[] — อาร์เรย์ของออบเจ็กต์ที่แสดงเมตาแท็กที่เพิ่มลงในหน้าโดยการเรียก addMetaTag(name, content)
getTitle()
รับชื่อของหน้าเอาต์พุต โปรดทราบว่าระบบจะไม่สนใจองค์ประกอบ HTML <title>
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); Logger.log(output.getTitle());
รีเทิร์น
String — ชื่อของหน้าเว็บ
getWidth()
รับความกว้างเริ่มต้นของกล่องโต้ตอบที่กำหนดเองใน Google เอกสาร ชีต หรือฟอร์ม หากHtmlOutputเผยแพร่เป็นเว็บแอปแทน วิธีนี้จะแสดงผล null หากต้องการปรับขนาดกล่องโต้ตอบที่เปิดอยู่แล้ว ให้เรียกใช้
google.script.host.setWidth(width) ในโค้ดฝั่งไคลเอ็นต์
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); output.setWidth(200); Logger.log(output.getWidth());
รีเทิร์น
Integer — ความกว้างเป็นพิกเซล
setContent(content)
กำหนดเนื้อหาของ HtmlOutput นี้
const output = HtmlService.createHtmlOutput(); output.setContent(&<#>39;bHello, wo<rl>d!/b');
พารามิเตอร์
| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
content | String | เนื้อหาที่จะแสดง |
รีเทิร์น
HtmlOutput — เอาต์พุตนี้สำหรับการเชื่อมโยง
ส่ง
Error — หาก HTML มีรูปแบบไม่ถูกต้อง
setFaviconUrl(iconUrl)
เพิ่มแท็กลิงก์สำหรับ favicon ไปยังหน้า ระบบจะไม่สนใจแท็กลิงก์ favicon ที่รวมอยู่ในไฟล์ HTML ของ Apps Script โดยตรง
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); output.setFaviconUrl('http://www.example.com/image.png');
พารามิเตอร์
| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
icon | String | URL ของรูปภาพ Favicon โดยมีส่วนขยายรูปภาพที่ระบุประเภทรูปภาพ |
รีเทิร์น
HtmlOutput — เอาต์พุตนี้สำหรับการเชื่อมโยง
setHeight(height)
กำหนดความสูงเริ่มต้นของกล่องโต้ตอบที่กำหนดเองใน Google เอกสาร ชีต หรือฟอร์ม หากเผยแพร่ HtmlOutput เป็นเว็บแอปแทน วิธีนี้จะไม่มีผล หากต้องการปรับขนาดกล่องโต้ตอบที่เปิดอยู่แล้ว ให้เรียกใช้
google.script.host.setHeight(height) ในโค้ดฝั่งไคลเอ็นต์
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/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 | Sandbox | โหมดแซนด์บ็อกซ์ที่จะใช้ |
รีเทิร์น
HtmlOutput — เอาต์พุตนี้สำหรับการเชื่อมโยง
setTitle(title)
กำหนดชื่อของหน้าเอาต์พุต สำหรับเว็บแอป นี่คือชื่อของทั้งหน้า ส่วนสำหรับ HtmlOutput ที่แสดงใน Google ชีต นี่คือชื่อกล่องโต้ตอบ
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); output.setTitle('My First Page');
พารามิเตอร์
| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
title | String | ชื่อใหม่ |
รีเทิร์น
HtmlOutput — เอาต์พุตนี้สำหรับการเชื่อมโยง
setWidth(width)
กำหนดความกว้างเริ่มต้นของกล่องโต้ตอบที่กำหนดเองใน Google เอกสาร, ชีต หรือฟอร์ม หากเผยแพร่ HtmlOutput เป็นเว็บแอปแทน วิธีนี้จะไม่มีผล หากต้องการปรับขนาดกล่องโต้ตอบที่เปิดอยู่แล้ว ให้เรียกใช้
google.script.host.setWidth(width) ในโค้ดฝั่งไคลเอ็นต์
const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/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). const output = HtmlService.createHtmlOutput(&<#>39;bHello, wo<rl>d!/b'); output.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
พารามิเตอร์
| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
mode | XFrameOptionsMode | โหมดตัวเลือก XFrame ที่จะตั้งค่า |
รีเทิร์น
HtmlOutput — เอาต์พุตนี้สำหรับการเชื่อมโยง