এই নির্দেশিকাটি ব্যাখ্যা করে কিভাবে একটি ইনপুট ভেরিয়েবল তৈরি করতে হয়।
ধাপগুলি চালানোর জন্য, নির্দিষ্ট তথ্যের প্রয়োজন হয়। উদাহরণস্বরূপ, একটি ইমেল পাঠানোর জন্য একটি ইমেল ঠিকানা প্রয়োজন। ধাপগুলি এই প্রয়োজনীয় তথ্য প্রদানের জন্য, ইনপুট ভেরিয়েবলগুলি সংজ্ঞায়িত করুন। একবার সংজ্ঞায়িত হয়ে গেলে, ব্যবহারকারী যখন ধাপটি সেট আপ করেন তখন ইনপুট ভেরিয়েবলগুলি সাধারণত একটি ধাপের কনফিগারেশন কার্ডে ব্যবহারকারী দ্বারা সেট করা হয়।
ইনপুট ভেরিয়েবল দুটি জায়গায় সংজ্ঞায়িত করুন: অ্যাড-অনের ম্যানিফেস্ট ফাইল, এবং একটি কনফিগারেশন কার্ড সহ কোডে যেখানে ব্যবহারকারীরা ইনপুট ভেরিয়েবলের জন্য মান লিখতে পারেন।
ম্যানিফেস্ট ফাইলে ইনপুট ভেরিয়েবল নির্ধারণ করুন
ম্যানিফেস্ট ফাইলে, inputs[] অ্যারের সাথে input ভেরিয়েবল নির্দিষ্ট করুন। inputs[] অ্যারের প্রতিটি আইটেমের নিম্নলিখিত বৈশিষ্ট্য রয়েছে:
-
id: একটি ইনপুট ভেরিয়েবলের জন্য অনন্য শনাক্তকারী। এই ইনপুট ভেরিয়েবলের সাথে একটি কনফিগারেশন কার্ড ইনপুট উপাদানকে সংযুক্ত করার জন্য, সংশ্লিষ্ট কার্ড উপাদানের নামের সাথে মিল থাকতে হবে। -
description: শেষ ব্যবহারকারীদের দেখানোর জন্য ইনপুট ভেরিয়েবলের একটি বিবরণ। -
cardinality: কতগুলি মান অনুমোদিত। সম্ভাব্য মানগুলি হল:-
SINGLE: শুধুমাত্র একটি মান অনুমোদিত।
-
-
dataType: গৃহীত মানের ধরণ।dataTypebasicTypeবৈশিষ্ট্য থাকে যা ডেটার ধরণ নির্ধারণ করে। বৈধ মানগুলির মধ্যে রয়েছে:-
STRING: একটি বর্ণসাংখ্যিক স্ট্রিং। -
INTEGER: একটি সংখ্যা। -
TIMESTAMP: "ইউনিক্স যুগের পর থেকে মিলিসেকেন্ড" ফর্ম্যাটে একটি টাইমস্ট্যাম্প। উদাহরণস্বরূপ, 27 নভেম্বর, 2025, 16:49:02 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 উইজেটগুলিতে এই ওয়ার্কস্পেস স্টুডিও-নির্দিষ্ট বৈশিষ্ট্যগুলি রয়েছে:
-
includeVariables: একটি বুলিয়ান প্রোপার্টি যা ব্যবহারকারীদের পূর্ববর্তী ধাপগুলি থেকে ভেরিয়েবল নির্বাচন করতে দেয়। পরবর্তী ধাপগুলিতে ভেরিয়েবল পিকার প্রদর্শনের জন্য, শুরুর ইভেন্ট এবং কমপক্ষে একটি সংশ্লিষ্ট আউটপুট ভেরিয়েবল উভয়কেই ভেরিয়েবলের সাথে ম্যাপ করতে হবে। -
type: একটি গণনাকৃত মান যা পরামর্শগুলিকে স্বয়ংক্রিয়ভাবে সম্পূর্ণ করে। সমর্থিত মানগুলির মধ্যে রয়েছে:-
USER: ব্যবহারকারীর পরিচিতিতে থাকা ব্যক্তিদের জন্য স্বয়ংসম্পূর্ণ পরামর্শ প্রদান করে। -
SPACE: ব্যবহারকারী যে Google Chat স্পেসের সদস্য, তার জন্য স্বয়ংক্রিয়ভাবে সম্পূর্ণ করার পরামর্শ প্রদান করে।
-
যখন includeVariables এবং type উভয়ই সেট করা থাকে, তখন ইনপুট ক্ষেত্রটি তাদের অভিজ্ঞতাগুলিকে একত্রিত করে। ব্যবহারকারীরা ড্রপ-ডাউন মেনু থেকে মিলিত type একটি ভেরিয়েবল নির্বাচন করতে পারেন এবং এর জন্য স্বয়ংসম্পূর্ণ পরামর্শ দেখতে পারেন।

চিত্র ৪: একজন ব্যবহারকারী স্থান নির্বাচন করার সময় স্বয়ংসম্পূর্ণ পরামর্শ পর্যালোচনা করেন। 
চিত্র ৫: একজন ব্যবহারকারী ➕ভেরিয়েবল ড্রপ-ডাউন থেকে পূর্ববর্তী ধাপের আউটপুট ভেরিয়েবল নির্বাচন করেন।
ওভারফ্লো মেনু সহ শুধুমাত্র একটি আউটপুট ভেরিয়েবল নির্বাচন করুন
আপনি একটি 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 এনামগুলির একটি দিয়ে 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) {
}
Google Workspace ডেটা অটোকম্পলিট কনফিগার করুন
আপনি ব্যবহারকারীর Google Workspace পরিবেশের মধ্যে থাকা ডেটা থেকে অটোকম্পলিট পরামর্শগুলিও পূরণ করতে পারেন:
- Google Workspace ব্যবহারকারী: একই Google Workspace প্রতিষ্ঠানের মধ্যে ব্যবহারকারীদের নিয়োগ করুন।
- গুগল চ্যাট স্পেস: ব্যবহারকারী যে গুগল চ্যাট স্পেসের সদস্য, সেগুলি পূরণ করুন।
এটি কনফিগার করার জন্য, 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();
}
ইনপুট ভেরিয়েবল যাচাই করুন
সর্বোত্তম অনুশীলন হিসেবে, ব্যবহারকারী একটি উপযুক্ত মান প্রবেশ করান তা যাচাই করুন। একটি ইনপুট ভেরিয়েবল যাচাই করুন দেখুন।
সম্পর্কিত বিষয়
- একটি ইনপুট ভেরিয়েবল যাচাই করুন
- আউটপুট ভেরিয়েবল
- গতিশীল ভেরিয়েবল
- কার্যকলাপ এবং ত্রুটি লগ করুন
- ওয়ার্কস্পেস স্টুডিও ইভেন্ট অবজেক্ট