การให้สิทธิ์สำหรับบริการของ Google

Apps Script ต้องมีการให้สิทธิ์จากผู้ใช้เพื่อเข้าถึงข้อมูลส่วนตัวจาก บริการของ Google ที่มีอยู่ภายในหรือ บริการขั้นสูงของ Google

วิธีการทำงานของการให้สิทธิ์สำหรับบริการของ Google

เมื่อสคริปต์ต้องเข้าถึงบริการของ Google สคริปต์จะทำตามกระบวนการทั่วไปนี้

  1. การตรวจหา: Apps Script จะสแกนสคริปต์เพื่อระบุบริการที่สคริปต์ใช้ (เช่น SpreadsheetApp หรือ GmailApp)
  2. การกำหนดขอบเขต: Apps Script จะระบุชุดขอบเขต OAuth ที่จำเป็นต่อการเรียกใช้สคริปต์ตามการสแกน
  3. การตรวจสอบการให้สิทธิ์: เมื่อเรียกใช้สคริปต์ ระบบจะตรวจสอบว่าผู้ใช้ได้ให้สิทธิ์ขอบเขตเหล่านั้นแล้วหรือไม่
  4. ข้อความแจ้งผู้ใช้: หากไม่มีการให้สิทธิ์ กล่องโต้ตอบจะปรากฏขึ้นเพื่อขอให้ผู้ใช้ให้สิทธิ์
  5. การดำเนินการ: หลังจากได้รับสิทธิ์แล้ว สคริปต์จะเข้าถึงข้อมูลที่ขอของผู้ใช้รายดังกล่าวได้

สิทธิ์และประเภทของสคริปต์

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

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

ให้สิทธิ์เข้าถึง

Apps Script จะกำหนดขอบเขตการให้สิทธิ์ (เช่น เข้าถึงไฟล์ Google ชีต หรือ Gmail) โดยอัตโนมัติจากการสแกนโค้ด โค้ดที่ แสดงความคิดเห็นไว้จะยังสร้างคำขอการให้สิทธิ์ได้ หากสคริปต์ต้องมีการให้สิทธิ์ คุณจะเห็นกล่องโต้ตอบการให้สิทธิ์อย่างใดอย่างหนึ่งที่แสดงที่นี่เมื่อสคริปต์ทำงาน

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

เพิกถอนสิทธิ์การเข้าถึง

หากต้องการเพิกถอนสิทธิ์เข้าถึงข้อมูลของสคริปต์ ให้ทำตามขั้นตอนต่อไปนี้

  1. ไปที่หน้าสิทธิ์ สำหรับบัญชี Google (หากต้องการไปที่ หน้านี้ในอนาคต ให้ไปที่ Google.com แล้ว คลิกรูปโปรไฟล์บัญชีที่มุมขวาบนของหน้าจอ จากนั้นคลิกบัญชีของฉัน แล้วคลิกแอปและเว็บไซต์ที่เชื่อมต่อในส่วน "การลงชื่อเข้าใช้และความปลอดภัย" จากนั้นคลิกจัดการแอป)
  2. คลิกชื่อสคริปต์ที่คุณต้องการเพิกถอนการให้สิทธิ์ จากนั้น คลิกนำออกทางด้านขวา แล้วคลิกตกลงในกล่องโต้ตอบที่ปรากฏ

จำกัดขอบเขตไว้ที่เอกสารปัจจุบัน

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

/**
 * @OnlyCurrentDoc
 */

คำอธิบายประกอบที่ตรงกันข้าม @NotOnlyCurrentDoc จะพร้อมใช้งานหากสคริปต์ของคุณ มีไลบรารีที่ประกาศ @OnlyCurrentDoc แต่สคริปต์หลักต้องเข้าถึงไฟล์มากกว่า ไฟล์ปัจจุบัน

วงจรการให้สิทธิ์สำหรับส่วนเสริม

