ห้องสมุด

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

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

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

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

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

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

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

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

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

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

หากต้องการแก้ไขข้อบกพร่องของโค้ดไลบรารี ให้เปิดโปรเจ็กต์สคริปต์ไลบรารีใน โปรแกรมแก้ไข Apps Script แล้วเรียกใช้ฟังก์ชันในโหมดแก้ไขข้อบกพร่องจากที่นั่น