หากสร้างอินเทอร์เฟซผู้ใช้สําหรับสคริปต์ คุณจะเผยแพร่สคริปต์เป็นเว็บแอปได้ เช่น สคริปต์ที่ทําให้ผู้ใช้กําหนดเวลาการนัดหมายกับสมาชิกทีมสนับสนุนได้จะแสดงเป็นเว็บแอปที่ดีที่สุดเพื่อให้ผู้ใช้เข้าถึงสคริปต์นั้นได้โดยตรงจากเบราว์เซอร์
ทั้งสคริปต์แบบสแตนด์อโลนและสคริปต์ที่เชื่อมโยงกับ Google Workspace แอปพลิเคชันสามารถเปลี่ยนเป็นเว็บแอปได้ ตราบใดที่เป็นไปตามข้อกําหนดด้านล่าง
ข้อกําหนดสําหรับเว็บแอป
คุณสามารถเผยแพร่สคริปต์เป็นเว็บแอปได้หากเป็นไปตามข้อกําหนดต่อไปนี้
- ซึ่งมีฟังก์ชัน
doGet(e)
หรือdoPost(e)
- ฟังก์ชันนี้จะแสดงผลออบเจ็กต์ บริการ HTML
HtmlOutput
หรือออบเจ็กต์ บริการเนื้อหา
พารามิเตอร์คําขอ
เมื่อผู้ใช้เข้าชมแอปหรือโปรแกรมส่งคําขอ HTTP ไปยังแอป GET
Apps Script จะเรียกใช้ฟังก์ชัน doGet(e)
เมื่อโปรแกรมส่งคําขอ HTTP สําหรับ POST
แอป Apps Script จะเรียกใช้ doPost(e)
แทน ในทั้ง 2 กรณี อาร์กิวเมนต์ e
แสดงถึงพารามิเตอร์เหตุการณ์ที่อาจประกอบด้วยข้อมูลเกี่ยวกับพารามิเตอร์คําขอ โครงสร้างของออบเจ็กต์เหตุการณ์จะแสดงในตารางด้านล่างนี้
ช่อง | |
---|---|
e.queryString |
ค่าของส่วนสตริงคําค้นหาของ URL หรือ name=alice&n=1&n=2 |
e.parameter |
ออบเจ็กต์ของคู่คีย์/ค่าที่ตรงกับพารามิเตอร์คําขอ ระบบจะแสดงผลเฉพาะค่าแรกสําหรับพารามิเตอร์ที่มีหลายค่า {"name": "alice", "n": "1"} |
e.parameters |
ออบเจ็กต์ที่คล้ายกับ {"name": ["alice"], "n": ["1", "2"]} |
e.pathInfo |
เส้นทาง URL หลัง |
e.contextPath |
ไม่ใช้ เป็นสตริงว่างเสมอ |
e.contentLength |
ความยาวของเนื้อหาคําขอสําหรับคําขอ POST หรือ 332 |
e.postData.length |
เหมือนกับ 332 |
e.postData.type |
ประเภท MIME ของเนื้อหา POST text/csv |
e.postData.contents |
ข้อความเนื้อหาของเนื้อหา POST Alice,21 |
e.postData.name |
ค่า "postData" เสมอ postData |
ตัวอย่างเช่น คุณสามารถส่งพารามิเตอร์ เช่น username
และ age
ไปยัง URL ตามที่แสดงด้านล่าง
https://script.google.com/.../exec?username=jsmith&age=21
จากนั้นจึงแสดงพารามิเตอร์ดังนี้
function doGet(e) {
var params = JSON.stringify(e);
return HtmlService.createHtmlOutput(params);
}
ในตัวอย่างข้างต้น doGet(e)
จะแสดงผลเอาต์พุตต่อไปนี้
{
"queryString": "username=jsmith&age=21",
"parameter": {
"username": "jsmith",
"age": "21"
},
"contextPath": "",
"parameters": {
"username": [
"jsmith"
],
"age": [
"21"
]
},
"contentLength": -1
}
ทําให้สคริปต์ใช้งานได้เป็นเว็บแอป
หากต้องการทําให้สคริปต์ใช้งานได้เป็นเว็บแอป ให้ทําตามขั้นตอนต่อไปนี้
- คลิกทําให้ใช้งานได้ > การติดตั้งใช้งานใหม่ที่ด้านขวาบนของโปรเจ็กต์สคริปต์
- คลิกเปิดใช้ประเภทการติดตั้งใช้งานถัดจาก "เลือกประเภท" > เว็บแอป
- ป้อนข้อมูลเกี่ยวกับเว็บแอปในช่องใต้ "การกําหนดค่าการทําให้ใช้งานได้"
- คลิกทําให้ใช้งานได้
คุณสามารถแชร์ URL ของเว็บแอปกับผู้ที่ต้องการใช้แอป หากคุณให้สิทธิ์เข้าถึงแก่คุณ
ทดสอบการทําให้เว็บแอปใช้งานได้
หากต้องการทดสอบสคริปต์เป็นเว็บแอป ให้ทําตามขั้นตอนด้านล่าง
- คลิกทําให้ใช้งานได้ > ทดสอบการติดตั้งใช้งานที่ด้านขวาบนของโปรเจ็กต์สคริปต์
- คลิกเปิดใช้ประเภทการติดตั้งใช้งานถัดจาก "เลือกประเภท" > เว็บแอป
- ใต้ URL ของเว็บแอป ให้คลิกคัดลอก
วาง URL ในเบราว์เซอร์และทดสอบเว็บแอป
URL นี้ลงท้ายด้วย
/dev
และผู้ใช้ที่มีสิทธิ์แก้ไขสคริปต์เท่านั้นจึงจะเข้าถึงได้ อินสแตนซ์ของแอปนี้จะเรียกใช้โค้ดที่บันทึกไว้ล่าสุดเสมอ และมีไว้สําหรับการทดสอบระหว่างการพัฒนาเท่านั้น
สิทธิ์
สิทธิ์ของเว็บแอปจะแตกต่างกันไปตามวิธีที่คุณเลือกใช้แอป
- เรียกใช้แอปในฐานะฉัน - ในกรณีนี้ สคริปต์จะทํางานตามที่คุณเป็นเจ้าของสคริปต์เสมอ ไม่ว่าใครจะเข้าถึงเว็บแอปก็ตาม
- เรียกใช้แอปขณะที่ผู้ใช้เข้าถึงเว็บแอป - ในกรณีนี้ สคริปต์จะทํางานภายใต้ข้อมูลระบุตัวตนของผู้ใช้ที่ใช้งานอยู่โดยใช้เว็บแอป แนวทางการใช้สิทธิ์นี้จะทําให้เว็บแอปแสดงอีเมลของเจ้าของสคริปต์เมื่อผู้ใช้ให้สิทธิ์เข้าถึง
การฝังเว็บแอปใน Google Sites
นอกจากนี้คุณยังฝังเว็บแอปได้ทั้งใน Google Sites แบบคลาสสิกและเวอร์ชันใหม่
การฝังเว็บแอปใน Sites แบบใหม่
หากต้องการฝังเว็บแอป จะต้องติดตั้งใช้งานเว็บแอปนั้นก่อน และต้องใช้ URL ที่ทําให้ใช้งานได้จากกล่องโต้ตอบ Deploy
ด้วย
หากต้องการฝังเว็บแอปในหน้า Sites ใหม่ ให้ทําตามขั้นตอนต่อไปนี้
- เปิดหน้า Sites ที่ต้องการเพิ่มเว็บแอป
- เลือกแทรก > ฝัง URL
- วาง URL เว็บแอป แล้วคลิกเพิ่ม
เว็บแอปจะปรากฏในเฟรมในหน้าตัวอย่างของหน้าเว็บ เมื่อเผยแพร่หน้าเว็บ ผู้ชมเว็บไซต์อาจจําเป็นต้องให้สิทธิ์เว็บแอปก่อนที่จะดําเนินการตามปกติ เว็บแอปที่ไม่ได้รับอนุญาตจะแสดงข้อความแจ้งการให้สิทธิ์แก่ผู้ใช้
การฝังเว็บแอปใน Sites แบบคลาสสิก
คุณสามารถเชื่อมโยงสคริปต์กับเว็บไซต์จาก Google Sites แบบคลาสสิกในลักษณะเดียวกันกับการเชื่อมโยงสคริปต์กับ Google เอกสารหรือชีตได้ หากต้องการสร้างสคริปต์สคริปต์ ให้ไปที่เว็บไซต์ คลิกไอคอนรูปเฟือง
แล้วเลือกจัดการเว็บไซต์ ในหน้าจัดการเว็บไซต์ ให้คลิกแอปสคริปต์ในการนําทางด้านซ้าย แล้วคลิกปุ่มเพิ่มสคริปต์ใหม่ ซึ่งจะเปิดสคริปต์ใหม่ในเครื่องมือแก้ไข Apps Script ซึ่งคุณจะเขียนโค้ดและทําให้เว็บแอปใช้งานได้
คุณยังฝังเว็บแอปในหน้าเว็บได้ด้วย คุณสามารถเชื่อมโยงเว็บแอปกับเว็บไซต์ หรือจะใช้เว็บแอปที่มี URL ก็ได้ หากต้องการฝังเว็บแอปในหน้า Google Sites ให้ทําตามขั้นตอนด้านล่าง
- เปิดเว็บไซต์ที่มีอยู่ซึ่งคุณมีสิทธิ์แก้ไขหรือสร้างเว็บไซต์ใหม่
- ไปยังหน้าในเว็บไซต์ที่ต้องการฝังเว็บแอป
- คลิกไอคอนแก้ไข แล้วคลิก Insert > Google Apps Script
- เลือกสคริปต์จากรายการที่แสดงถึงเว็บแอปของคุณ หากเว็บแอปไม่ได้เชื่อมโยงกับเว็บไซต์นี้ คุณสามารถวาง URL ในเว็บแอปแทนได้
- คลิกปุ่มเลือก เลือกตัวเลือกที่ต้องการจากกล่องโต้ตอบถัดไป แล้วคลิกบันทึก
- บันทึกการเปลี่ยนแปลงในหน้าเว็บ จากนั้นคุณจะเห็นเว็บแอปฝังในหน้าเว็บไซต์
เว็บแอปและประวัติเบราว์เซอร์
ขอแนะนําให้มีเว็บแอป Apps Script ที่จําลองแอปพลิเคชันแบบหลายหน้า หรือจะให้ API ที่มี UI แบบไดนามิกควบคุมผ่านพารามิเตอร์ของ URL ก็ได้ วิธีการนี้ทําได้ดีเพียงใดคือให้คุณกําหนดออบเจ็กต์สถานะเพื่อแสดง UI หรือหน้าเว็บของแอปและพุชสถานะไปยังประวัติเบราว์เซอร์ขณะที่ผู้ใช้ไปยังส่วนต่างๆ ของแอป คุณยังฟังเหตุการณ์ประวัติเพื่อให้เว็บแอปแสดง UI ที่ถูกต้องเมื่อผู้ใช้ไปยังส่วนต่างๆ ได้ด้วยปุ่มเบราว์เซอร์ การค้นหาพารามิเตอร์ของ URL ในเวลาโหลดจะทําให้แอปสร้าง UI แบบไดนามิกตามพารามิเตอร์เหล่านั้นได้ เพื่อให้ผู้ใช้เริ่มต้นแอปได้ในสถานะนั้นๆ
Apps Script มี JavaScript API ฝั่งไคลเอ็นต์ที่ไม่พร้อมกัน 2 รายการเพื่อช่วยในการสร้างเว็บแอปที่ลิงก์กับประวัติเบราว์เซอร์
google.script.history
มีวิธีอนุญาตการเปลี่ยนแปลงแบบไดนามิกกับการเปลี่ยนแปลงประวัติของเบราว์เซอร์ ซึ่งได้แก่ พุชสถานะ (ออบเจ็กต์แบบง่ายที่คุณกําหนดได้) ลงในประวัติเบราว์เซอร์ แทนที่สถานะสูงสุดในสแต็กประวัติ และตั้งค่าฟังก์ชันเรียกกลับของ Listener เพื่อตอบสนองต่อการเปลี่ยนแปลงประวัติgoogle.script.url
มีวิธีเรียกพารามิเตอร์ของ URL และส่วนย่อย URL ของหน้าเว็บปัจจุบัน หากมี
API ประวัติเหล่านี้ใช้ได้กับเว็บแอปเท่านั้น ซึ่งไม่รองรับในแถบด้านข้าง กล่องโต้ตอบ หรือส่วนเสริม นอกจากนี้ เราไม่แนะนําให้ใช้ฟังก์ชันนี้ในเว็บแอปที่ฝังอยู่ใน Google Sites