ออบเจ็กต์ HtmlOutput
ที่แสดงจากสคริปต์ได้ เนื่องจากเหตุผลด้านความปลอดภัย
สคริปต์ต้องไม่ส่ง HTML กลับไปยังเบราว์เซอร์โดยตรง แต่ลูกค้าจะต้องทำความสะอาดข้อมูลใหม่เพื่อให้
ไม่สามารถดำเนินการที่เป็นอันตราย คุณสามารถแสดงผล HTML ที่ปลอดภัยได้ดังนี้
function doGet() { return HtmlService.createHtmlOutput('<b>Hello, world!</b>'); }
HtmlOutput
อาจมี JavaScript และ CSS แบบฝังได้ (นี่เป็นเกณฑ์มาตรฐาน
JavaScript ฝั่งไคลเอ็นต์ที่จัดการ DOM ไม่ใช่ Apps Script) เนื้อหาทั้งหมดนี้
แซนด์บ็อกซ์โดยใช้ iframe
แซนด์บ็อกซ์ ดูข้อมูลเพิ่มเติมได้ที่คำแนะนำเกี่ยวกับข้อจำกัดในบริการ HTMLเมธอด
วิธีการ | ประเภทการแสดงผล | รายละเอียดแบบย่อ |
---|---|---|
addMetaTag(name, content) | HtmlOutput | เพิ่มเมตาแท็กลงในหน้าเว็บ |
append(addedContent) | HtmlOutput | เพิ่มเนื้อหาใหม่ลงในเนื้อหาของ HtmlOutput นี้ |
appendUntrusted(addedContent) | HtmlOutput | เพิ่มเนื้อหาใหม่ลงในเนื้อหาของ HtmlOutput นี้โดยใช้การกำหนดบริบทเป็นอักขระหลีก |
asTemplate() | HtmlTemplate | แสดงผล HtmlTemplate ที่มาจาก HtmlOutput นี้ |
clear() | HtmlOutput | ล้างเนื้อหาปัจจุบัน |
getAs(contentType) | Blob | แสดงข้อมูลภายในออบเจ็กต์นี้เป็น BLOB ที่แปลงเป็นประเภทเนื้อหาที่ระบุ |
getBlob() | Blob | แสดงข้อมูลภายในออบเจ็กต์นี้เป็น BLOB |
getContent() | String | รับเนื้อหาของ HtmlOutput นี้ |
getFaviconUrl() | String | รับ URL สำหรับแท็กลิงก์ไอคอน Fav ที่เพิ่มลงในหน้าโดยการเรียกใช้ setFaviconUrl(iconUrl) |
getHeight() | Integer | ดูความสูงเริ่มต้นของกล่องโต้ตอบที่กำหนดเองใน Google เอกสาร ชีต หรือฟอร์ม |
getMetaTags() | HtmlOutputMetaTag[] | รับอาร์เรย์ของออบเจ็กต์ที่แสดงเมตาแท็กที่เพิ่มลงในหน้าเว็บโดยการเรียกใช้ addMetaTag(name, content) |
getTitle() | String | รับชื่อของหน้าเอาต์พุต |
getWidth() | Integer | ใช้ความกว้างเริ่มต้นของกล่องโต้ตอบที่กำหนดเองใน Google เอกสาร ชีต หรือฟอร์ม |
setContent(content) | HtmlOutput | ตั้งค่าเนื้อหาของ HtmlOutput นี้ |
setFaviconUrl(iconUrl) | HtmlOutput | เพิ่มแท็กลิงก์สําหรับไอคอน Fav ไปยังหน้า |
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)
เพิ่มเมตาแท็กลงในหน้าเว็บ เมตาแท็กที่รวมอยู่ในไฟล์ HTML ของ Apps Script มีดังนี้ ถูกละเว้น อนุญาตเฉพาะเมตาแท็กต่อไปนี้
<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
เพื่อให้ผลลัพธ์เป็นสตริงที่ปลอดภัยโดยไม่มีมาร์กอัปหรือการดำเนินการด้านข้าง ใช้รายการนี้แทน
ต่อท้ายทุกครั้งที่คุณเพิ่มเนื้อหาจากแหล่งที่มาที่ไม่น่าเชื่อถือ เช่น จากผู้ใช้ เพื่อหลีกเลี่ยง
การอนุญาตข้อบกพร่อง Cross-site Scripting (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()
แสดงผล HtmlTemplate
ที่มาจาก HtmlOutput
นี้ วิธีการนี้สามารถใช้เพื่อ
สร้างเทมเพลตอย่างค่อยเป็นค่อยไป การเปลี่ยนแปลง 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"
หากต้องการดูโควต้ารายวันสำหรับ Conversion โปรดดูโควต้าสำหรับ Google บริการ โดเมน Google Workspace ที่สร้างใหม่อาจมีข้อกำหนดที่เข้มงวดขึ้นชั่วคราว โควต้า
พารามิเตอร์
ชื่อ | ประเภท | คำอธิบาย |
---|---|---|
contentType | String | ประเภท MIME ที่จะแปลง สำหรับ BLOB ส่วนใหญ่ 'application/pdf' คือ
เป็นตัวเลือกเดียวที่ใช้ได้ สำหรับรูปภาพในรูปแบบ BMP, GIF, JPEG หรือ PNG ระบบจะใช้ 'image/bmp' , 'image/gif' , 'image/jpeg' หรือ 'image/png' ด้วย
ใช้ได้ ใช้ 'text/markdown' สำหรับเอกสารของ Google เอกสารได้ด้วย |
รีเทิร์น
Blob
— ข้อมูลในรูปแบบ BLOB
getBlob()
getContent()
รับเนื้อหาของ HtmlOutput
นี้
// Log "<b>Hello, world!</b>" var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); Logger.log(output.getContent());
รีเทิร์น
String
— เนื้อหาที่แสดง
getFaviconUrl()
รับ URL สำหรับแท็กลิงก์ไอคอน Fav ที่เพิ่มลงในหน้าโดยการเรียกใช้ setFaviconUrl(iconUrl)
แท็กลิงก์ไอคอน Fav ที่รวมอยู่ในไฟล์ HTML ของ Apps Script โดยตรง
ถูกละเว้น
var output = HtmlService.createHtmlOutput('<b>Hello, world!</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)
ในโค้ดฝั่งไคลเอ็นต์
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setHeight(200); Logger.log(output.getHeight());
รีเทิร์น
Integer
— ความสูงเป็นพิกเซล
getMetaTags()
รับอาร์เรย์ของออบเจ็กต์ที่แสดงเมตาแท็กที่เพิ่มลงในหน้าเว็บโดยการเรียกใช้ addMetaTag(name, content)
เมตาแท็กที่รวมอยู่ในไฟล์ HTML ของ Apps Script มีดังนี้
ถูกละเว้น
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)
เพิ่มแท็กลิงก์สําหรับไอคอน Fav ไปยังหน้า แท็กลิงก์ไอคอน Fav รวมอยู่ในแอปโดยตรง ระบบจะไม่พิจารณาไฟล์ HTML ของสคริปต์
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setFaviconUrl('http://www.example.com/image.png');
พารามิเตอร์
ชื่อ | ประเภท | คำอธิบาย |
---|---|---|
iconUrl | String | URL ของไอคอน Fav ซึ่งมีส่วนขยายรูปภาพแสดงถึงรูปภาพดังกล่าว ประเภท |
รีเทิร์น
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
10. อ่านโหมดแซนด์บ็อกซ์ในสคริปต์ฝั่งไคลเอ็นต์ได้โดยตรวจสอบ 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)
ตั้งชื่อของหน้าเอาต์พุต สำหรับเว็บแอป นี่คือชื่อของทั้งหน้าเว็บ
สำหรับ HtmlOutput
ที่แสดงใน Google ชีต นี่คือชื่อกล่องโต้ตอบ
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 จะใช้โหมด 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
— เอาต์พุตนี้สำหรับการทำสายโซ่