ऐड-ऑन, ऐप्लिकेशन और उसके ऑपरेशन के बारे में कुछ जानकारी कॉन्फ़िगर करने के लिए, मेनिफ़ेस्ट फ़ाइल का इस्तेमाल करता है.
इस दस्तावेज़ में, Google Workspace ऐड-ऑन के लिए मेनिफ़ेस्ट कॉन्फ़िगर करने के बारे में जानकारी दी गई है.
Google Workspace ऐड-ऑन के लिए मेनिफ़ेस्ट का स्ट्रक्चर
Google Workspace ऐड-ऑन, मेनिफ़ेस्ट फ़ाइल का इस्तेमाल करते हैं. इससे ऐड-ऑन के दिखने के तरीके और उसके व्यवहार से जुड़े कई पहलुओं को तय किया जाता है.
Google Workspace ऐड-ऑन के लिए मेनिफ़ेस्ट प्रॉपर्टी, addOns
सेक्शन में व्यवस्थित की जाती हैं.
Google Apps Script की मेनिफ़ेस्ट फ़ाइलों के बारे में जानकारी के लिए, मेनिफ़ेस्ट का स्ट्रक्चर देखें.
एचटीटीपी एंडपॉइंट का इस्तेमाल करके बनाए गए ऐड-ऑन के लिए, मेनिफ़ेस्ट फ़ाइलों के बारे में जानकारी पाने के लिए,
projects.deploymentsपर जाएं.
Google Chat के लिए मेनिफ़ेस्ट
अगर आपका Google Workspace ऐड-ऑन, Google Chat की सुविधाओं को बढ़ाता है, तो Google Cloud Console में जाकर Google Chat API कॉन्फ़िगर करें.
Chat में, मेनिफ़ेस्ट कॉन्फ़िगरेशन की सामान्य सेटिंग (addons.common भी शामिल है) को अनदेखा किया जाता है. Chat API का इस्तेमाल करके, Chat की इन सेटिंग को कॉन्फ़िगर करें:
- Chat यूज़र इंटरफ़ेस के लिए, Chat ऐप्लिकेशन का नाम, लोगो, और ब्यौरा.
- Chat ऐप्लिकेशन ट्रिगर.
अगर आपने ऐड-ऑन को Apps Script में बनाया है, तो अपने मेनिफ़ेस्ट में ये ऑब्जेक्ट जोड़ें या अपडेट करें:
addons.chat(ज़रूरी है)oauthScopes(अगर आपका Google Chat ऐप्लिकेशन OAuth का इस्तेमाल करता है, तो यह ज़रूरी है)
किसी ऐड-ऑन के लिए Chat की सेटिंग कॉन्फ़िगर करने के लिए, Google Chat API का इस्तेमाल करना लेख पढ़ें.
Google Workspace ऐड-ऑन के मेनिफ़ेस्ट कॉन्फ़िगरेशन का सैंपल
यहां दिए गए उदाहरणों में, मेनिफ़ेस्ट का वह हिस्सा दिखाया गया है जो Google Workspace ऐड-ऑन के बारे में बताता है. इसमें ये पहलू शामिल हैं:
addOns.commonऐड-ऑन के नाम, लोगो, रंगों, और अन्य सामान्य सेटिंग के बारे में बताता है.मेनिफ़ेस्ट में एक सामान्य होम पेज के साथ-साथ, Google Calendar, Google Drive, Google Docs, Google Sheets, और Google Slides के होम पेज भी तय किए जाते हैं. Gmail, डिफ़ॉल्ट होम पेज का इस्तेमाल करता है.
सैंपल मेनिफ़ेस्ट सेटिंग से ये काम किए जा सकते हैं:
कैलेंडर
eventOpenऔरeventUpdatedट्रिगर.(सिर्फ़ Apps Script के लिए) Calendar के दो कॉन्फ़्रेंसिंग के विकल्प.
दो यूनिवर्सल ऐक्शन.
Drive
onItemsSelectedTrigger.Gmail में ईमेल लिखने की सुविधा और कॉन्टेक्स्ट के हिसाब से ट्रिगर होने वाली सुविधा.
Docs का
linkPreviewTriggersऑब्जेक्ट. स्मार्ट चिप की मदद से लिंक की झलक देखना लेख पढ़ें.Docs का
createActionTriggersऑब्जेक्ट. @ मेन्यू से तीसरे पक्ष के संसाधन बनाना लेख पढ़ें.Docs, Sheets, और Slides के लिए, फ़ाइल के हिसाब से इंटरफ़ेस.
Google Meet
sidePanelUriऔरaddOnOriginsविकल्प.(सिर्फ़ एचटीटीपी के लिए) अनुमति देने वाले हेडर को भेजने और अलग से अनुमति लेने की सुविधा के लिए, दो
HttpOptionsकुकी.
oauthScopesफ़ील्ड, प्रोजेक्ट के लिए अनुमति पाने के लिंक सेट करता है.(सिर्फ़ Apps Script के लिए)
urlFetchWhitelistटैग यह पक्का करता है कि फ़ेच किए गए एंडपॉइंट, तय किए गए एचटीटीपीएस यूआरएल प्रीफ़िक्स से मेल खाते हों. अनुमति वाले यूआरएल की सूची देखें.
सैंपल में दिए गए लिंक, मेनिफ़ेस्ट रेफ़रंस में मौजूद फ़ील्ड की जानकारी पर रीडायरेक्ट करते हैं. यह जानकारी, Apps Script और HTTP Google Workspace ऐड-ऑन के लिए होती है.
मेनिफ़ेस्ट में अन्य कॉम्पोनेंट शामिल होते हैं. addOns में मौजूद फ़ील्ड, सीधे तौर पर 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"
}
},
"meet": {
"homepageTrigger",
"Web": [
{
"sidePanelUrl": "https://myownpersonaldomain.com/sidePanelUrl",
"supportsScreenSharing": true,
"addOnOrigins": [
"https://www.myownpersonaldomain.com",
"https://www.myownpersonaldomain.com:443"
],
"logoUrl": "https://myownpersonaldomain.com/logoUrl",
"darkModeLogoUrl": "https://myownpersonaldomain.com/darkModeLogoUrl"
}
},
},
"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"
}
},
"meet": {
"homepageTrigger",
"Web": [
{
"sidePanelUrl": "https://myownpersonaldomain.com/sidePanelUrl",
"supportsScreenSharing": true,
"addOnOrigins": [
"https://www.myownpersonaldomain.com",
"https://www.myownpersonaldomain.com:443"
],
"logoUrl": "https://myownpersonaldomain.com/meetWebLogoUrl",
"darkModeLogoUrl": "https://myownpersonaldomain.com/darkModeLogoUrl"
}
]
},
"httpOptions": {
"authorizationHeader": "SYSTEM_ID_TOKEN",
"granularOauthPermissionSupport": "OPT_IN"
}
},
"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"
]
}
अनुमति वाली सूची में शामिल यूआरएल
अनुमति वाली सूचियों का इस्तेमाल करके, उन यूआरएल को तय किया जाता है जिन्हें आपकी स्क्रिप्ट या ऐड-ऑन से ऐक्सेस करने की पहले से अनुमति मिली हुई है. अनुमति वाली सूचियों से, उपयोगकर्ता के डेटा को सुरक्षित रखने में मदद मिलती है. अनुमति वाली सूची तय करने पर, स्क्रिप्ट प्रोजेक्ट उन यूआरएल को ऐक्सेस नहीं कर सकते जिन्हें अनुमति वाली सूची में नहीं जोड़ा गया है.
टेस्ट डिप्लॉयमेंट इंस्टॉल करते समय, इस फ़ील्ड को भरना ज़रूरी नहीं है. हालांकि, वर्शन वाला डिप्लॉयमेंट बनाते समय, इसे भरना ज़रूरी है.
जब आपकी स्क्रिप्ट या ऐड-ऑन ये कार्रवाइयां करता है, तब आपको अनुमति वाली सूचियों का इस्तेमाल करना चाहिए:
- यह कुकी, Apps Script
UrlFetchसेवा का इस्तेमाल करके, किसी बाहरी जगह (जैसे कि एचटीटीपीएस एंडपॉइंट) से जानकारी वापस लाती है या फ़ेच करती है. डेटा फ़ेच करने के लिए, यूआरएल को अनुमति वाली सूची में शामिल करने के लिए, अपनी मेनिफ़ेस्ट फ़ाइल मेंurlFetchWhitelistफ़ील्ड शामिल करें. - उपयोगकर्ता की कार्रवाई के जवाब में, यूआरएल खोलता है या दिखाता है. यह Google Workspace के उन ऐड-ऑन के लिए ज़रूरी है जो Google से बाहर के यूआरएल खोलते हैं या दिखाते हैं. यूआरएल खोलने की अनुमति वाली सूची में यूआरएल शामिल करने के लिए, अपनी मेनिफ़ेस्ट फ़ाइल में
addOns.common.openLinkUrlPrefixesफ़ील्ड शामिल करें.
अनुमति वाली सूची में प्रीफ़िक्स जोड़ना
मेनिफ़ेस्ट फ़ाइल में अनुमति वाली सूचियां तय करते समय (addOns.common.openLinkUrlPrefixes या urlFetchWhitelist फ़ील्ड में से किसी एक को शामिल करके), आपको यूआरएल प्रीफ़िक्स की सूची शामिल करनी होगी. मेनिफ़ेस्ट में जोड़े गए प्रीफ़िक्स, इन ज़रूरी शर्तों को पूरा करते हों:
- हर प्रीफ़िक्स एक मान्य यूआरएल होना चाहिए.
- हर प्रीफ़िक्स के लिए,
https://का इस्तेमाल करना ज़रूरी है.http://का इस्तेमाल नहीं किया जा सकता. - हर प्रीफ़िक्स में पूरा डोमेन होना चाहिए.
- हर प्रीफ़िक्स का पाथ खाली नहीं होना चाहिए. उदाहरण के लिए,
https://www.google.com/मान्य है, लेकिनhttps://www.google.comमान्य नहीं है. - यूआरएल सबडोमेन प्रीफ़िक्स को मैच करने के लिए, वाइल्डकार्ड का इस्तेमाल किया जा सकता है.
- सभी लिंक को मैच करने के लिए,
addOns.common.openLinkUrlPrefixesफ़ील्ड में एक*वाइल्डकार्ड का इस्तेमाल किया जा सकता है. हालांकि, ऐसा करने का सुझाव नहीं दिया जाता, क्योंकि इससे उपयोगकर्ता के डेटा को जोखिम हो सकता है. साथ ही, ऐड-ऑन की समीक्षा की प्रोसेस में ज़्यादा समय लग सकता है. वाइल्डकार्ड का इस्तेमाल सिर्फ़ तब करें, जब ऐड-ऑन के फ़ंक्शन के लिए इसकी ज़रूरत हो.
यह तय करते समय कि कोई यूआरएल, अनुमति वाली सूची में मौजूद किसी प्रीफ़िक्स से मैच करता है या नहीं, इन नियमों का पालन किया जाता है:
- पाथ मैचिंग, केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) होती है.
- अगर प्रीफ़िक्स, यूआरएल से पूरी तरह मेल खाता है, तो उसे मैच माना जाता है.
- अगर यूआरएल, प्रीफ़िक्स के जैसा है या प्रीफ़िक्स का चाइल्ड है, तो यह मैच है.
उदाहरण के लिए, https://example.com/foo प्रीफ़िक्स, इन यूआरएल से मेल खाता है:
https://example.com/foohttps://example.com/foo/https://example.com/foo/barhttps://example.com/foo?barhttps://example.com/foo#bar
वाइल्डकार्ड का इस्तेमाल करना
urlFetchWhitelist और addOns.common.openLinkUrlPrefixes, दोनों फ़ील्ड के लिए किसी सबडोमेन से मैच करने के लिए, एक वाइल्डकार्ड कैरेक्टर (*) का इस्तेमाल किया जा सकता है. एक से ज़्यादा सबडोमेन से मैच करने के लिए, एक से ज़्यादा वाइल्डकार्ड का इस्तेमाल नहीं किया जा सकता. साथ ही, वाइल्डकार्ड को यूआरएल के शुरुआती प्रीफ़िक्स को दिखाना चाहिए.
उदाहरण के लिए, प्रीफ़िक्स https://*.example.com/foo इन यूआरएल से मेल खाता है:
https://subdomain.example.com/foohttps://any.number.of.subdomains.example.com/foo
https://*.example.com/foo प्रीफ़िक्स, इन यूआरएल से मेल नहीं खाता:
https://subdomain.example.com/bar(सफ़िक्स मेल नहीं खाता)https://example.com/foo(कम से कम एक सबडोमेन मौजूद होना चाहिए)
मेनिफ़ेस्ट सेव करते समय, प्रीफ़िक्स से जुड़े कुछ नियमों को लागू किया जाता है. उदाहरण के लिए, अगर सेव करते समय आपके मेनिफ़ेस्ट में ये प्रीफ़िक्स मौजूद हैं, तो गड़बड़ी होगी:
https://*.*.example.com/foo(एक से ज़्यादा वाइल्डकार्ड इस्तेमाल करने की अनुमति नहीं है)https://subdomain.*.example.com/foo(वाइल्डकार्ड का इस्तेमाल, लीडिंग प्रीफ़िक्स के तौर पर किया जाना चाहिए)