ห้องสมุด

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

สคริปต์ที่ใช้ไลบรารีจะทำงานไม่เร็วเท่าสคริปต์ที่มีโค้ดทั้งหมดอยู่ในโปรเจ็กต์สคริปต์เดียว แม้ว่าไลบรารีจะช่วยให้การพัฒนาและการบำรุงรักษาสะดวกยิ่งขึ้น แต่ให้ใช้ ไลบรารีเท่าที่จำเป็นในโปรเจ็กต์ที่ความเร็วเป็นสิ่งสำคัญ ด้วยเหตุนี้ จึงควรจำกัดการใช้ไลบรารีในส่วนเสริมของ Google Workspace

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

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

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

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

  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) {
    const scriptProperties = PropertiesService.getScriptProperties();
    return scriptProperties.getProperty(key);
  }

แผนภาพต่อไปนี้แสดงทรัพยากรที่ไม่ได้แชร์โดยใช้ตัวอย่างของ พร็อพเพอร์ตี้สคริปต์

ตัวอย่างทรัพยากรที่ไม่ได้แชร์

ตารางนี้แสดงทรัพยากรที่แชร์และไม่ได้แชร์เพื่อใช้อ้างอิง

ทรัพยากร แชร์* ไม่ได้แชร์** หมายเหตุ
ล็อก อินสแตนซ์เดียวกันจะปรากฏต่อทุกคน รวมถึงสคริปต์เมื่อสร้างใน ไลบรารี
คุณสมบัติของสคริปต์ อินสแตนซ์เดียวกันจะปรากฏต่อทุกคน รวมถึงสคริปต์เมื่อสร้างใน ไลบรารี
แคช อินสแตนซ์เดียวกันจะปรากฏต่อทุกคน รวมถึงสคริปต์เมื่อสร้างใน ไลบรารี
ทริกเกอร์ ทริกเกอร์อย่างง่ายที่สร้างในไลบรารีจะไม่ทริกเกอร์โดยสคริปต์ที่รวมอยู่
ScriptApp
UiApp
พร็อพเพอร์ตี้ผู้ใช้
บันทึกและบันทึกการเรียกใช้
เว็บไซต์ ชีต และคอนเทนเนอร์อื่นๆ การเรียกใช้ getActive จะแสดงผลคอนเทนเนอร์ของ รวมถึงสคริปต์
MailApp และ GmailApp
* ซึ่งหมายความว่าไลบรารีไม่มีอินสแตนซ์ของฟีเจอร์/ทรัพยากรของตัวเอง แต่ใช้ฟีเจอร์/ทรัพยากรที่สร้างโดยสคริปต์ที่เรียกใช้แทน
** ซึ่งหมายความว่าไลบรารีมีอินสแตนซ์ของทรัพยากร/ฟีเจอร์ของตัวเอง และสคริปต์ทั้งหมดที่ใช้ไลบรารีจะแชร์และมีสิทธิ์เข้าถึงอินสแตนซ์เดียวกันนั้น

ทดสอบไลบรารี

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

คุณยังคงต้องบันทึกไลบรารีไว้อย่างน้อย 1 เวอร์ชัน

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

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

การใช้ HEAD (โหมดการพัฒนา) สำหรับเวอร์ชันไลบรารีจะไม่ได้เปิดใช้การก้าวเข้าสู่ไลบรารีหรือการเข้าถึงเบรกพอยต์ภายใน

หากต้องการแก้ไขข้อบกพร่องของโค้ดไลบรารี ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้

  • แก้ไขข้อบกพร่องจากโปรเจ็กต์ไลบรารี: เปิดโปรเจ็กต์สคริปต์ไลบรารีในโปรแกรมแก้ไข Apps Script หากต้องการทดสอบฟังก์ชันไลบรารีด้วยอาร์กิวเมนต์ที่เฉพาะเจาะจง ให้สร้างฟังก์ชัน "ทดสอบ" ชั่วคราวภายในโปรเจ็กต์ไลบรารีที่เรียกใช้ฟังก์ชันไลบรารี จากนั้นเรียกใช้ฟังก์ชันทดสอบนั้นในโหมดแก้ไขข้อบกพร่อง
  • การบันทึก: ใช้ console.log() ภายในฟังก์ชันไลบรารีเพื่อแสดงข้อมูลในบันทึกการดำเนินการ เมื่อสคริปต์อื่นเรียกใช้ไลบรารี บันทึกเหล่านี้จะปรากฏในบันทึกการดำเนินการของสคริปต์ที่เรียกใช้