ผู้ใช้ต้องให้สิทธิ์ส่วนเสริมและแอปพลิเคชันอื่นๆ ที่เข้าถึงข้อมูลหรือดำเนินการในนามของตน เมื่อผู้ใช้เรียกใช้ส่วนเสริมเป็นครั้งแรก UI ของส่วนเสริมจะแสดงข้อความแจ้งการให้สิทธิ์เพื่อเริ่มขั้นตอนการให้สิทธิ์
ในระหว่างขั้นตอนนี้ ข้อความแจ้งจะบอกให้ผู้ใช้ทราบว่าแอปพลิเคชันต้องการสิทธิ์ดำเนินการใดบ้าง เช่น ส่วนเสริมอาจต้องการสิทธิ์ในการอ่านข้อความอีเมลของผู้ใช้หรือสร้างกิจกรรมในปฏิทิน โปรเจ็กต์สคริปต์ของส่วนเสริมจะกำหนดสิทธิ์แต่ละรายการเหล่านี้เป็นขอบเขต OAuth
คุณประกาศขอบเขตใน Manifest โดยใช้สตริง URL ในระหว่างขั้นตอนการให้สิทธิ์ Apps Script จะแสดงคำอธิบายขอบเขตที่มนุษย์อ่านได้ต่อผู้ใช้ ตัวอย่างเช่น ส่วนเสริมอาจใช้ขอบเขต "อ่านเอกสารปัจจุบัน" ซึ่งเขียนไว้ในไฟล์ Manifest ดังนี้ https://www.googleapis.com/auth/documents.currentonly
ในระหว่างขั้นตอนการให้สิทธิ์ ส่วนเสริมที่มีขอบเขตนี้จะขอให้ผู้ใช้อนุญาตให้ส่วนเสริมดูและจัดการเอกสารที่มีการติดตั้งแอปพลิเคชันนี้
ขอบเขตการดู
คุณดูขอบเขตที่โปรเจ็กต์สคริปต์ต้องการในปัจจุบันได้โดยทำดังนี้
- เปิดโปรเจ็กต์สคริปต์
- คลิกภาพรวม ทางด้านซ้าย
- ดูขอบเขตในส่วน "ขอบเขต OAuth ของโปรเจ็กต์"
นอกจากนี้ คุณยังดูขอบเขตปัจจุบันของโปรเจ็กต์สคริปต์ได้ในไฟล์ Manifest ของโปรเจ็กต์ ในส่วนoauthScopes
แต่เฉพาะในกรณีที่คุณตั้งค่าขอบเขตเหล่านั้นอย่างชัดเจนเท่านั้น
การตั้งค่าขอบเขตที่ชัดเจน
Apps Script จะกำหนดขอบเขตที่จําเป็นสําหรับสคริปต์โดยอัตโนมัติด้วยการสแกนโค้ดสําหรับการเรียกฟังก์ชันที่จําเป็น สําหรับสคริปต์ส่วนใหญ่ การตั้งค่านี้เพียงพอและช่วยประหยัดเวลาได้ แต่สําหรับส่วนเสริมที่เผยแพร่แล้ว คุณควรควบคุมขอบเขตโดยตรงมากขึ้น
ตัวอย่างเช่น Apps Script อาจให้โปรเจ็กต์สคริปต์ของส่วนเสริมมีขอบเขต https://mail.google.com
ที่อนุญาตมากโดยค่าเริ่มต้น เมื่อผู้ใช้ให้สิทธิ์โปรเจ็กต์สคริปต์ที่มีขอบเขตนี้ โปรเจ็กต์จะได้รับสิทธิ์เข้าถึงบัญชี Gmail ของผู้ใช้โดยสมบูรณ์ สำหรับส่วนเสริมที่เผยแพร่แล้ว คุณต้องแทนที่ขอบเขตนี้ด้วยชุดที่จำกัดมากขึ้นซึ่งครอบคลุมถึงความต้องการของส่วนเสริมเท่านั้น
คุณสามารถตั้งค่าขอบเขตที่โปรเจ็กต์สคริปต์ใช้อย่างชัดเจนได้โดยแก้ไขไฟล์ Manifest ช่องไฟล์ Manifest
oauthScopes
คืออาร์เรย์ของขอบเขตทั้งหมดที่ใช้โดยส่วนเสริม หากต้องการกำหนดขอบเขตของโปรเจ็กต์ ให้ทำดังนี้
- ดูขอบเขตที่ส่วนเสริมใช้อยู่ในปัจจุบัน พิจารณาว่าต้องทําการเปลี่ยนแปลงใดบ้าง เช่น ใช้ขอบเขตที่แคบลง
- เปิดไฟล์ Manifest ของส่วนเสริม
- ค้นหาช่องระดับบนสุดที่ติดป้ายกํากับว่า
oauthScopes
หากไม่มี คุณสามารถเพิ่มได้ ฟิลด์
oauthScopes
จะระบุอาร์เรย์สตริง หากต้องการตั้งค่าขอบเขตที่โปรเจ็กต์ใช้ ให้แทนที่เนื้อหาของอาร์เรย์นี้ด้วยขอบเขตที่ต้องการใช้ ตัวอย่างเช่น สําหรับส่วนเสริม Editor ที่ขยายชีต คุณอาจเห็นข้อมูลต่อไปนี้{ ... "oauthScopes": [ "https://www.googleapis.com/auth/script.container.ui", "https://www.googleapis.com/auth/spreadsheets" ], ... }
บันทึกการเปลี่ยนแปลงในไฟล์ Manifest
การยืนยัน OAuth
การใช้ขอบเขต OAuth บางขอบเขตที่มีความละเอียดอ่อนอาจกำหนดให้ส่วนเสริมต้องผ่านการยืนยันไคลเอ็นต์ OAuth ก่อนจึงจะเผยแพร่ได้ ดูข้อมูลเพิ่มเติมได้ที่คู่มือต่อไปนี้
- การตรวจสอบไคลเอ็นต์ OAuth สําหรับ Apps Script
- แอปที่ไม่ผ่านการตรวจสอบ
- คำถามที่พบบ่อยเกี่ยวกับการยืนยัน OAuth
- บริการ Google APIs: นโยบายข้อมูลผู้ใช้
ขอบเขตที่จํากัด
ขอบเขตบางอย่างถูกจํากัดและอยู่ภายใต้กฎเพิ่มเติมที่ช่วยปกป้องข้อมูลผู้ใช้ หากต้องการเผยแพร่ส่วนเสริม Gmail หรือ Editor ที่ใช้ขอบเขตที่จํากัดอย่างน้อย 1 รายการ ส่วนเสริมต้องเป็นไปตามข้อจํากัดที่ระบุไว้ทั้งหมดก่อนจึงจะเผยแพร่ได้
โปรดดูรายการขอบเขตที่จำกัดทั้งหมดก่อนพยายามเผยแพร่ หากส่วนเสริมใช้ API เหล่านี้ คุณต้องปฏิบัติตามข้อกำหนดเพิ่มเติมสำหรับขอบเขตนั้นๆ ของ API ก่อนเผยแพร่
ขอบเขตของส่วนเสริม Editor
เมื่อคุณสร้างส่วนเสริมของ Editor ขอบเขตที่จําเป็นจะกําหนดโดยบริการ Apps Script และเมธอดที่โค้ดส่วนเสริมใช้ ตัวอย่างเช่น ส่วนเสริมของชีตอาจต้องใช้ขอบเขต https://www.googleapis.com/auth/spreadsheets.readonly
เพื่ออ่านข้อมูลจาก Google ชีตต่างๆ
Apps Script จะกำหนดขอบเขตที่จําเป็นสําหรับบริการที่คุณใช้โดยอัตโนมัติเมื่อคุณเพิ่มโค้ดลงในโปรเจ็กต์สคริปต์ สําหรับส่วนเสริมของ Editor บ่อยครั้งที่คุณใช้การเก็บรวบรวมขอบเขตอัตโนมัตินี้แทนการกำหนดขอบเขตด้วยตนเองและการตั้งค่าอย่างชัดเจนได้
หากคุณไม่ได้ตั้งค่าขอบเขตอย่างชัดเจนและส่วนเสริมเครื่องมือแก้ไขจะอ่านหรือเขียนไฟล์เครื่องมือแก้ไขที่เปิดอยู่เท่านั้น ให้เพิ่มความคิดเห็นต่อไปนี้ลงในไฟล์โปรเจ็กต์สคริปต์
/**
* @OnlyCurrentDoc
*/
ความคิดเห็นนี้บอกให้ Apps Script จำกัดขอบเขตไฟล์เครื่องมือแก้ไขที่กําหนดไว้เป็น
currentonly
ตัวอย่างเช่น หากคุณเพิ่มความคิดเห็นนี้ลงในไฟล์โปรเจ็กต์สคริปต์ของส่วนเสริม Google ชีต แสดงว่าคุณกําลังระบุว่าส่วนเสริมจําเป็นต้องมีสิทธิ์ดำเนินการกับชีตที่เปิดอยู่เท่านั้น ไม่ใช่ชีตอื่นๆ ที่ผู้ใช้อาจมีใน Google ไดรฟ์ ในทางกลับกัน คุณไม่ควรใช้ความคิดเห็นนี้หากส่วนเสริมชีตต้องอ่านหรือเขียนข้อมูลในชีตที่ผู้ใช้ยังไม่ได้เปิด