এই নির্দেশিকায় ইনপুট ভেরিয়েবল তৈরি করার পদ্ধতি ব্যাখ্যা করা হয়েছে।
ধাপগুলো চালানোর জন্য নির্দিষ্ট কিছু তথ্যের প্রয়োজন হয়। উদাহরণস্বরূপ, একটি ইমেল পাঠাতে একটি ইমেল ঠিকানা লাগে। ধাপগুলোকে এই প্রয়োজনীয় তথ্য সরবরাহ করার জন্য, ইনপুট ভেরিয়েবল সংজ্ঞায়িত করুন। একবার সংজ্ঞায়িত হয়ে গেলে, ব্যবহারকারী যখন ধাপটি সেট আপ করেন, তখন সাধারণত ধাপটির কনফিগারেশন কার্ডে ইনপুট ভেরিয়েবলগুলো সেট করে দেন।
ইনপুট ভেরিয়েবলটি দুটি জায়গায় সংজ্ঞায়িত করুন: অ্যাড-অনটির ম্যানিফেস্ট ফাইলে এবং কোডে একটি কনফিগারেশন কার্ডের মাধ্যমে, যেখানে ব্যবহারকারীরা ইনপুট ভেরিয়েবলের জন্য মান প্রবেশ করাতে পারবেন।
ম্যানিফেস্ট ফাইলে ইনপুট ভেরিয়েবলটি সংজ্ঞায়িত করুন।
ম্যানিফেস্ট ফাইলে inputs[] অ্যারে ব্যবহার করে ইনপুট ভেরিয়েবলগুলো নির্দিষ্ট করুন। inputs[] অ্যারের প্রতিটি আইটেমের এই বৈশিষ্ট্যগুলো রয়েছে:
-
id: ইনপুট ভেরিয়েবলের জন্য অনন্য শনাক্তকারী। ফ্লো যাতে একটি কনফিগারেশন কার্ড ইনপুট এলিমেন্টকে এই ইনপুট ভেরিয়েবলের সাথে যুক্ত করতে পারে, তার জন্য id-এর নাম অবশ্যই সংশ্লিষ্ট কার্ড এলিমেন্টের নামের সাথে মিলতে হবে। -
description: ব্যবহারকারীদের দেখানোর জন্য ইনপুট ভেরিয়েবলের একটি বর্ণনা। -
cardinality: কতগুলি মান অনুমোদিত। সম্ভাব্য মানগুলি হলো:-
SINGLE: শুধুমাত্র একটি মান অনুমোদিত।
-
-
dataType: গৃহীত মানের ধরণ।dataTypebasicTypeনামক একটি প্রপার্টি আছে যা ডেটার ধরণ নির্ধারণ করে। বৈধ মানগুলো হলো:-
STRING: একটি আলফানিউমেরিক স্ট্রিং। -
INTEGER: একটি সংখ্যা। -
TIMESTAMP: 'মিলিসেকেন্ড সিন্স ইউনিক্স ইপক' ফরম্যাটে একটি টাইমস্ট্যাম্প। উদাহরণস্বরূপ, নভেম্বর ২৭, ২০২৫, ১৬:৪৯:০২ UTC-কে1764262142988হিসাবে উপস্থাপন করা হয়। -
BOOLEAN: হয় সত্য অথবা মিথ্যা। -
EMAIL_ADDRESS:dana@example.comফরম্যাটের একটি ইমেইল ঠিকানা।
-
নিম্নলিখিত উদাহরণটি একটি ক্যালকুলেটর স্টেপের জন্য তিনটি ইনপুট ভেরিয়েবল নির্ধারণ করে। প্রথম দুটি ইনপুট ভেরিয়েবল হলো পূর্ণসংখ্যা, এবং তৃতীয়টি একটি গাণিতিক প্রক্রিয়া।
JSON
{
"timeZone": "America/Los_Angeles",
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Calculator",
"logoUrl": "https://www.gstatic.com/images/branding/productlogos/calculator_search/v1/web-24dp/logo_calculator_search_color_1x_web_24dp.png",
"useLocaleFromApp": true
},
"flows": {
"workflowElements": [
{
"id": "calculatorDemo",
"state": "ACTIVE",
"name": "Calculate",
"description": "Asks the user for two values and a math operation, then performs the math operation on the values and outputs the result.",
"workflowAction": {
"inputs": [
{
"id": "value1",
"description": "value1",
"cardinality": "SINGLE",
"dataType": {
"basicType": "INTEGER"
}
},
{
"id": "value2",
"description": "value2",
"cardinality": "SINGLE",
"dataType": {
"basicType": "INTEGER"
}
},
{
"id": "operation",
"description": "operation",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
}
],
"outputs": [
{
"id": "result",
"description": "Calculated result",
"cardinality": "SINGLE",
"dataType": {
"basicType": "INTEGER"
}
}
],
"onConfigFunction": "onConfigCalculate",
"onExecuteFunction": "onExecuteCalculate"
}
}
]
}
}
}
কোডে ইনপুট ভেরিয়েবল সংজ্ঞায়িত করুন
এই ধাপের কোডে onConfigFunction() নামে একটি ফাংশন রয়েছে, যা একটি কনফিগারেশন কার্ড রিটার্ন করে। এই কনফিগারেশন কার্ডটি ম্যানিফেস্ট ফাইলের inputs[] অ্যারেতে সংজ্ঞায়িত প্রতিটি ইনপুট ভেরিয়েবলের জন্য একটি করে ইনপুট কার্ড উইজেট নির্ধারণ করে।
কনফিগারেশন কার্ডে সংজ্ঞায়িত ইনপুট উইজেটগুলোর নিম্নলিখিত প্রয়োজনীয়তা রয়েছে:
- প্রতিটি ইনপুট উইজেটের
nameঅবশ্যই ম্যানিফেস্ট ফাইলে থাকা তার সংশ্লিষ্ট ইনপুট ভেরিয়েবলেরidসাথে মিলতে হবে। - ইনপুট উইজেটের কার্ডিনালিটি অবশ্যই ম্যানিফেস্ট ফাইলে থাকা ইনপুট ভেরিয়েবলের
cardinalityসাথে মিলতে হবে। - ইনপুট উইজেটের ডেটা টাইপ অবশ্যই ম্যানিফেস্ট ফাইলে থাকা ইনপুট ভেরিয়েবলের
dataTypeসাথে মিলতে হবে। যদি ইনপুট ভেরিয়েবলেরdataTypeইন্টিজার হয়, তবে এটি কোনো স্ট্রিং ধারণ করতে পারবে না।
কার্ড ইন্টারফেস তৈরির জন্য সাহায্যের প্রয়োজন হলে, এই বিকল্পগুলোর মধ্যে একটি দেখুন:
- কার্ড বিল্ডার : একটি ইন্টারেক্টিভ টুল যা ব্যবহার করে আপনি কার্ড তৈরি ও সংজ্ঞায়িত করতে পারেন।
- কার্ড : গুগল ওয়ার্কস্পেস অ্যাড-অন এপিআই রেফারেন্স ডকুমেন্টেশনে।
- কার্ড সার্ভিস : একটি অ্যাপস স্ক্রিপ্ট সার্ভিস যা স্ক্রিপ্টকে কার্ড কনফিগার ও বিল্ড করতে দেয়।
- কার্ড-ভিত্তিক ইন্টারফেসের সংক্ষিপ্ত বিবরণ : গুগল ওয়ার্কস্পেস অ্যাড-অন ডেভেলপার ডকুমেন্টেশনে।
নিম্নলিখিত উদাহরণটি ম্যানিফেস্ট ফাইলে ইনপুট ভেরিয়েবল সংজ্ঞায়িত করে প্রতিটি ইনপুট উইজেটের জন্য একটি কনফিগারেশন কার্ড ফেরত দেয়।
অ্যাপস স্ক্রিপ্ট
/**
* Generates and displays a configuration card for the sample calculation step.
*
* This function creates a card with input fields for two values and a drop-down
* for selecting an arithmetic operation.
*
* The input fields are configured to let the user select outputs from previous
* workflow steps as input values using the `hostAppDataSource` property.
*/
function onConfigCalculate() {
const firstInput = CardService.newTextInput()
.setFieldName("value1") // "FieldName" must match an "id" in the manifest file's inputs[] array.
.setTitle("First Value")
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
)
);
const secondInput = CardService.newTextInput()
.setFieldName("value2") // "FieldName" must match an "id" in the manifest file's inputs[] array.
.setTitle("Second Value")
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
)
);
const selectionInput = CardService.newSelectionInput()
.setTitle("operation")
.setFieldName("operation") // "FieldName" must match an "id" in the manifest file's inputs[] array.
.setType(CardService.SelectionInputType.DROPDOWN)
.addItem("+", "+", false)
.addItem("-", "-", true)
.addItem("x", "x", false)
.addItem("/", "/", false);
const sections = CardService.newCardSection()
.setHeader("Action_sample: Calculate")
.setId("section_1")
.addWidget(firstInput)
.addWidget(selectionInput)
.addWidget(secondInput)
let card = CardService.newCardBuilder()
.addSection(sections)
.build();
return card;
}
পূর্ববর্তী ধাপগুলি থেকে আউটপুট ভেরিয়েবল ব্যবহার করুন
আপনি ওয়ার্কফ্লোর পূর্ববর্তী ধাপগুলো থেকে আউটপুট ভেরিয়েবল গ্রহণ করার জন্য ইনপুট ভেরিয়েবল কনফিগার করতে পারেন।
ভেরিয়েবল নির্বাচন সক্ষম করুন
ব্যবহারকারীদের পূর্ববর্তী ধাপগুলো থেকে ভেরিয়েবল নির্বাচন করার সুযোগ দিতে, TextInput এবং SelectionInput উইজেটগুলোতে includeVariables প্রপার্টি ব্যবহার করুন।
TextInput এবং SelectionInput উইজেটগুলোতে Workspace Studio-এর এই নির্দিষ্ট বৈশিষ্ট্যগুলো রয়েছে:
-
includeVariables: একটি বুলিয়ান প্রপার্টি যা ব্যবহারকারীদের পূর্ববর্তী ধাপগুলো থেকে ভেরিয়েবল নির্বাচন করতে দেয়। পরবর্তী ধাপগুলোতে ভেরিয়েবল পিকার প্রদর্শিত হওয়ার জন্য, প্রারম্ভিক ইভেন্ট এবং অন্তত একটি সংশ্লিষ্ট আউটপুট ভেরিয়েবল উভয়কেই এই ভেরিয়েবলটির সাথে ম্যাপ করতে হবে। -
type: একটি সংখ্যাভিত্তিক মান যা সাজেশনগুলো স্বয়ংক্রিয়ভাবে পূরণ করে। সমর্থিত মানগুলো হলো:-
USER: ব্যবহারকারীর পরিচিতি তালিকায় থাকা ব্যক্তিদের জন্য স্বয়ংক্রিয়ভাবে পূরণ করার পরামর্শ প্রদান করে। -
SPACE: ব্যবহারকারী যে গুগল চ্যাট স্পেসগুলোর সদস্য, সেগুলোর জন্য স্বয়ংক্রিয়ভাবে পূরণ করার পরামর্শ প্রদান করে।
-
যখন includeVariables এবং type উভয়ই সেট করা থাকে, তখন ইনপুট ফিল্ডটি উভয়ের বৈশিষ্ট্য একত্রিত করে। ব্যবহারকারীরা একটি ড্রপ-ডাউন মেনু থেকে একই type ভেরিয়েবল নির্বাচন করতে পারেন এবং সেটির জন্য স্বয়ংক্রিয় পূরণের পরামর্শ দেখতে পারেন।

