ไลบรารีคือโปรเจ็กต์สคริปต์ที่มีฟังก์ชันซึ่งนํามาใช้ซ้ำในสคริปต์อื่นๆ ได้
รับสิทธิ์เข้าถึงคลัง
หากต้องการรวมไลบรารีไว้ในโปรเจ็กต์ คุณต้องมีสิทธิ์เข้าถึงระดับมุมมองเป็นอย่างน้อย หากคุณไม่ใช่ผู้เขียนคลังที่ต้องการรวม ให้ติดต่อผู้เขียนและขอสิทธิ์เข้าถึง
คุณต้องมีรหัสสคริปต์ของไลบรารีที่ต้องการรวม เมื่อเข้าถึงไลบรารีได้ คุณจะเห็นรหัสสคริปต์ในหน้าการตั้งค่าโปรเจ็กต์
เพิ่มไลบรารีลงในโปรเจ็กต์สคริปต์
- คลิกเพิ่มคลัง ทางด้านซ้ายของเครื่องมือแก้ไข Apps Script ถัดจาก "คลัง"
- ในช่อง "รหัสสคริปต์" ให้วางรหัสสคริปต์ของไลบรารี
- คลิกค้นหา
- คลิกเมนูแบบเลื่อนลงเวอร์ชัน แล้วเลือกเวอร์ชันของไลบรารีที่จะใช้
- ตรวจสอบว่าชื่อ "ตัวระบุ" เริ่มต้นเป็นชื่อที่คุณต้องการใช้กับไลบรารีนี้หรือไม่ ซึ่งเป็นชื่อที่สคริปต์ใช้เพื่ออ้างอิงไลบรารี ตัวอย่างเช่น หากคุณตั้งค่าเป็น
Test
คุณจะเรียกใช้เมธอดของไลบรารีดังกล่าวได้ดังนี้Test.libraryMethod()
- คลิกเพิ่ม
ใช้ไลบรารี
ใช้คลังเพลงที่รวมไว้เหมือนกับการใช้บริการเริ่มต้น เช่น หาก Test
เป็นตัวระบุสำหรับคลัง ให้พิมพ์ Test
ตามด้วยจุดทันทีเพื่อดูรายการเมธอดในคลัง
คุณเปิดเอกสารอ้างอิงสำหรับไลบรารีที่รวมอยู่ได้โดยทำตามขั้นตอนต่อไปนี้
คลิกเพิ่มเติม
> เปิดในแท็บใหม่ ทางด้านซ้ายของโปรแกรมแก้ไขสคริปต์ถัดจากชื่อไลบรารีนำคลังออก
ที่ด้านซ้ายของเครื่องมือแก้ไขสคริปต์ ให้คลิกเพิ่มเติมข้างชื่อคลัง
> นำออก > นำคลังออกอัปเดตคลัง
คุณสามารถเปลี่ยนเวอร์ชันของคลังหรืออัปเดตตัวระบุของคลังได้
- คลิกชื่อคลังในส่วน "คลัง" ทางด้านซ้ายของเครื่องมือแก้ไข
- ทำการเปลี่ยนแปลง แล้วคลิกบันทึก
สร้างและแชร์คลัง
หากต้องการใช้และแชร์โปรเจ็กต์สคริปต์เป็นไลบรารี ให้ทำตามขั้นตอนด้านล่าง
- สร้างการติดตั้งที่มีเวอร์ชันสคริปต์
- แชร์สิทธิ์เข้าถึงระดับดูเป็นอย่างน้อยกับผู้ใช้ที่เป็นไปได้ทั้งหมดของคลัง
- แจ้งรหัสสคริปต์ให้ผู้ใช้เหล่านั้นทราบ ซึ่งดูได้ในหน้าการตั้งค่า ของโปรเจ็กต์
แนวทางปฏิบัติแนะนำ
ต่อไปนี้คือหลักเกณฑ์บางส่วนที่ควรปฏิบัติตามเมื่อเขียนไลบรารี
- เลือกชื่อที่มีความหมายสำหรับโปรเจ็กต์ เนื่องจากระบบจะใช้ชื่อนี้เป็นตัวระบุเริ่มต้นเมื่อผู้อื่นรวมไลบรารีของคุณ
- หากไม่ต้องการให้ผู้ใช้ไลบรารีเห็น (หรือใช้) เมธอดของสคริปต์อย่างน้อย 1 เมธอด ให้ลงท้ายชื่อเมธอดด้วยขีดล่าง เช่น
myPrivateMethod_()
- เฉพาะพร็อพเพอร์ตี้ส่วนกลางที่นับได้เท่านั้นที่ผู้ใช้คลังจะมองเห็น ซึ่งรวมถึงการประกาศฟังก์ชัน ตัวแปรที่สร้างนอกฟังก์ชันด้วย
var
และพร็อพเพอร์ตี้ที่ตั้งค่าไว้อย่างชัดเจนในออบเจ็กต์ส่วนกลาง เช่นObject.defineProperty()
ที่มีการตั้งค่าenumerable
เป็นfalse
จะสร้างสัญลักษณ์ที่คุณใช้ในคลังได้ แต่ผู้ใช้จะเข้าถึงสัญลักษณ์นี้ไม่ได้ หากต้องการให้ผู้ใช้ไลบรารีใช้ประโยชน์จากฟีเจอร์เติมข้อความอัตโนมัติของเครื่องมือแก้ไขสคริปต์และเอกสารประกอบที่สร้างขึ้นโดยอัตโนมัติ คุณต้องมีเอกสารประกอบสไตล์ JSDoc สำหรับฟังก์ชันทั้งหมด เช่น
/** * Raises a number to the given power, and returns the result. * * @param {number} base the number we're raising to a power * @param {number} exp the exponent we're raising the base to * @return {number} the result of the exponential calculation */ function power(base, exp) { ... }
การกําหนดขอบเขตทรัพยากร
แหล่งข้อมูลมี 2 ประเภทเมื่อคุณทํางานกับคลัง ได้แก่ แชร์และไม่แชร์ ทรัพยากรที่แชร์หมายความว่าทั้งไลบรารีและสคริปต์ที่รวมไว้มีสิทธิ์เข้าถึงอินสแตนซ์เดียวกันของทรัพยากรโดยค่าเริ่มต้น แผนภาพต่อไปนี้แสดงทรัพยากรที่แชร์โดยใช้ตัวอย่างพร็อพเพอร์ตี้ผู้ใช้
ทรัพยากรที่ไม่มีการแชร์หมายความว่าทั้งไลบรารีและสคริปต์ที่รวมไว้มีสิทธิ์เข้าถึงอินสแตนซ์ของทรัพยากรเท่านั้น อย่างไรก็ตาม ไลบรารีสามารถให้สิทธิ์เข้าถึงทรัพยากรที่ไม่ได้แชร์ได้โดยการมีฟังก์ชันที่ชัดเจนซึ่งดำเนินการกับทรัพยากรดังกล่าว ต่อไปนี้คือตัวอย่างฟังก์ชันที่คุณควรรวมไว้ในคลังเพื่อแสดงพร็อพเพอร์ตี้สคริปต์
function getLibraryProperty(key) {
return ScriptProperties.getProperty(key);
}
แผนภาพต่อไปนี้แสดงทรัพยากรที่ไม่มีการแชร์โดยใช้ตัวอย่างพร็อพเพอร์ตี้สคริปต์
ตารางนี้จะแสดงแหล่งข้อมูลที่แชร์และไม่แชร์สำหรับใช้อ้างอิง
ทรัพยากร | แชร์* | ไม่ได้แชร์** | หมายเหตุ |
---|---|---|---|
ล็อก | อินสแตนซ์เดียวกันจะปรากฏแก่ทุกคน รวมถึงสคริปต์เมื่อสร้างในคลัง | ||
คุณสมบัติของสคริปต์ | อินสแตนซ์เดียวกันจะปรากฏแก่ทุกคน รวมถึงสคริปต์เมื่อสร้างในไลบรารี | ||
แคช | อินสแตนซ์เดียวกันจะปรากฏแก่ทุกคน รวมถึงสคริปต์เมื่อสร้างในคลัง | ||
ทริกเกอร์ | สคริปต์การรวมจะไม่ทริกเกอร์ทริกเกอร์แบบง่ายที่สร้างในไลบรารี | ||
ScriptApp | |||
UiApp | |||
พร็อพเพอร์ตี้ผู้ใช้ | |||
บันทึกการเรียกใช้และข้อความถอดเสียง | |||
Sites, ชีต และคอนเทนเนอร์อื่นๆ | การเรียกใช้ getActive() จะแสดงผลคอนเทนเนอร์ของสคริปต์ที่รวมอยู่ด้วย |
||
MailApp และ GmailApp | |||
* ซึ่งหมายความว่าไลบรารีไม่มีอินสแตนซ์ของฟีเจอร์/ทรัพยากรเป็นของตัวเอง แต่ใช้อินสแตนซ์ที่สร้างโดยสคริปต์ที่เรียกใช้แทน
** ซึ่งหมายความว่าไลบรารีมีอินสแตนซ์ของทรัพยากร/ฟีเจอร์เป็นของตัวเองและสคริปต์ทั้งหมดที่ใช้ไลบรารีจะแชร์และเข้าถึงอินสแตนซ์เดียวกันนั้นได้ |
ทดสอบคลัง
หากต้องการทดสอบคลัง ให้ใช้การติดตั้งใช้งานส่วนหัว ทุกคนที่มีสิทธิ์เข้าถึงระดับผู้แก้ไขสคริปต์จะใช้การติดตั้งใช้งานส่วนหัวได้
แก้ไขข้อบกพร่องของไลบรารี
เมื่อใช้โปรแกรมแก้ไขข้อบกพร่องในโปรเจ็กต์ที่มีไลบรารี คุณจะเข้าสู่ฟังก์ชันของไลบรารีที่รวมไว้ได้ โค้ดจะปรากฏในโปรแกรมแก้ไขข้อบกพร่องในโหมดดูอย่างเดียวและในเวอร์ชันที่ถูกต้อง