একটি অ্যাড-অন অ্যাপ এবং এর কার্যকারিতা সম্পর্কে নির্দিষ্ট বিবরণ কনফিগার করার জন্য একটি ম্যানিফেস্ট ফাইল ব্যবহার করে।
এই ডকুমেন্টেশনে Google Workspace অ্যাড-অনের জন্য একটি ম্যানিফেস্ট কনফিগার করার বিশদ বিবরণ রয়েছে।
Google Workspace অ্যাড-অনের জন্য ম্যানিফেস্ট স্ট্রাকচার
Google Workspace অ্যাড-অনগুলি ম্যানিফেস্ট ফাইল ব্যবহার করে অ্যাড-অনের চেহারা এবং আচরণের বিভিন্ন দিক নির্ধারণ করে।
গুগল ওয়ার্কস্পেস অ্যাড-অনের ম্যানিফেস্ট প্রপার্টিগুলি ম্যানিফেস্ট অবজেক্ট স্ট্রাকচারের addOns বিভাগের অধীনে সংগঠিত করা হয়।
অ্যাপস স্ক্রিপ্ট ম্যানিফেস্ট ফাইল সম্পর্কে তথ্যের জন্য, ম্যানিফেস্ট স্ট্রাকচার দেখুন।
HTTP এন্ডপয়েন্ট দিয়ে তৈরি অ্যাড-অনের জন্য ম্যানিফেস্ট ফাইল সম্পর্কে তথ্যের জন্য,
projects.deploymentsরিসোর্সটি দেখুন।
গুগল চ্যাটের জন্য ম্যানিফেস্ট
যদি আপনার Google Workspace অ্যাড-অন Google Chat প্রসারিত করে, তাহলে আপনাকে Google Cloud কনসোলে Google Chat API সক্ষম এবং কনফিগার করে একটি Google Chat অ্যাপ কনফিগার করতে হবে।
চ্যাটে সাধারণ ম্যানিফেস্ট কনফিগারেশন সেটিংস ( addons.common সহ) উপেক্ষা করা হয়। অ্যাড-অন ম্যানিফেস্ট ব্যবহার করার পরিবর্তে, আপনি নিম্নলিখিত চ্যাট সেটিংস কনফিগার করতে Chat API ব্যবহার করেন:
- চ্যাট অ্যাপের নাম, লোগো এবং বিবরণ, যা শুধুমাত্র চ্যাট UI-তে দেখা যায়।
- চ্যাট অ্যাপ ট্রিগার করে ।
যদি আপনি অ্যাপস স্ক্রিপ্টে অ্যাড-অন তৈরি করে থাকেন, তাহলে আপনার ম্যানিফেস্টে নিম্নলিখিত অবজেক্টগুলিও যোগ বা আপডেট করতে হবে:
-
addons.chat(প্রয়োজনীয়) -
oauthScopes(আপনার Google Chat অ্যাপ যদি OAuth স্কোপ ব্যবহার করে তবে এটি প্রয়োজন)
অ্যাড-অনের জন্য চ্যাট সেটিংস কনফিগার করার ধাপগুলির জন্য, একটি Google চ্যাট অ্যাপ কনফিগার করুন দেখুন।
Google Workspace অ্যাড-অন ম্যানিফেস্ট কনফিগারেশনের নমুনা
নিম্নলিখিত ম্যানিফেস্ট নমুনাগুলি একটি ম্যানিফেস্ট ফাইলের সেই অংশটি দেখায় যা Google Workspace অ্যাড-অনকে সংজ্ঞায়িত করে, যার মধ্যে নিম্নলিখিত দিকগুলি অন্তর্ভুক্ত রয়েছে:
ম্যানিফেস্টের
addOns.commonবিভাগটি অ্যাড-অনের নাম, লোগো URL, রঙ এবং অন্যান্য সাধারণ, হোস্ট-স্বাধীন সেটিংস সংজ্ঞায়িত করে।ম্যানিফেস্টটি একটি সাধারণ হোমপেজ সংজ্ঞায়িত করে, তবে Google ক্যালেন্ডার, Google ড্রাইভ, Google ডক্স, শীট এবং স্লাইড-নির্দিষ্ট হোমপেজগুলিকেও সংজ্ঞায়িত করে। Gmail ডিফল্ট হোমপেজ ব্যবহার করে।
নমুনা ম্যানিফেস্ট সেটিংস নিম্নলিখিতগুলি সক্ষম করে:
ক্যালেন্ডার
eventOpenএবংeventUpdatedট্রিগার।(শুধুমাত্র অ্যাপস স্ক্রিপ্ট) দুটি ক্যালেন্ডার কনফারেন্স সমাধান ।
দুটি সর্বজনীন কর্ম।
একটি ড্রাইভ
onItemsSelectedTrigger।একটি জিমেইল রচনা অ্যাকশন এবং প্রাসঙ্গিক ট্রিগার।
একটি Docs
linkPreviewTriggersঅবজেক্ট। এই ট্রিগার সম্পর্কে জানতে, স্মার্ট চিপস সহ প্রিভিউ লিঙ্কগুলি দেখুন।একটি Docs
createActionTriggersঅবজেক্ট। এই ট্রিগার সম্পর্কে জানতে, @ মেনু থেকে তৃতীয় পক্ষের রিসোর্স তৈরি করুন দেখুন।ডক্স, শিট এবং স্লাইডের জন্য ফাইল-নির্দিষ্ট ইন্টারফেস।
একটি Meet
sidePanelUriএবংaddOnOriginsবিকল্প।(শুধুমাত্র HTTP) অনুমোদনের শিরোনাম পাঠানোর জন্য এবং গ্রানুলার সম্মতি সমর্থন করার জন্য দুটি
HttpOptions।
oauthScopesক্ষেত্রটি প্রকল্পের জন্য অনুমোদনের সুযোগ নির্ধারণ করে (সাধারণত অ্যাড-অনের জন্য প্রয়োজন)।(শুধুমাত্র অ্যাপস স্ক্রিপ্ট)
urlFetchWhitelistফিল্ড হল এমন একটি ফিল্ড যা নিশ্চিত করে যে যেকোনো আনা এন্ডপয়েন্ট HTTPS URL প্রিফিক্সের একটি নির্দিষ্ট তালিকার সাথে মেলে। আরও তথ্যের জন্য, Allowlist URL গুলি দেখুন।
ম্যানিফেস্ট নমুনার লিঙ্কগুলি অ্যাপস স্ক্রিপ্ট এবং HTTP গুগল ওয়ার্কস্পেস অ্যাড-অনের জন্য সংশ্লিষ্ট ম্যানিফেস্ট রেফারেন্স ডকুমেন্টেশনে সেই ক্ষেত্রের বর্ণনায় পুনঃনির্দেশিত করে।
অ্যাপস স্ক্রিপ্ট
{
"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" ] }
অ্যালাউলিস্টের ইউআরএল
আপনার স্ক্রিপ্ট বা অ্যাড-অন দ্বারা অ্যাক্সেসের জন্য পূর্বে অনুমোদিত নির্দিষ্ট URLগুলি নির্ধারণ করতে আপনি অ্যালাউলিস্ট ব্যবহার করেন। অ্যালাউলিস্ট ব্যবহারকারীর ডেটা সুরক্ষিত রাখতে সাহায্য করে; যখন আপনি একটি অ্যালাউলিস্ট সংজ্ঞায়িত করেন, তখন স্ক্রিপ্ট প্রোজেক্টগুলি এমন URL অ্যাক্সেস করতে পারে না যেগুলি অ্যালাউলিস্টে যোগ করা হয়নি।
যখন আপনি একটি পরীক্ষামূলক স্থাপনা ইনস্টল করেন তখন এই ক্ষেত্রটি ঐচ্ছিক, কিন্তু যখন আপনি একটি সংস্করণযুক্ত স্থাপনা তৈরি করেন তখন এটি প্রয়োজন।
আপনার স্ক্রিপ্ট বা অ্যাড-অন যখন নিম্নলিখিত ক্রিয়াগুলি সম্পাদন করে তখন আপনি অ্যালাউলিস্ট ব্যবহার করেন:
- Apps Script
UrlFetchপরিষেবা ব্যবহার করে কোনও বহিরাগত অবস্থান (যেমন HTTPS এন্ডপয়েন্ট) থেকে তথ্য সংগ্রহ করে বা আনে। আনেচিংয়ের জন্য URL গুলিকে allowlist করতে, আপনার ম্যানিফেস্ট ফাইলেurlFetchWhitelistফিল্ডটি অন্তর্ভুক্ত করুন। - ব্যবহারকারীর কোনও অ্যাকশনের প্রতিক্রিয়ায় একটি URL খোলে বা প্রদর্শন করে (Google Workspace অ্যাড-অনগুলির জন্য প্রয়োজনীয় যা Google-এর বাইরের URL গুলি খোলে বা প্রদর্শন করে)। খোলার জন্য URL গুলিকে allowlist করতে, আপনার ম্যানিফেস্ট ফাইলে
addOns.common.openLinkUrlPrefixesফিল্ডটি অন্তর্ভুক্ত করুন।
আপনার সাদা তালিকায় প্রিফিক্স যোগ করা হচ্ছে
যখন আপনি আপনার ম্যানিফেস্ট ফাইলে allowlist নির্দিষ্ট করেন ( addOns.common.openLinkUrlPrefixes অথবা urlFetchWhitelist ফিল্ড অন্তর্ভুক্ত করে), তখন আপনাকে URL প্রিফিক্সের একটি তালিকা অন্তর্ভুক্ত করতে হবে। ম্যানিফেস্টে আপনি যে প্রিফিক্সগুলি যোগ করবেন সেগুলি অবশ্যই নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করবে:
- প্রতিটি প্রিফিক্স অবশ্যই একটি বৈধ URL হতে হবে।
- প্রতিটি উপসর্গে
https://ব্যবহার করা উচিত,http://নয়। - প্রতিটি উপসর্গের একটি পূর্ণ ডোমেইন থাকতে হবে।
- প্রতিটি প্রিফিক্সের একটি খালি পাথ থাকতে হবে। উদাহরণস্বরূপ,
https://www.google.com/বৈধ কিন্তুhttps://www.google.comবৈধ নয়। - আপনি ইউআরএল সাবডোমেন প্রিফিক্স মেলাতে ওয়াইল্ডকার্ড ব্যবহার করতে পারেন।
-
addOns.common.openLinkUrlPrefixesক্ষেত্রে সমস্ত লিঙ্ক মেলানোর জন্য একটি একক*ওয়াইল্ডকার্ড ব্যবহার করা যেতে পারে, তবে এটি সুপারিশ করা হয় না কারণ এটি ব্যবহারকারীর ডেটা ঝুঁকির মুখে ফেলতে পারে এবং অ্যাড-অন পর্যালোচনা প্রক্রিয়াকে দীর্ঘায়িত করতে পারে। আপনার অ্যাড-অন কার্যকারিতার প্রয়োজন হলেই কেবল একটি ওয়াইল্ডকার্ড ব্যবহার করুন।
কোনও 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 উভয় ক্ষেত্রের জন্য একটি সাবডোমেন মেলানোর জন্য আপনি একটি একক ওয়াইল্ডকার্ড অক্ষর ( * ) ব্যবহার করতে পারেন। একাধিক সাবডোমেন মেলানোর জন্য আপনি একাধিক ওয়াইল্ডকার্ড ব্যবহার করতে পারবেন না এবং ওয়াইল্ডকার্ডটি অবশ্যই 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(কমপক্ষে একটি সাবডোমেন উপস্থিত থাকতে হবে)
আপনার ম্যানিফেস্ট সংরক্ষণ করার সময় কিছু প্রিফিক্স নিয়ম প্রয়োগ করা হয়। উদাহরণস্বরূপ, সংরক্ষণ করার সময় নিম্নলিখিত প্রিফিক্সগুলি আপনার ম্যানিফেস্টে উপস্থিত থাকলে ত্রুটি সৃষ্টি করে:
-
https://*.*.example.com/foo(একাধিক ওয়াইল্ডকার্ড নিষিদ্ধ) -
https://subdomain.*.example.com/foo(ওয়াইল্ডকার্ড অবশ্যই লিডিং প্রিফিক্স হিসেবে ব্যবহার করতে হবে)