ส่วนเสริมใช้ไฟล์ไฟล์ Manifest เพื่อกำหนดค่ารายละเอียดบางอย่างเกี่ยวกับแอปและการดำเนินการ
เอกสารประกอบนี้มีรายละเอียดเกี่ยวกับการกำหนดค่าไฟล์ Manifest สำหรับ ส่วนเสริม Google Workspace
โครงสร้างไฟล์ Manifest สำหรับส่วนเสริมของ Google Workspace
ส่วนเสริมของ Google Workspace ใช้ไฟล์ Manifest เพื่อกำหนดองค์ประกอบต่างๆ ของ ส่วนเสริม ลักษณะและลักษณะการทำงาน
พร็อพเพอร์ตี้ไฟล์ Manifest สำหรับส่วนเสริม Google Workspace มีดังนี้
จัดระเบียบในส่วน addOns
ของโครงสร้างออบเจ็กต์ไฟล์ Manifest
- สำหรับข้อมูลเกี่ยวกับไฟล์ Manifest ของ Apps Script โปรดดู โครงสร้างไฟล์ Manifest
- สำหรับข้อมูลเกี่ยวกับไฟล์ Manifest สำหรับส่วนเสริมที่สร้างด้วย
ปลายทาง HTTP โปรดดูทรัพยากร REST:
projects.deployments
ตัวอย่างการกำหนดค่าไฟล์ Manifest ของส่วนเสริมของ Google Workspace
ตัวอย่างไฟล์ Manifest ต่อไปนี้แสดงส่วนของไฟล์ Manifest ที่กำหนด ส่วนเสริมของ Google Workspace ซึ่งรวมถึงสิ่งต่อไปนี้
addOns.common
ส่วนของไฟล์ Manifest จะกำหนดชื่อ, URL ของโลโก้, สี และอื่นๆ ซึ่งเป็นการตั้งค่าที่ไม่เกี่ยวข้องกับโฮสต์สำหรับส่วนเสริม- ไฟล์ Manifest ระบุหน้าแรกที่ใช้กันทั่วไป แต่ยังระบุถึง ปฏิทิน ไดรฟ์ เอกสาร หน้าแรกสำหรับชีต และสไลด์โดยเฉพาะ Gmail ใช้หน้าแรกที่เป็นค่าเริ่มต้น
- ตัวอย่างการตั้งค่าไฟล์ Manifest จะเปิดใช้สิ่งต่อไปนี้
- ทริกเกอร์ปฏิทิน
eventOpen
และeventUpdated
- (สคริปต์ Apps เท่านั้น) 2 ปฏิทิน ของโซลูชันการประชุม
- การกระทำสากล 2 อย่าง
- ไดรฟ์
onItemsSelectedTrigger
- การเขียน Gmail และทริกเกอร์ตามบริบท
- ออบเจ็กต์
linkPreviewTriggers
เอกสาร หากต้องการเรียนรู้เกี่ยวกับทริกเกอร์นี้ ดูแสดงตัวอย่างลิงก์ด้วยชิปอัจฉริยะ - ออบเจ็กต์
createActionTriggers
ของเอกสาร หากต้องการเรียนรู้เกี่ยวกับทริกเกอร์นี้ โปรดดูที่สร้างทรัพยากรของบุคคลที่สามจากเมนู @ - อินเทอร์เฟซเฉพาะไฟล์สำหรับเอกสาร ชีต และสไลด์
- ทริกเกอร์ปฏิทิน
- ช่อง
oauthScopes
ตั้งค่าขอบเขตการให้สิทธิ์สำหรับโครงการ (โดยทั่วไปแล้วจำเป็นต้องใช้ บริการเสริม) - (สคริปต์ Apps เท่านั้น)
urlFetchWhitelist
คือช่องที่ตรวจสอบว่าปลายทางที่ดึงข้อมูลตรงกับ รายการคำนำหน้า HTTPS URL สำหรับข้อมูลเพิ่มเติม โปรดดู URL ในรายการที่อนุญาต
ลิงก์ไปยังตัวอย่างโดยตรงที่ไปยังคำอธิบาย ในฟิลด์ที่เกี่ยวข้อง เอกสารอ้างอิงไฟล์ Manifest สำหรับ Apps Script และ HTTP ส่วนเสริม Google Workspace
Apps Script
{ "addOns": { "calendar": { "createSettingsUrlFunction": "getConferenceSettingsPageUrl", "conferenceSolution": [{ "id": "my-video-conf", "logoUrl": "https://lh3.googleusercontent.com/...", "name": "My Video Conference", "onCreateFunction": "onCreateMyVideoConference" }, { "id": "my-streamed-conf", "logoUrl": "https://lh3.googleusercontent.com/...", "name": "My Streamed Conference", "onCreateFunction": "onCreateMyStreamedConference" }], "currentEventAccess": "READ_WRITE", "eventOpenTrigger": { "runFunction": "onCalendarEventOpen" }, "eventUpdateTrigger": { "runFunction": "onCalendarEventUpdate" }, "eventAttachmentTrigger": { "label": "My Event Attachment", "runFunction": "onCalendarEventAddAttachment" }, "homepageTrigger": { "runFunction": "onCalendarHomePageOpen", "enabled": true } }, "common": { "homepageTrigger": { "runFunction": "onDefaultHomePageOpen", "enabled": true }, "layoutProperties": { "primaryColor": "#ff392b", "secondaryColor": "#d68617" }, "logoUrl": "https://ssl.gstatic.com/docs/script/images/logo/script-64.png", "name": "Demo Google Workspace Add-on", "openLinkUrlPrefixes": [ "https://mail.google.com/", "https://script.google.com/a/google.com/d/", "https://drive.google.com/a/google.com/file/d/", "https://www.example.com/" ], "universalActions": [{ "label": "Open settings", "runFunction": "getSettingsCard" }, { "label": "Open Help URL", "openLink": "https://www.example.com/help" }], "useLocaleFromApp": true }, "drive": { "homepageTrigger": { "runFunction": "onDriveHomePageOpen", "enabled": true }, "onItemsSelectedTrigger": { "runFunction": "onDriveItemsSelected" } }, "gmail": { "composeTrigger": { "selectActions": [ { "text": "Add images to email", "runFunction": "getInsertImageComposeCards" } ], "draftAccess": "METADATA" }, "contextualTriggers": [ { "unconditional": {}, "onTriggerFunction": "onGmailMessageOpen" } ] }, "docs": { "homepageTrigger": { "runFunction": "onEditorsHomepage" }, "onFileScopeGrantedTrigger": { "runFunction": "onFileScopeGrantedEditors" }, "linkPreviewTriggers": [ { "runFunction": "onLinkPreview", "patterns": [ { "hostPattern": "example.com", "pathPrefix": "example-path" } ], "labelText": "Link preview", "localizedLabelText": { "es": "Link preview localized in Spanish" }, "logoUrl": "https://www.example.com/images/smart-chip-icon.png" } ], "createActionTriggers": [ { "id": "exampleId", "labelText": "Example label text", "localizedLabelText": { "es": "Label text localized in Spanish" }, "runFunction": "exampleFunction", "logoUrl": "https://www.example.com/images/case.png" } ] }, "sheets": { "homepageTrigger": { "runFunction": "onEditorsHomepage" }, "onFileScopeGrantedTrigger": { "runFunction": "onFileScopeGrantedEditors" } }, "slides": { "homepageTrigger": { "runFunction": "onEditorsHomepage" }, "onFileScopeGrantedTrigger": { "runFunction": "onFileScopeGrantedEditors" } } }, "oauthScopes": [ "https://www.googleapis.com/auth/calendar.addons.execute", "https://www.googleapis.com/auth/calendar.addons.current.event.read", "https://www.googleapis.com/auth/calendar.addons.current.event.write", "https://www.googleapis.com/auth/drive.addons.metadata.readonly", "https://www.googleapis.com/auth/gmail.addons.current.action.compose", "https://www.googleapis.com/auth/gmail.addons.current.message.metadata", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/script.locale", "https://www.googleapis.com/auth/script.scriptapp", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/documents.currentonly", "https://www.googleapis.com/auth/spreadsheets.currentonly", "https://www.googleapis.com/auth/presentations.currentonly", "https://www.googleapis.com/auth/workspace.linkpreview" ], "urlFetchWhitelist": [ "https://www.example.com/myendpoint/" ] }
HTTP
{ "addOns": { "calendar": { "currentEventAccess": "READ_WRITE", "eventOpenTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarEventOpen" }, "eventUpdateTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarEventUpdate" }, "eventAttachmentTrigger": { "label": "My Event Attachment", "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarEventAddAttachment" }, "homepageTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarHomePageOpen", "enabled": true } }, "common": { "homepageTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onDefaultHomePageOpen", "enabled": true }, "layoutProperties": { "primaryColor": "#ff392b", "secondaryColor": "#d68617" }, "logoUrl": "https://ssl.gstatic.com/docs/script/images/logo/script-64.png", "name": "Demo Google Workspace Add-on", "openLinkUrlPrefixes": [ "https://mail.google.com/", "https://script.google.com/a/google.com/d/", "https://drive.google.com/a/google.com/file/d/", "https://www.example.com/" ], "universalActions": [{ "label": "Open settings", "runFunction": "https://myownpersonaldomain.com/mypage?trigger=getSettingsCard" }, { "label": "Open Help URL", "openLink": "https://www.example.com/help" }], "useLocaleFromApp": true }, "drive": { "homepageTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onDriveHomePageOpen", "enabled": true }, "onItemsSelectedTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onDriveItemsSelected" } }, "gmail": { "composeTrigger": { "actions": [ { "label": "Add images to email", "runFunction": "https://myownpersonaldomain.com/mypage?trigger=getInsertImageComposeCards" } ], "draftAccess": "METADATA" }, "contextualTriggers": [ { "unconditional": {}, "onTriggerFunction": "https://myownpersonaldomain.com/mypage?trigger=onGmailMessageOpen" } ] }, "docs": { "homepageTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onEditorsHomepage" }, "onFileScopeGrantedTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onFileScopeGrantedEditors" }, "linkPreviewTriggers": [ { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onLinkPreview", "patterns": [ { "hostPattern": "example.com", "pathPrefix": "example-path" } ], "labelText": "Link preview", "localizedLabelText": { "es": "Link preview localized in Spanish" }, "logoUrl": "https://www.example.com/images/smart-chip-icon.png" } ], "createActionTriggers": [ { "id": "exampleId", "labelText": "Example label text", "localizedLabelText": { "es": "Label text localized in Spanish" }, "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCreateAction", "logoUrl": "https://www.example.com/images/case.png" } ] }, "sheets": { "homepageTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onEditorsHomepage" }, "onFileScopeGrantedTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onFileScopeGrantedEditors" } }, "slides": { "homepageTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onEditorsHomepage" }, "onFileScopeGrantedTrigger": { "runFunction": "https://myownpersonaldomain.com/mypage?trigger=onFileScopeGrantedEditors" } } }, "oauthScopes": [ "https://www.googleapis.com/auth/calendar.addons.execute", "https://www.googleapis.com/auth/calendar.addons.current.event.read", "https://www.googleapis.com/auth/calendar.addons.current.event.write", "https://www.googleapis.com/auth/drive.addons.metadata.readonly", "https://www.googleapis.com/auth/gmail.addons.current.action.compose", "https://www.googleapis.com/auth/gmail.addons.current.message.metadata", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/script.locale", "https://www.googleapis.com/auth/script.scriptapp", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/documents.currentonly", "https://www.googleapis.com/auth/spreadsheets.currentonly", "https://www.googleapis.com/auth/presentations.currentonly", "https://www.googleapis.com/auth/workspace.linkpreview" ] }
URL ในรายการที่อนุญาต
คุณใช้รายการที่อนุญาตเพื่อระบุ URL ที่เฉพาะเจาะจงซึ่งได้รับอนุมัติล่วงหน้าให้เข้าถึงได้ ตามสคริปต์หรือส่วนเสริมของคุณ รายการที่อนุญาตช่วยปกป้องผู้ใช้ data; เมื่อกำหนดรายการที่อนุญาต โปรเจ็กต์สคริปต์จะไม่มีสิทธิ์เข้าถึง URL ที่มี ไม่ได้อยู่ในรายการที่อนุญาต
ช่องนี้เป็นช่องที่ไม่บังคับเมื่อติดตั้งการทดสอบการทำให้ใช้งานได้ แต่ต้องระบุเมื่อ คุณสามารถสร้างการติดตั้งใช้งาน เวอร์ชันต่างๆ ได้
อนุญาตให้ใช้รายการที่อนุญาตเมื่อสคริปต์หรือส่วนเสริมทำงาน การดำเนินการต่อไปนี้
- ดึงหรือดึงข้อมูลจากตำแหน่งภายนอก (เช่น HTTPS
ปลายทาง) โดยใช้ Apps Script
UrlFetch
service. หากต้องการเพิ่ม URL ลงในรายการที่อนุญาตสำหรับการดึงข้อมูล ให้ใส่ช่องurlFetchWhitelist
ในไฟล์ Manifest - เปิดหรือแสดง URL เพื่อตอบสนองการดำเนินการของผู้ใช้ (ต้องระบุสำหรับ
ส่วนเสริมของ Google Workspace ที่เปิดหรือแสดง URL ที่อยู่ภายนอก
Google) หากต้องการเพิ่ม URL ในรายการที่อนุญาตสำหรับการเปิด ให้ใส่ช่อง
addOns.common.openLinkUrlPrefixes
ใน Manifest
การเพิ่มคำนำหน้าลงในรายการที่อนุญาต
เมื่อคุณระบุรายการที่อนุญาตในไฟล์ Manifest (โดยรวมฟิลด์
addOns.common.openLinkUrlPrefixes
หรือ urlFetchWhitelist
) คุณต้อง
รวมรายการคำนำหน้า URL คำนำหน้าที่คุณเพิ่มลงในไฟล์ Manifest ต้อง
เป็นไปตามข้อกำหนดต่อไปนี้
- คำนำหน้าแต่ละรายการต้องเป็น URL ที่ถูกต้อง
- คำนำหน้าแต่ละรายการต้องใช้
https://
ไม่ใช่http://
- คำนำหน้าแต่ละรายการต้องมีโดเมนแบบเต็ม
- คำนำหน้าแต่ละรายการต้องมีเส้นทางที่ไม่ว่างเปล่า เช่น
https://www.google.com/
ถูกต้อง แต่https://www.google.com
ไม่ถูกต้อง - คุณใช้ไวลด์การ์ดเพื่อจับคู่คำนำหน้าโดเมนย่อยของ URL ได้
- ไวลด์การ์ด
*
รายการเดียวจะสามารถใช้ในaddOns.common.openLinkUrlPrefixes
ให้ตรงกับลิงก์ทั้งหมด แต่ไม่แนะนําให้ใช้เนื่องจากอาจเปิดเผย ข้อมูลของผู้ใช้มีความเสี่ยงและสามารถทำให้ การตรวจสอบส่วนเสริม เฉพาะ ใช้ไวลด์การ์ดหากต้องการฟังก์ชันของส่วนเสริม
กฎต่อไปนี้เมื่อตัดสินว่า URL ตรงกับคำนำหน้าในรายการที่อนุญาตหรือไม่ ใช้:
- การจับคู่เส้นทางคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
- หากคำนำหน้าเหมือนกันกับ URL แสดงว่าเป็นการจับคู่
- หาก URL เหมือนกันหรือเป็น URL ย่อยของคำนำหน้า แสดงว่าเป็นรายการที่ตรงกัน
ตัวอย่างเช่น คำนำหน้า https://example.com/foo
ตรงกับ URL ต่อไปนี้
https://example.com/foo
https://example.com/foo/
https://example.com/foo/bar
https://example.com/foo?bar
https://example.com/foo#bar
การใช้ไวลด์การ์ด
คุณสามารถใช้อักขระไวลด์การ์ดเพียงตัวเดียว (*
) เพื่อจับคู่โดเมนย่อยสำหรับทั้ง
urlFetchWhitelist
และ addOns.common.openLinkUrlPrefixes
ด้วย คุณไม่สามารถใช้ไวลด์การ์ดมากกว่า 1 ตัวเพื่อจับคู่โดเมนย่อยหลายรายการ และ
ไวลด์การ์ดต้องนำหน้า URL นั้น
ตัวอย่างเช่น คำนำหน้า https://*.example.com/foo
ตรงกับรายการต่อไปนี้
URL
https://subdomain.example.com/foo
https://any.number.of.subdomains.example.com/foo
คำนำหน้า https://*.example.com/foo
ไม่ตรงกับรายการต่อไปนี้
URL
https://subdomain.example.com/bar
(คำต่อท้ายไม่ตรงกัน)https://example.com/foo
(ต้องมีโดเมนย่อยอย่างน้อย 1 รายการ)
มีการบังคับใช้กฎคำนำหน้าบางข้อเมื่อคุณพยายามบันทึกไฟล์ Manifest สำหรับ คำนำหน้าต่อไปนี้ทำให้เกิดข้อผิดพลาด ไฟล์ Manifest เมื่อคุณพยายามบันทึก:
https://*.*.example.com/foo
(ห้ามใช้ไวลด์การ์ดหลายรายการ)https://subdomain.*.example.com/foo
(ต้องใช้ไวลด์การ์ดเป็นคำนำหน้านำหน้า)