หากสร้างอินเทอร์เฟซผู้ใช้สําหรับสคริปต์ คุณก็สามารถเผยแพร่สคริปต์เป็นเว็บแอปได้ เช่น สคริปต์ที่ให้ผู้ใช้กําหนดเวลาการนัดหมายกับสมาชิกในทีมสนับสนุนที่ดีที่สุดจะแสดงเป็นเว็บแอป เพื่อให้ผู้ใช้สามารถเข้าถึงสคริปต์ได้โดยตรงจากเบราว์เซอร์
ทั้งสคริปต์แบบสแตนด์อโลนและสคริปต์ที่เชื่อมโยงกับ Google Workspace แอปพลิเคชันสามารถเปลี่ยนเป็นเว็บแอปพลิเคชันได้ ตราบใดที่ตรงตามข้อกําหนดด้านล่าง
ข้อกําหนดสําหรับเว็บแอป
คุณสามารถเผยแพร่สคริปต์เป็นเว็บแอปได้หากเป็นไปตามข้อกําหนดเหล่านี้
- เนื่องจากมีฟังก์ชัน
doGet(e)
หรือdoPost(e)
- ฟังก์ชันจะแสดงออบเจ็กต์ Service service
HtmlOutput
หรือ Content serviceTextOutput
พารามิเตอร์คําขอ
เมื่อผู้ใช้เข้าชมแอปหรือโปรแกรมจะส่งคําขอ HTTP GET
ไปยังแอป
สคริปต์ของ Apps จะเรียกใช้ฟังก์ชัน doGet(e)
เมื่อโปรแกรมส่งคําขอ HTTP
POST
ไปยัง Apps Script จะเรียกใช้ doPost(e)
แทน ทั้งสองกรณี อาร์กิวเมนต์ 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 ของเว็บแอปให้ผู้ที่คุณต้องการใช้แอปได้ โดยมีเงื่อนไขว่าคุณให้สิทธิ์ไว้
ทดสอบการทําให้เว็บแอปใช้งานได้
หากต้องการทดสอบสคริปต์เป็นเว็บแอป ให้ทําตามขั้นตอนด้านล่าง
- คลิกทําให้ใช้งานได้ > ทดสอบการทําให้ใช้งานได้ที่ด้านขวาบนของโปรเจ็กต์สคริปต์
- &"เลือกประเภท &&tt; คลิกประเภทการติดตั้งใช้งาน > เว็บแอป
- ใต้ URL ของเว็บแอป ให้คลิกคัดลอก
วาง URL ในเบราว์เซอร์และทดสอบเว็บแอป
URL นี้ลงท้ายด้วย
/dev
และจะเข้าถึงได้เฉพาะผู้ใช้ที่มีสิทธิ์เข้าถึงสคริปต์เท่านั้น อินสแตนซ์ของแอปนี้จะเรียกใช้โค้ดที่บันทึกไว้ล่าสุดเสมอ และมีไว้สําหรับทดสอบระหว่างการพัฒนาเท่านั้น
สิทธิ์
สิทธิ์ของเว็บแอปจะแตกต่างกันไปขึ้นอยู่กับวิธีที่คุณเลือกเรียกใช้แอป
- เรียกใช้แอปในฐานะฉัน ในกรณีนี้ สคริปต์จะเรียกใช้ตามที่คุณเป็นเจ้าของสคริปต์เสมอ ไม่ว่าใครจะเข้าถึงเว็บแอปก็ตาม
- เรียกใช้แอปในฐานะผู้ใช้ที่เข้าถึงเว็บแอป ในกรณีนี้ สคริปต์จะทํางานภายใต้ข้อมูลประจําตัวของผู้ใช้ที่ใช้งานอยู่โดยใช้เว็บแอป แนวทางการให้สิทธิ์นี้ทําให้เว็บแอปแสดงอีเมลของเจ้าของสคริปต์เมื่อผู้ใช้ให้สิทธิ์เข้าถึง
การฝังเว็บแอปใน Google Sites
นอกจากนี้คุณยังฝังเว็บแอปได้ทั้งในคลาสสิกและGoogle Sites เวอร์ชันใหม่
การฝังเว็บแอปใน Sites แบบใหม่
คุณต้องทําให้แอปใช้งานได้เพื่อฝังเว็บแอป คุณต้องมี URL ที่ทําให้ใช้งานได้แล้วจากกล่องโต้ตอบ Deploy
ด้วย
หากต้องการฝังเว็บแอปลงในหน้า Sites ใหม่ ให้ทําตามขั้นตอนต่อไปนี้
- เปิดหน้า "เว็บไซต์" ที่คุณต้องการเพิ่มเว็บแอป
- เลือกแทรกและgt ฝัง URL
- วาง URL ของเว็บแอป แล้วคลิกเพิ่ม
เว็บแอปจะปรากฏในเฟรมในหน้าตัวอย่างของหน้าเว็บ เมื่อคุณเผยแพร่หน้าเว็บ ผู้เข้าชมเว็บไซต์อาจต้องให้สิทธิ์เว็บแอปก่อนจะดําเนินการใดๆ ตามปกติ เว็บแอปที่ไม่ได้รับอนุญาตจะแสดงการให้สิทธิ์แก่ผู้ใช้
การฝังเว็บแอปใน Sites แบบคลาสสิก
คุณสามารถเชื่อมโยงสคริปต์กับเว็บไซต์จาก Google Sites แบบคลาสสิกได้ด้วยวิธีเดียวกันกับการเชื่อมสคริปต์กับ Google เอกสารหรือชีต หากต้องการสร้างสคริปต์ที่เชื่อมโยงกัน ให้ไปที่เว็บไซต์ คลิกไอคอนรูปเฟือง
แล้วเลือกจัดการเว็บไซต์ ในหน้า "จัดการเว็บไซต์" ให้คลิกสคริปต์แอปในการนําทางด้านซ้าย แล้วคลิกปุ่มเพิ่มสคริปต์ใหม่ ซึ่งจะเปิดสคริปต์ใหม่ในเครื่องมือแก้ไข Apps Script ซึ่งคุณจะเขียนโค้ดและทําให้เว็บแอปใช้งานได้
คุณยังฝังเว็บแอปในหน้าเว็บได้ด้วย คุณสามารถเชื่อมโยงเว็บแอปกับเว็บไซต์ หรือจะใช้เว็บแอปที่มี URL ดังกล่าว หากต้องการฝังเว็บแอปลงในหน้า Google Sites ให้ทําตามขั้นตอนด้านล่าง
- เปิดเว็บไซต์ที่มีอยู่ซึ่งคุณมีสิทธิ์แก้ไขหรือสร้างเว็บไซต์ใหม่
- ไปที่หน้าเว็บในเว็บไซต์ที่คุณต้องการฝังเว็บแอป
- คลิกไอคอนแก้ไข แล้วคลิกแทรก > Google Apps Script
- เลือกสคริปต์จากรายการที่แสดงเว็บแอปของคุณ หากเว็บแอปไม่ได้ผูกกับเว็บไซต์นี้ คุณจะวาง URL ในเว็บแอปแทนได้
- คลิกปุ่มเลือก เลือกตัวเลือกที่ต้องการจากกล่องโต้ตอบถัดไป แล้วคลิกบันทึก
- บันทึกการเปลี่ยนแปลงในหน้า แล้วคุณจะเห็นเว็บแอปฝังอยู่ในหน้าเว็บไซต์
เว็บแอปและประวัติเบราว์เซอร์
ควรมีเว็บแอป Apps Script ที่จําลองแอปพลิเคชันที่มีหลายหน้า หรือมี UI แบบไดนามิกที่ควบคุมผ่านพารามิเตอร์ของ URL ในการดําเนินการนี้ได้ดี คุณอาจระบุออบเจ็กต์สถานะเพื่อแสดงถึง UI หรือหน้าของแอปและพุชสถานะไปยังประวัติการท่องเว็บขณะที่ผู้ใช้ไปยังส่วนต่างๆ ของแอป คุณยังฟังเหตุการณ์ประวัติเพื่อให้เว็บแอปแสดง UI ที่ถูกต้องเมื่อผู้ใช้ไปยังส่วนต่างๆ ด้วยปุ่มเบราว์เซอร์ได้อีกด้วย การค้นหาพารามิเตอร์ของ URL ขณะโหลดอาจทําให้แอปของคุณสร้าง UI แบบไดนามิกตามพารามิเตอร์เหล่านั้นเพื่อให้ผู้ใช้เริ่มต้นแอปได้ในสถานะที่ต้องการ
Apps Script มี JavaScript API ฝั่งไคลเอ็นต์แบบอะซิงโครนัส 2 รายการเพื่อช่วยสร้างเว็บแอปที่ลิงก์กับประวัติเบราว์เซอร์ ได้แก่
google.script.history
มีวิธีในการอนุญาตการเปลี่ยนแปลงแบบไดนามิกต่อประวัติการท่องเว็บของเบราว์เซอร์ ซึ่งรวมถึง การพุชสถานะ (ออบเจ็กต์ง่ายๆ ที่คุณกําหนดได้) ลงในประวัติเบราว์เซอร์ การเปลี่ยนสถานะยอดนิยมในกลุ่มประวัติ และการตั้งค่าฟังก์ชันเรียกกลับของ Listener เพื่อตอบสนองต่อการเปลี่ยนแปลงประวัติgoogle.script.url
เป็นวิธีสําหรับเรียกพารามิเตอร์ของ URL และส่วนย่อยของ URL ของหน้าเว็บในปัจจุบัน หากมี
API ของประวัติเหล่านี้ใช้ได้กับเว็บแอปเท่านั้น โดยไม่รองรับแถบด้านข้าง กล่องโต้ตอบ หรือส่วนเสริม นอกจากนี้ เราไม่แนะนําให้ใช้ฟังก์ชันนี้ในเว็บแอปที่ฝังอยู่ใน Google Sites