চিত্র ৪: একজন ব্যবহারকারী একটি স্থান বেছে নেওয়ার সময় স্বয়ংক্রিয় পূরণের পরামর্শগুলো পর্যালোচনা করছেন। 
চিত্র ৫: একজন ব্যবহারকারী ➕Variables ড্রপ-ডাউন থেকে পূর্ববর্তী ধাপের আউটপুট ভেরিয়েবল নির্বাচন করছেন।
ওভারফ্লো মেনু ব্যবহার করে শুধুমাত্র একটি আউটপুট ভেরিয়েবল নির্বাচন করুন
আপনি একটি SelectionInput উইজেট এমনভাবে কনফিগার করতে পারেন, যাতে ব্যবহারকারীরা একটি ওভারফ্লো মেনু ব্যবহার করে পূর্ববর্তী ধাপ থেকে একটিমাত্র আউটপুট ভেরিয়েবল নির্বাচন করতে পারেন।
যখন আপনি SelectionInputType OVERFLOW_MENU তে সেট করেন, তখন উইজেটটি একটি বিশেষ ভেরিয়েবল পিকার হিসেবে কাজ করে। TextInput সাথে includeVariables ব্যবহার করার বিপরীতে, যা ভেরিয়েবলের মানকে স্ট্রিং-এ রূপান্তর করে, OVERFLOW_MENU নির্বাচিত ভেরিয়েবলের আসল ডেটা টাইপ অক্ষুণ্ণ রাখে।
অ্যাপস স্ক্রিপ্ট
const selectionInput = CardService.newSelectionInput()
.setFieldName("variable_picker_1")
.setTitle("Variable Picker")
.setType(
CardService.SelectionInputType.OVERFLOW_MENU
);
ব্যবহারকারীদের টেক্সট এবং আউটপুট ভেরিয়েবল একত্রিত করার সুযোগ দিন
setInputMode() ব্যবহার করে আপনি TextInput উইজেটগুলো কনফিগার করতে পারেন, যার মাধ্যমে ব্যবহারকারীরা টেক্সট এবং আউটপুট ভেরিয়েবলের সাথে কীভাবে ইন্টারঅ্যাক্ট করবে তা নিয়ন্ত্রণ করা যায়।
-
RICH_TEXT: ব্যবহারকারীদের টেক্সট এবং আউটপুট ভেরিয়েবল একত্রিত করার সুযোগ দেয়। এর ফলে একটি একক সংযুক্ত স্ট্রিং তৈরি হয়। -
PLAIN_TEXT: ইনপুট সীমাবদ্ধ করে। ব্যবহারকারীরা টেক্সট টাইপ করতে পারেন অথবা একটিমাত্র আউটপুট ভেরিয়েবল নির্বাচন করতে পারেন। ভেরিয়েবল নির্বাচন করলে বিদ্যমান যেকোনো টেক্সট প্রতিস্থাপিত হয়। ম্যানিফেস্টে সংজ্ঞায়িত নির্দিষ্ট ডেটা টাইপ প্রয়োগ করতে এই মোডটি ব্যবহার করুন।
নিচের ছবিতে দুটি TextInput উইজেট দেখানো হয়েছে। প্রথমটি RICH_TEXT হিসেবে কনফিগার করা এবং এতে টেক্সট ও একটি আউটপুট ভ্যারিয়েবল রয়েছে। দ্বিতীয়টি PLAIN_TEXT হিসেবে কনফিগার করা এবং এটি শুধুমাত্র একটি আউটপুট ভ্যারিয়েবল অনুমোদন করে।

