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

Apps Script प्रोजेक्ट, स्क्रिप्ट और उसके काम करने के तरीके की कुछ जानकारी कॉन्फ़िगर करने के लिए, मेनिफ़ेस्ट फ़ाइल का इस्तेमाल करता है. मेनिफ़ेस्ट को देखने और उसमें बदलाव करने का तरीका जानने के लिए, मेनिफ़ेस्ट देखें.

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

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

Google Workspace ऐड-ऑन, Apps Script प्रोजेक्ट का इस्तेमाल करते हैं ऐड-ऑन के लुक और व्यवहार के कई पहलुओं को तय करने के लिए. Google Workspace ऐड-ऑन के मेनिफ़ेस्ट प्रॉपर्टी को मेनिफ़ेस्ट ऑब्जेक्ट स्ट्रक्चर के addOns सेक्शन में रखा गया है.

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

नीचे दिए गए मेनिफ़ेस्ट का सैंपल, मेनिफ़ेस्ट फ़ाइल के उस सेक्शन को दिखाता है जो Google Workspace ऐड-ऑन के बारे में बताता है. इसमें ये पहलू भी शामिल हैं:

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

सैंपल में दिए गए लिंक, मेनिफ़ेस्ट रेफ़रंस दस्तावेज़ में उस फ़ील्ड के ब्यौरे पर ले जाते हैं.

// Sample configuration of the addOns section in a manifest file:
{
  "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://en.wikipedia.org/wiki/",
        "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"
      }
    },

    "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"
  ],
  "urlFetchWhitelist": [
    "https://www.example.com/myendpoint/"
  ],
}

जिन यूआरएल को अनुमति मिली है उनकी सूची

कभी-कभी हो सकता है कि आप अपनी स्क्रिप्ट या ऐड-ऑन को उपयोगकर्ता कार्रवाई के जवाब में यूआरएल खोलने के लिए चाहें. कभी-कभी, जब आप स्क्रिप्ट या ऐड-ऑन को Apps Script UrlFetch सेवा का इस्तेमाल करके, बाहरी जगह से जानकारी वापस पाना चाहते हों. दोनों मामलों में, आपको उन यूआरएल को अनुमति देनी चाहिए जिन्हें आप प्रोजेक्ट मेनिफ़ेस्ट में खोलते हैं या फ़ेच करते हैं.

अनुमति वाली सूची वह प्रक्रिया है जिसमें आप उन खास यूआरएल को डालते हैं जिन्हें आपकी स्क्रिप्ट या ऐड-ऑन के ऐक्सेस के लिए पहले से मंज़ूरी मिली होती है. इस ज़रूरी शर्त से उपयोगकर्ता का डेटा सुरक्षित रहता है. अगर आप अनुमति वाली सूची तय करते हैं, तो स्क्रिप्ट प्रोजेक्ट ऐसे यूआरएल को ऐक्सेस नहीं कर पाते जिन्हें अनुमति नहीं मिली है. Google Workspace ऐड-ऑन के लिए, यूआरएल को फ़ेच करने या खोलने से पहले, अनुमति वाली सूची में शामिल करना ज़रूरी है.

किसी यूआरएल को फ़ेच करने के लिए, उसे अनुमति दी जा सकती है. इसके लिए, urlFetchWhitelist मेनिफ़ेस्ट फ़ील्ड में कोई मिलता-जुलता यूआरएल या मेल खाने वाला प्रीफ़िक्स जोड़ें. Google Workspace ऐड-ऑन प्रोजेक्ट के लिए, आप यूआरएल को अनुमति दे सकते हैं. इसके लिए, आप addOns.common.openLinkUrlPrefixes मेनिफ़ेस्ट फ़ील्ड में उस यूआरएल को जोड़ सकते हैं या मेल खाने वाला प्रीफ़िक्स जोड़ सकते हैं.

मेनिफ़ेस्ट में जोड़े गए प्रीफ़िक्स को नीचे दी गई शर्तों को पूरा करना होगा:

  • हर प्रीफ़िक्स एक मान्य यूआरएल होना चाहिए.
  • हर प्रीफ़िक्स को 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 ( वाइल्डकार्ड का इस्तेमाल प्रमुख प्रीफ़िक्स के रूप में किया जाना चाहिए)