ส่วนเสริมสำหรับ Google ชีต, เอกสาร, สไลด์ และฟอร์ม โดยทั่วไปจะใช้รูปแบบการให้สิทธิ์เดียวกันกับสคริปต์ที่เชื่อมโยงกับเอกสาร อย่างไรก็ตาม ในบาง กรณี ฟังก์ชัน onOpen(e) และ onEdit(e) จะทำงานใน โหมดไม่มีการให้สิทธิ์ ซึ่งทำให้เกิดความซับซ้อนเพิ่มเติม ดูข้อมูลเพิ่มเติมได้ที่คู่มือวงจรการให้สิทธิ์ของส่วนเสริม

ขีดจำกัดผู้ใช้แอปพลิเคชัน OAuth

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

ลักษณะการทำงานของการตรวจสอบสิทธิ์อีกครั้งด้วย Apps Script

Apps Script ไม่ได้บังคับใช้ ความถี่ในการตรวจสอบสิทธิ์อีกครั้งที่คุณ กำหนดในการตั้งค่าบริการของ Google Cloud เนื่องจาก Apps Script สามารถทำงานโดยอัตโนมัติโดยใช้ทริกเกอร์ ซึ่งทำงาน โดยไม่ต้องมีการโต้ตอบจากผู้ใช้โดยตรง การดำเนินการอัตโนมัติเหล่านี้จะไม่ทริกเกอร์ ข้อความแจ้งให้ตรวจสอบสิทธิ์อีกครั้ง แอปพลิเคชัน Apps Script จะไม่ขอให้คุณตรวจสอบสิทธิ์อีกครั้งโดยอัตโนมัติหลังจากระยะเวลาที่คุณระบุ (เช่น 12 ชั่วโมง)

ตั้งค่าขอบเขตที่ชัดเจนในไฟล์ Manifest

Apps Script จะกำหนดขอบเขตที่จำเป็นโดยอัตโนมัติด้วยการสแกน โค้ดเพื่อหาการเรียกฟังก์ชัน หากต้องการควบคุมเพิ่มเติม คุณสามารถตั้งค่าขอบเขตอย่างชัดเจนในไฟล์ Manifest ของโปรเจ็กต์ (appsscript.json) เราขอแนะนำให้ทำเช่นนี้สำหรับสคริปต์ที่เผยแพร่แล้ว เพื่อให้มั่นใจว่าคุณใช้สิทธิ์ที่จำเป็นขั้นต่ำ

โปรดดูวิธีการที่หัวข้อตั้งค่าขอบเขตที่ชัดเจน

การแก้ปัญหา

  • ข้อผิดพลาด"ต้องมีการให้สิทธิ์" เมื่อเรียกใช้ทริกเกอร์: ผู้ใช้ที่สร้างทริกเกอร์ต้องให้สิทธิ์ทริกเกอร์ หากเพิ่มโค้ดที่ต้องใช้สิทธิ์ใหม่ คุณต้องเรียกใช้ฟังก์ชันในตัวแก้ไขสคริปต์ด้วยตนเอง 1 ครั้งเพื่อทริกเกอร์กล่องโต้ตอบการให้สิทธิ์
  • ขอบเขตไม่อัปเดต: หากคุณอัปเดตรหัสแล้ว แต่กล่องโต้ตอบการให้สิทธิ์ ไม่แสดงการเปลี่ยนแปลง ให้ลองบันทึกโปรเจ็กต์และรีเฟรช เอดิเตอร์ หากคุณใช้ขอบเขตที่ชัดเจนในไฟล์ Manifest โปรดตรวจสอบว่าคุณได้ เพิ่มขอบเขตใหม่ลงในอาร์เรย์ oauthScopes แล้ว
  • "แอปนี้ถูกบล็อก" หรือคำเตือนของแอปที่ยังไม่ได้รับการยืนยัน: ปัญหานี้เกิดขึ้นหากสคริปต์ใช้ขอบเขตที่ละเอียดอ่อนหรือขอบเขตที่จำกัด และยังไม่ได้รับการยืนยันจาก Google ดูการยืนยันไคลเอ็นต์ OAuth