চিত্র ৩: RICH_TEXTএবংPLAIN_TEXTহিসেবে কনফিগার করা টেক্সট ইনপুট উইজেটসমূহ।
আমরা সুপারিশ করি যে আপনি সকল TextInput উইজেটের জন্য ইনপুট মোড স্পষ্টভাবে সেট করুন।
বিভিন্ন ইনপুট মোড দিয়ে TextInput উইজেট কনফিগার করার ম্যানিফেস্ট ফাইলটি এখানে দেওয়া হলো:
JSON
{
"timeZone": "America/Toronto",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Text and output variable demo",
"logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/pets_black_48dp.png",
"useLocaleFromApp": true
},
"flows": {
"workflowElements": [
{
"id": "richTextDemo",
"state": "ACTIVE",
"name": "Rich Text Demo",
"description": "Show the difference between rich text and plain text TextInput widgets",
"workflowAction": {
"inputs": [
{
"id": "value1",
"description": "First user input",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
},
{
"id": "value2",
"description": "Second user input",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
}
],
"onConfigFunction": "onConfiguration",
"onExecuteFunction": "onExecution"
}
}
]
}
}
}
বিভিন্ন ইনপুট মোড দিয়ে TextInput উইজেট কনফিগার করার কোডটি নিচে দেওয়া হলো:
অ্যাপস স্ক্রিপ্ট
function onConfiguration() {
const input1 = CardService.newTextInput()
.setFieldName("value1")
.setId("value1")
.setTitle("Rich Text")
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
)
)
// Set input mode to RICH_TEXT to allow mixed text and variables.
.setInputMode(CardService.TextInputMode.RICH_TEXT);
const input2 = CardService.newTextInput()
.setFieldName("value2")
.setId("value2")
.setTitle("Plain text")
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
)
)
// Set input mode to PLAIN_TEXT to enforce single variable selection.
.setInputMode(CardService.TextInputMode.PLAIN_TEXT);
const section = CardService.newCardSection()
.addWidget(input1)
.addWidget(input2);
const card = CardService.newCardBuilder()
.addSection(section)
.build();
return card;
}
function onExecution(e) {
}
ভেরিয়েবল পিকার বাটনগুলি কাস্টমাইজ করুন
আপনি বাটনের আকার এবং লেবেল নির্ধারণ করে ভেরিয়েবল পিকার বাটনটি কাস্টমাইজ করতে পারেন।
বোতামের আকার
বাটনের আকার নির্ধারণ করতে, নিম্নলিখিত VariableButtonSize enum-গুলোর যেকোনো একটির সাথে setVariableButtonSize() ব্যবহার করুন:
-
UNSPECIFIED: এটিই ডিফল্ট। বাটনটি সাইড প্যানেলে ছোট আকারের এবং অন্যান্য ক্ষেত্রে পূর্ণ আকারের হয়। -
COMPACT: বোতামটিতে শুধু একটি যোগ চিহ্ন (+) প্রদর্শিত হয়। -
FULL_SIZE: বাটনটি সম্পূর্ণ টেক্সট লেবেল প্রদর্শন করে।
বোতাম লেবেল
বাটনের টেক্সট সেট করতে setVariableButtonLabel() ব্যবহার করুন।
উদাহরণ: ভেরিয়েবল পিকার কাস্টমাইজেশন
নিম্নলিখিত উদাহরণে দেখানো হয়েছে কীভাবে বিভিন্ন পরিবর্তনশীল পিকার বাটনের আকার এবং একটি কাস্টম লেবেল সহ TextInput উইজেট কনফিগার করতে হয়।

