ऐड-ऑन, ऐप्लिकेशन और उसके ऑपरेशन के बारे में कुछ जानकारी कॉन्फ़िगर करने के लिए, मेनिफ़ेस्ट फ़ाइल का इस्तेमाल करता है.
इस दस्तावेज़ में, Google Workspace ऐड-ऑन के लिए मेनिफ़ेस्ट कॉन्फ़िगर करने के बारे में जानकारी दी गई है.
Google Workspace ऐड-ऑन के लिए मेनिफ़ेस्ट का स्ट्रक्चर
Google Workspace ऐड-ऑन, मेनिफ़ेस्ट फ़ाइल का इस्तेमाल करके, ऐड-ऑन के दिखने के तरीके और उसके व्यवहार के बारे में बताते हैं.
Google Workspace ऐड-ऑन के लिए मेनिफ़ेस्ट प्रॉपर्टी, addOns
सेक्शन में व्यवस्थित की जाती हैं.
Google Apps Script की मेनिफ़ेस्ट फ़ाइलों के बारे में जानने के लिए, मेनिफ़ेस्ट का स्ट्रक्चर लेख पढ़ें.
एचटीटीपी एंडपॉइंट का इस्तेमाल करके बनाए गए ऐड-ऑन के लिए, मेनिफ़ेस्ट फ़ाइलों के बारे में जानकारी पाने के लिए,
projects.deploymentsपर जाएं.
Google Chat के लिए मेनिफ़ेस्ट
अगर आपका Google Workspace ऐड-ऑन, Google Chat की सुविधाओं को बढ़ाता है, तो Google Chat ऐप्लिकेशन को कॉन्फ़िगर करें. इसके लिए, Google Cloud Console में Google Chat API को चालू करें और उसे कॉन्फ़िगर करें.
Chat में, सामान्य मेनिफ़ेस्ट कॉन्फ़िगरेशन सेटिंग (इसमें addons.common भी शामिल है) को अनदेखा किया जाता है. Chat की इन सेटिंग को कॉन्फ़िगर करने के लिए, Chat API का इस्तेमाल करें:
- Chat ऐप्लिकेशन का नाम, लोगो, और ब्यौरा, जो Chat के यूज़र इंटरफ़ेस (यूआई) के लिए है.
- Chat ऐप्लिकेशन ट्रिगर.
अगर आपने ऐड-ऑन को Apps Script में बनाया है, तो अपने मेनिफ़ेस्ट में ये ऑब्जेक्ट जोड़ें या अपडेट करें:
addons.chat(ज़रूरी है)oauthScopes(अगर आपका Google Chat ऐप्लिकेशन OAuth का इस्तेमाल करता है, तो यह ज़रूरी है)
किसी ऐड-ऑन के लिए Chat की सेटिंग कॉन्फ़िगर करने के लिए, Google Chat ऐप्लिकेशन कॉन्फ़िगर करना लेख पढ़ें.
Google Workspace ऐड-ऑन के मेनिफ़ेस्ट कॉन्फ़िगरेशन का सैंपल
यहां दिए गए उदाहरणों में, मेनिफ़ेस्ट का वह हिस्सा दिखाया गया है जो Google Workspace ऐड-ऑन के बारे में बताता है. इसमें ये पहलू शामिल हैं:
addOns.commonमें ऐड-ऑन का नाम, लोगो, रंग, और अन्य सामान्य सेटिंग तय की जाती हैं.मेनिफ़ेस्ट में एक सामान्य होम पेज के साथ-साथ, Google Calendar, Google Drive, Google Docs, Google Sheets, और Google Slides के होम पेज भी तय किए जाते हैं. Gmail, डिफ़ॉल्ट होम पेज का इस्तेमाल करता है.
सैंपल मेनिफ़ेस्ट सेटिंग से ये काम किए जा सकते हैं:
Calendar
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(वाइल्डकार्ड का इस्तेमाल, लीडिंग प्रीफ़िक्स के तौर पर किया जाना चाहिए)