Google Workspace ऐड-ऑन के लिए मेनिफ़ेस्ट फ़ाइल

ऐड-ऑन, मेनिफ़ेस्ट फ़ाइल का इस्तेमाल करता है का इस्तेमाल करें.

इस दस्तावेज़ में मेनिफ़ेस्ट को कॉन्फ़िगर करने का तरीका बताया गया है Google Workspace ऐड-ऑन.

Google Workspace ऐड-ऑन के लिए मेनिफ़ेस्ट स्ट्रक्चर

Google Workspace ऐड-ऑन, मेनिफ़ेस्ट फ़ाइल का इस्तेमाल करता है, ताकि ऐड-ऑन और व्यवहार.

Google Workspace ऐड-ऑन के लिए मेनिफ़ेस्ट प्रॉपर्टी इसे मेनिफ़ेस्ट ऑब्जेक्ट स्ट्रक्चर के addOns सेक्शन में व्यवस्थित किया गया है.

Google Workspace ऐड-ऑन मेनिफ़ेस्ट कॉन्फ़िगरेशन का सैंपल

नीचे दिया गया मेनिफ़ेस्ट सैंपल, मेनिफ़ेस्ट फ़ाइल का वह सेक्शन दिखाता है जिसमें Google Workspace ऐड-ऑन के साथ-साथ ये सुविधाएं भी शामिल हैं:

  • addOns.common मेनिफ़ेस्ट के सेक्शन में नाम, लोगो का यूआरएल, रंग वगैरह के बारे में जानकारी होती है सामान्य, होस्ट-इंडिपेंडेंट सेटिंग.
  • मेनिफ़ेस्ट सामान्य होम पेज के बारे में बताता है, लेकिन यह भी बताता है कि Calendar, Drive, Docs, शीट और Slides के हिसाब से होम पेज. Gmail डिफ़ॉल्ट होम पेज का इस्तेमाल करता है.
  • मेनिफ़ेस्ट की नमूना सेटिंग से ये सुविधाएं चालू होती हैं:
  • oauthScopes फ़ील्ड प्रोजेक्ट की अनुमति के दायरे सेट करता है (आम तौर पर, ऐड-ऑन).
  • (सिर्फ़ Apps स्क्रिप्ट) urlFetchWhitelist फ़ील्ड एक ऐसा फ़ील्ड है जो पक्का करता है कि फ़ेच किए गए एंडपॉइंट किसी खास एंडपॉइंट से मेल खाते हों एचटीटीपीएस यूआरएल प्रीफ़िक्स की सूची. ज़्यादा जानकारी के लिए, यह देखें जिन यूआरएल को अनुमति दी गई है उनकी सूची में शामिल यूआरएल.

सैंपल में मौजूद लिंक, प्रॉडक्ट के ब्यौरे पर ले जाते हैं संबंधित फ़ील्ड में उस फ़ील्ड की Apps Script के लिए मेनिफ़ेस्ट रेफ़रंस दस्तावेज़ और एचटीटीपी 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"
  ]
}

अनुमति वाली सूची में शामिल यूआरएल

अनुमति वाली सूची का इस्तेमाल करके, उन यूआरएल की जानकारी दी जाती है जिन्हें ऐक्सेस करने की पहले से अनुमति मिली हुई है आपकी स्क्रिप्ट या ऐड-ऑन के हिसाब से. जिन लोगों या संगठनों को अनुमति मिली है उनकी सूची, उपयोगकर्ता को सुरक्षित रखने में मदद करती है data; अनुमति वाली सूची बनाने पर, स्क्रिप्ट प्रोजेक्ट ऐसे यूआरएल ऐक्सेस नहीं कर सकते जिनमें अनुमति वाली सूची में शामिल नहीं किया गया.

टेस्ट डिप्लॉयमेंट इंस्टॉल करते समय, इस फ़ील्ड की वैल्यू सबमिट करना ज़रूरी नहीं है. हालांकि, इसकी ज़रूरत तब पड़ती है, जब तो अलग-अलग वर्शन बनाकर डिप्लॉयमेंट किया जा सकता है.

स्क्रिप्ट या ऐड-ऑन के काम करने के दौरान, अनुमति वाली सूची का इस्तेमाल किया जाता है ये कार्रवाइयां की जा सकती हैं:

  • किसी बाहरी जगह (जैसे कि एचटीटीपीएस) से जानकारी हासिल करता है या उसे फ़ेच करता है एंडपॉइंट) 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/foo
  • https://example.com/foo/
  • https://example.com/foo/bar
  • https://example.com/foo?bar
  • https://example.com/foo#bar

वाइल्डकार्ड का इस्तेमाल करना

आप दोनों के लिए एक सबडोमेन का मिलान करने के लिए एक वाइल्डकार्ड वर्ण (*) का इस्तेमाल कर सकते हैं urlFetchWhitelist और addOns.common.openLinkUrlPrefixes फ़ील्ड. एक से ज़्यादा सबडोमेन से मैच करने के लिए, एक से ज़्यादा वाइल्डकार्ड का इस्तेमाल नहीं किया जा सकता और वाइल्डकार्ड को यूआरएल की शुरुआत में जोड़ा जाना चाहिए.

उदाहरण के लिए, प्रीफ़िक्स https://*.example.com/foo इससे मिलता-जुलता है यूआरएल:

  • https://subdomain.example.com/foo
  • https://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 अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है (वाइल्डकार्ड का इस्तेमाल सबसे पहले प्रीफ़िक्स के तौर पर किया जाना चाहिए)