চিত্র ১: ওয়েবে ভেরিয়েবল পিকার বাটনের কাস্টমাইজেশন। 
চিত্র ২: একটি অ্যাড-অন সাইড প্যানেলে ভেরিয়েবল পিকার বাটনের কাস্টমাইজেশন।
ভেরিয়েবল পিকার বাটনগুলো কাস্টমাইজ করার জন্য ম্যানিফেস্ট ফাইলটি এখানে দেওয়া হলো:
JSON
{
"timeZone": "America/Los_Angeles",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/script.locale"
],
"addOns": {
"common": {
"name": "Variable button customization",
"logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/pets_black_48dp.png",
"useLocaleFromApp": true
},
"flows": {
"workflowElements": [
{
"id": "variable_picker_customization",
"state": "ACTIVE",
"name": "Variable Picker demo",
"description": "List all possible variable picker customization options",
"workflowAction": {
"onConfigFunction": "onUpdateCardConfigFunction",
"onExecuteFunction": "onUpdateCardExecuteFunction"
}
}
]
}
}
}
ভেরিয়েবল পিকার বাটনগুলো কাস্টমাইজ করার কোডটি নিচে দেওয়া হলো:
অ্যাপস স্ক্রিপ্ট
function onUpdateCardConfigFunction(event) {
const textInput1 = CardService.newTextInput()
.setFieldName("value1")
.setTitle("Regular variable picker button")
.setHostAppDataSource(
CardService.newHostAppDataSource().setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
.setVariableButtonSize(CardService.VariableButtonSize.UNSPECIFIED)
)
);
const textInput2 = CardService.newTextInput()
.setFieldName("value2")
.setTitle("Size: Unspecified")
.setHostAppDataSource(
CardService.newHostAppDataSource().setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
.setVariableButtonSize(CardService.VariableButtonSize.UNSPECIFIED)
)
);
const textInput3 = CardService.newTextInput()
.setFieldName("value3")
.setTitle("Size: Full size")
.setHostAppDataSource(
CardService.newHostAppDataSource().setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
.setVariableButtonSize(CardService.VariableButtonSize.FULL_SIZE)
)
);
const textInput4 = CardService.newTextInput()
.setFieldName("value4")
.setTitle("Size: Compact")
.setHostAppDataSource(
CardService.newHostAppDataSource().setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
.setVariableButtonSize(CardService.VariableButtonSize.COMPACT)
)
);
const textInput5 = CardService.newTextInput()
.setFieldName("value5")
.setTitle("Custom button label")
.setHostAppDataSource(
CardService.newHostAppDataSource().setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
.setVariableButtonLabel("New button label!")
)
);
var cardSection = CardService.newCardSection()
.addWidget(textInput1)
.addWidget(textInput2)
.addWidget(textInput3)
.addWidget(textInput4)
.addWidget(textInput5)
.setId("section_1");
var card = CardService.newCardBuilder().addSection(cardSection).build();
return card;
}
function onUpdateCardExecuteFunction(event) {
}
গুগল ওয়ার্কস্পেস ডেটা অটোকমপ্লিট কনফিগার করুন
আপনি ব্যবহারকারীর গুগল ওয়ার্কস্পেস পরিবেশের ডেটা থেকেও অটোকমপ্লিট সাজেশনগুলো পূরণ করতে পারেন:
- গুগল ওয়ার্কস্পেস ব্যবহারকারীগণ: একই গুগল ওয়ার্কস্পেস অর্গানাইজেশনের অন্তর্গত ব্যবহারকারীদের তথ্য যুক্ত করুন।
- গুগল চ্যাট স্পেস: ব্যবহারকারী যে সকল গুগল চ্যাট স্পেসের সদস্য, সেগুলোকে তথ্য দিয়ে পূর্ণ করুন।
এটি কনফিগার করতে, SelectionInput উইজেটে PlatformDataSource সেট করুন এবং WorkflowDataSourceType হিসেবে USER অথবা SPACE উল্লেখ করুন।
অ্যাপস স্ক্রিপ্ট
// User Autocomplete
var multiSelect2 =
CardService.newSelectionInput()
.setFieldName("value2")
.setTitle("User Autocomplete")
.setType(CardService.SelectionInputType.MULTI_SELECT)
.setMultiSelectMaxSelectedItems(3)
.setPlatformDataSource(
CardService.newPlatformDataSource()
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
.setType(CardService.WorkflowDataSourceType.USER)
))
);
// Chat Space Autocomplete
var multiSelect3 =
CardService.newSelectionInput()
.setFieldName("value3")
.setTitle("Chat Space Autocomplete")
.setType(CardService.SelectionInputType.MULTI_SELECT)
.setMultiSelectMaxSelectedItems(3)
.setPlatformDataSource(
CardService.newPlatformDataSource()
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
.setType(CardService.WorkflowDataSourceType.SPACE)
))
);
উদাহরণ: অটোকমপ্লিট প্রকারের সমন্বয়
নিম্নলিখিত উদাহরণটি একটি onConfig ফাংশন দেখায় যা তিনটি SelectionInput উইজেট সহ একটি কার্ড তৈরি করে, এবং এতে সার্ভার-সাইড, ব্যবহারকারী এবং স্পেস অটোকমপ্লিট প্রদর্শন করা হয়েছে:
JSON
{
"timeZone": "America/Los_Angeles",
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Autocomplete Demo",
"logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/pets_black_48dp.png",
"useLocaleFromApp": true
},
"flows": {
"workflowElements": [
{
"id": "autocomplete_demo",
"state": "ACTIVE",
"name": "Autocomplete Demo",
"description": "Provide autocompletion in input fields",
"workflowAction": {
"inputs": [
{
"id": "value1",
"description": "A multi-select field with autocompletion",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
}
],
"onConfigFunction": "onConfigAutocomplete",
"onExecuteFunction": "onExecuteAutocomplete"
}
}
]
}
}
}
অ্যাপস স্ক্রিপ্ট
function onConfigAutocompleteTest(event) {
// Handle autocomplete request
if (event.workflow && event.workflow.elementUiAutocomplete) {
return handleAutocompleteRequest(event);
}
// Server-side autocomplete widget
var multiSelect1 =
CardService.newSelectionInput()
.setFieldName("value1")
.setTitle("Server Autocomplete")
.setType(CardService.SelectionInputType.MULTI_SELECT)
.setMultiSelectMaxSelectedItems(3)
.addDataSourceConfig(
CardService.newDataSourceConfig()
.setRemoteDataSource(
CardService.newAction().setFunctionName('getAutocompleteResults')
)
)
.addDataSourceConfig(
CardService.newDataSourceConfig()
.setPlatformDataSource(
CardService.newPlatformDataSource()
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
))
)
);
// User autocomplete widget
var multiSelect2 =
CardService.newSelectionInput()
.setFieldName("value2")
.setTitle("User Autocomplete")
.setType(CardService.SelectionInputType.MULTI_SELECT)
.setMultiSelectMaxSelectedItems(3)
.setPlatformDataSource(
CardService.newPlatformDataSource()
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
.setType(CardService.WorkflowDataSourceType.USER)
))
);
// Space autocomplete widget
var multiSelect3 =
CardService.newSelectionInput()
.setFieldName("value3")
.setTitle("Chat Space Autocomplete")
.setType(CardService.SelectionInputType.MULTI_SELECT)
.setMultiSelectMaxSelectedItems(3)
.setPlatformDataSource(
CardService.newPlatformDataSource()
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
.setType(CardService.WorkflowDataSourceType.SPACE)
))
);
var sectionBuilder =
CardService.newCardSection()
.addWidget(multiSelect1)
.addWidget(multiSelect2)
.addWidget(multiSelect3);
var card =
CardService.newCardBuilder()
.addSection(sectionBuilder)
.build();
return card;
}
function handleAutocompleteRequest(event) {
var invokedFunction = event.workflow.elementUiAutocomplete.invokedFunction;
var query = event.workflow.elementUiAutocomplete.query;
if (invokedFunction != "getAutocompleteResults" || query == undefined || query == "") {
return {};
}
// Query your data source to get results
let autocompleteResponse = AddOnsResponseService.newUpdateWidget()
.addSuggestion(
query + " option 1",
query + "_option1",
false,
"https://developers.google.com/workspace/add-ons/images/person-icon.png",
"option 1 bottom text"
)
.addSuggestion(
query + " option 2",
query + "_option2",
false,
"https://developers.google.com/workspace/add-ons/images/person-icon.png",
"option 2 bottom text"
).addSuggestion(
query + " option 3",
query + "_option3",
false,
"https://developers.google.com/workspace/add-ons/images/person-icon.png",
"option 3 bottom text"
);
const modifyAction = AddOnsResponseService.newAction()
.addModifyCard(
AddOnsResponseService.newModifyCard()
.setUpdateWidget(autocompleteResponse)
);
return AddOnsResponseService.newRenderActionBuilder()
.setAction(modifyAction)
.build();
}
ইনপুট ভেরিয়েবল যাচাই করুন
একটি উত্তম অনুশীলন হিসেবে, ব্যবহারকারী একটি উপযুক্ত মান প্রবেশ করিয়েছে কিনা তা যাচাই করুন। ‘একটি ইনপুট ভেরিয়েবল যাচাই করুন ’ দেখুন।
সম্পর্কিত বিষয়
- একটি ইনপুট ভেরিয়েবল যাচাই করুন
- আউটপুট ভেরিয়েবল
- গতিশীল চলক
- কার্যকলাপ এবং ত্রুটিগুলি লগ করুন
- ওয়ার্কস্পেস স্টুডিও ইভেন্ট অবজেক্ট