ห้องสมุด

ไลบรารีคือโปรเจ็กต์สคริปต์ที่มีฟังก์ชันซึ่งนํามาใช้ซ้ำในสคริปต์อื่นๆ ได้

รับสิทธิ์เข้าถึงคลัง

หากต้องการรวมไลบรารีไว้ในโปรเจ็กต์ คุณต้องมีสิทธิ์เข้าถึงระดับการดูเป็นอย่างต่ำ หากคุณไม่ใช่ผู้เขียนคลังภาพที่ต้องการรวม ให้ติดต่อผู้เขียนและขอสิทธิ์เข้าถึง

คุณต้องมีรหัสสคริปต์ของไลบรารีที่ต้องการรวม เมื่อเข้าถึงไลบรารีได้ คุณจะเห็นรหัสสคริปต์ในหน้าการตั้งค่าโปรเจ็กต์

เพิ่มไลบรารีลงในโปรเจ็กต์สคริปต์

  1. ที่ด้านซ้ายของตัวแก้ไข Apps Script ถัดจาก "ไลบรารี" ให้คลิกเพิ่มไลบรารี
  2. ในช่อง "รหัสสคริปต์" ให้วางรหัสสคริปต์ของไลบรารี
  3. คลิกค้นหา
  4. คลิกเมนูแบบเลื่อนลงเวอร์ชัน แล้วเลือกเวอร์ชันของไลบรารีที่จะใช้
  5. ตรวจสอบว่าชื่อ "ตัวระบุ" เริ่มต้นเป็นชื่อที่คุณต้องการใช้กับไลบรารีนี้หรือไม่ ซึ่งเป็นชื่อที่สคริปต์ใช้เพื่ออ้างอิงไลบรารี ตัวอย่างเช่น หากคุณตั้งค่าเป็น Test คุณจะเรียกใช้เมธอดของไลบรารีนั้นได้ดังนี้ Test.libraryMethod()
  6. คลิกเพิ่ม

ใช้ไลบรารี

ใช้คลังเพลงที่รวมไว้เหมือนกับที่คุณใช้บริการเริ่มต้น เช่น หาก Test เป็นตัวระบุสำหรับคลัง ให้พิมพ์ Test ตามด้วยจุดทันทีเพื่อดูรายการเมธอดในคลัง

คุณเปิดเอกสารอ้างอิงสำหรับคลังรวมได้โดยทำตามขั้นตอนต่อไปนี้

คลิกเพิ่มเติม > เปิดในแท็บใหม่ ทางด้านซ้ายของเครื่องมือแก้ไขสคริปต์ถัดจากชื่อไลบรารี

นำคลังออก

ที่ด้านซ้ายของเครื่องมือแก้ไขสคริปต์ ให้คลิกเพิ่มเติมข้างชื่อคลัง > นำออก > นำคลังออก

อัปเดตคลัง

คุณสามารถเปลี่ยนเวอร์ชันของไลบรารีหรืออัปเดตตัวระบุได้

  1. คลิกชื่อคลังในส่วน "คลัง" ทางด้านซ้ายของเครื่องมือแก้ไข
  2. ทำการเปลี่ยนแปลง แล้วคลิกบันทึก

สร้างและแชร์คลัง

หากต้องการใช้และแชร์โปรเจ็กต์สคริปต์เป็นไลบรารี ให้ทำตามขั้นตอนด้านล่าง

  1. สร้างการติดตั้งที่มีเวอร์ชันสคริปต์
  2. แชร์สิทธิ์เข้าถึงระดับดูเป็นอย่างน้อยกับผู้มีโอกาสเป็นผู้ใช้ทุกคนของไลบรารี
  3. มอบรหัสสคริปต์ให้กับผู้ใช้เหล่านั้น ซึ่งดูได้ในหน้าการตั้งค่าโปรเจ็กต์

แนวทางปฏิบัติแนะนำ

ต่อไปนี้คือหลักเกณฑ์บางส่วนที่ควรปฏิบัติตามเมื่อเขียนไลบรารี

  1. เลือกชื่อที่มีความหมายสำหรับโปรเจ็กต์ เนื่องจากระบบจะใช้ชื่อนี้เป็นตัวระบุเริ่มต้นเมื่อผู้อื่นรวมไลบรารีของคุณ
  2. หากไม่ต้องการให้ผู้ใช้ไลบรารีเห็น (หรือใช้) เมธอดของสคริปต์อย่างน้อย 1 เมธอด ให้ลงท้ายชื่อเมธอดด้วยขีดล่าง เช่น myPrivateMethod_()
  3. ผู้ใช้ไลบรารีเท่านั้นที่จะเห็นพร็อพเพอร์ตี้ส่วนกลางที่แจกแจงได้ ซึ่งรวมถึงการประกาศฟังก์ชัน ตัวแปรที่สร้างนอกฟังก์ชันด้วย var และพร็อพเพอร์ตี้ที่ตั้งค่าไว้อย่างชัดเจนในออบเจ็กต์ส่วนกลาง เช่น Object.defineProperty() ที่มีการตั้งค่า enumerable เป็น false จะสร้างสัญลักษณ์ที่คุณใช้ในคลังได้ แต่ผู้ใช้จะเข้าถึงสัญลักษณ์นี้ไม่ได้
  4. หากต้องการให้ผู้ใช้ไลบรารีใช้การเติมข้อความอัตโนมัติของเครื่องมือแก้ไขสคริปต์และเอกสารที่สร้างขึ้นโดยอัตโนมัติ คุณต้องมีเอกสารประกอบแบบ 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
* ซึ่งหมายความว่าไลบรารีไม่มีอินสแตนซ์ของฟีเจอร์/ทรัพยากรเป็นของตัวเอง แต่ใช้อินสแตนซ์ที่สร้างโดยสคริปต์ที่เรียกใช้แทน
** ซึ่งหมายความว่าไลบรารีมีอินสแตนซ์ของทรัพยากร/ฟีเจอร์เป็นของตัวเองและสคริปต์ทั้งหมดที่ใช้ไลบรารีจะแชร์และเข้าถึงอินสแตนซ์เดียวกันนั้นได้

ทดสอบคลัง

หากต้องการทดสอบไลบรารี ให้ใช้การทำให้ส่วนหัวใช้งานได้ ทุกคนที่มีสิทธิ์เข้าถึงระดับผู้แก้ไขสคริปต์จะใช้การติดตั้งใช้งานส่วนหัวได้

แก้ไขข้อบกพร่องของไลบรารี

เมื่อใช้โปรแกรมแก้ไขข้อบกพร่องในโปรเจ็กต์ที่มีไลบรารี คุณจะเข้าสู่ฟังก์ชันของไลบรารีที่รวมไว้ได้ โค้ดจะปรากฏในโปรแกรมแก้ไขข้อบกพร่องในโหมดดูอย่างเดียวและในเวอร์ชันที่ถูกต้อง