इस गाइड में, इनपुट वैरिएबल बनाने का तरीका बताया गया है.
इन चरणों को पूरा करने के लिए, कुछ जानकारी की ज़रूरत होती है. उदाहरण के लिए, ईमेल भेजने के लिए ईमेल पते की ज़रूरत होती है. इस ज़रूरी जानकारी को देने के लिए, इनपुट वैरिएबल तय करें. तय किए जाने के बाद, इनपुट वैरिएबल को आम तौर पर उपयोगकर्ता, चरण के कॉन्फ़िगरेशन कार्ड पर सेट करता है. ऐसा तब होता है, जब उपयोगकर्ता चरण को सेट अप कर रहा होता है.
इनपुट वैरिएबल को दो जगहों पर तय करें: ऐड-ऑन की मेनिफ़ेस्ट फ़ाइल में और कॉन्फ़िगरेशन कार्ड वाले कोड में. कॉन्फ़िगरेशन कार्ड में, उपयोगकर्ता इनपुट वैरिएबल के लिए वैल्यू डाल सकते हैं.
मेनिफ़ेस्ट फ़ाइल में इनपुट वैरिएबल तय करना
मेनिफ़ेस्ट फ़ाइल में, inputs[] ऐरे का इस्तेमाल करके इनपुट वैरिएबल तय करें. inputs[] कलेक्शन में मौजूद हर आइटम में ये प्रॉपर्टी होती हैं:
id: इनपुट वैरिएबल के लिए यूनीक आइडेंटिफ़ायर. फ़्लो को इस इनपुट वैरिएबल के साथ कॉन्फ़िगरेशन कार्ड के इनपुट एलिमेंट को जोड़ने की अनुमति देने के लिए, इसका नाम कार्ड के संबंधित एलिमेंट के नाम से मेल खाना चाहिए.description: इनपुट वैरिएबल के बारे में जानकारी, जिसे उपयोगकर्ताओं को दिखाया जाएगा.cardinality: कितनी वैल्यू इस्तेमाल की जा सकती हैं. इन वैल्यू का इस्तेमाल किया जा सकता है:SINGLE: सिर्फ़ एक वैल्यू सबमिट की जा सकती है.
dataType: स्वीकार की जाने वाली वैल्यू का टाइप.dataTypeमेंbasicTypeप्रॉपर्टी होती है, जो डेटा के टाइप के बारे में बताती है. मान्य वैल्यू में ये शामिल हैं:STRING: अक्षर और अंक वाली स्ट्रिंग.INTEGER: कोई संख्या.TIMESTAMP: "यूनिक्स एपक के बाद से मिलीसेकंड" फ़ॉर्मैट में टाइमस्टैंप. उदाहरण के लिए, 27 नवंबर, 2025 को शाम 4:49:02 बजे यूटीसी को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है, तो इसमें स्ट्रिंग नहीं हो सकती.
कार्ड इंटरफ़ेस बनाने में मदद पाने के लिए, इनमें से कोई एक विकल्प देखें:
- कार्ड बिल्डर: यह एक इंटरैक्टिव टूल है. इसका इस्तेमाल कार्ड बनाने और उन्हें तय करने के लिए किया जा सकता है.
- कार्ड: Google Workspace ऐड-ऑन API के रेफ़रंस दस्तावेज़ में.
- Card Service: यह Apps Script की एक सेवा है. इसकी मदद से स्क्रिप्ट, कार्ड कॉन्फ़िगर और बिल्ड कर सकती हैं.
- कार्ड पर आधारित इंटरफ़ेस के बारे में खास जानकारी: Google Workspace ऐड-ऑन डेवलपर के दस्तावेज़ में.
यहां दिए गए उदाहरण में, मेनिफ़ेस्ट फ़ाइल में इनपुट वैरिएबल तय करें में तय किए गए हर इनपुट विजेट के लिए, कॉन्फ़िगरेशन कार्ड दिखाया गया है.
Apps Script
/**
* 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: यह कुकी, Google Chat के उन स्पेस के लिए अपने-आप पूरा होने वाले सुझाव देती है जिनमें उपयोगकर्ता शामिल है.
includeVariables और type, दोनों को सेट करने पर, इनपुट फ़ील्ड में दोनों की सुविधाएं एक साथ दिखती हैं. उपयोगकर्ता, ड्रॉप-डाउन मेन्यू से मिलते-जुलते type का कोई वैरिएबल चुन सकते हैं. साथ ही, उसके लिए अपने-आप दिखने वाले सुझाव देख सकते हैं.
-
चौथी इमेज: कोई उपयोगकर्ता, जगह चुनते समय अपने-आप पूरा होने वाले सुझावों की समीक्षा करता है. -
पांचवीं इमेज: इसमें दिखाया गया है कि कोई उपयोगकर्ता, ➕वैरिएबल ड्रॉप-डाउन से पिछले चरण का आउटपुट वैरिएबल चुन रहा है.
ओवरफ़्लो मेन्यू से सिर्फ़ एक आउटपुट वैरिएबल चुनना
उपयोगकर्ताओं को ओवरफ़्लो मेन्यू का इस्तेमाल करके, पिछले चरण से एक आउटपुट वैरिएबल चुनने की अनुमति देने के लिए, SelectionInput विजेट को कॉन्फ़िगर किया जा सकता है.
SelectionInputType को OVERFLOW_MENU पर सेट करने पर, विजेट एक खास वैरिएबल पिकर के तौर पर काम करता है. includeVariables के साथ TextInput का इस्तेमाल करने पर, वैरिएबल की वैल्यू को स्ट्रिंग में बदल दिया जाता है. हालांकि, OVERFLOW_MENU से चुने गए वैरिएबल के ओरिजनल डेटा टाइप को सुरक्षित रखा जाता है.
Apps Script
const selectionInput = CardService.newSelectionInput()
.setFieldName("variable_picker_1")
.setTitle("Variable Picker")
.setType(
CardService.SelectionInputType.OVERFLOW_MENU
);
उपयोगकर्ताओं को टेक्स्ट और आउटपुट वैरिएबल को एक साथ इस्तेमाल करने की अनुमति देना
TextInput विजेट को कॉन्फ़िगर किया जा सकता है. इससे यह कंट्रोल किया जा सकता है कि उपयोगकर्ता, setInputMode() का इस्तेमाल करके टेक्स्ट और आउटपुट वैरिएबल से कैसे इंटरैक्ट करें.
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 विजेट को कॉन्फ़िगर करने का कोड दिया गया है:
Apps Script
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) {
}
वैरिएबल पिकर के बटनों को पसंद के मुताबिक बनाना
बटन का साइज़ और लेबल सेट करके, वैरिएबल पिकर बटन को पसंद के मुताबिक बनाया जा सकता है.
बटन आकार
बटन का साइज़ सेट करने के लिए, setVariableButtonSize() का इस्तेमाल करें. साथ ही, इनमें से किसी एक VariableButtonSize ईनम का इस्तेमाल करें:
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"
}
}
]
}
}
}
वैरिएबल चुनने वाले बटन को पसंद के मुताबिक बनाने के लिए यहां दिया गया कोड इस्तेमाल करें:
Apps Script
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 संगठन के उपयोगकर्ताओं की जानकारी अपने-आप भर जाती है.
- Google Chat स्पेस: Google Chat के उन स्पेस की जानकारी भरें जिनमें उपयोगकर्ता सदस्य है.
इसे कॉन्फ़िगर करने के लिए, SelectionInput विजेट में PlatformDataSource को सेट करें. साथ ही, USER या SPACE के तौर पर WorkflowDataSourceType की जानकारी दें.
Apps Script
// 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"
}
}
]
}
}
}
Apps Script
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();
}
इनपुट वैरिएबल की पुष्टि करना
सबसे सही तरीके के तौर पर, यह पुष्टि करें कि उपयोगकर्ता ने सही वैल्यू डाली है. इनपुट वैरिएबल की पुष्टि करना लेख पढ़ें.
मिलते-जुलते विषय
- इनपुट वैरिएबल की पुष्टि करना
- आउटपुट वैरिएबल
- डाइनैमिक वैरिएबल
- गतिविधि और गड़बड़ियों को लॉग करना
- Workspace Studio के इवेंट ऑब्जेक्ट