این راهنما نحوه ساخت یک کارت پیکربندی را توضیح میدهد که به کاربران امکان میدهد ورودیها را برای یک مرحله در Google Workspace Studio سفارشیسازی و ارائه دهند.
به طور کلی، برای ساخت یک کارت پیکربندی، شما یک رابط کارت مانند هر افزونهی دیگر Google Workspace میسازید. برای کمک به ساخت رابطهای کارت پیکربندی، به موارد زیر مراجعه کنید:
- سازنده کارت ، ابزاری تعاملی که به شما در ساخت و تعریف کارتها کمک میکند.
- کارت در مستندات مرجع API افزونههای Google Workspace.
- سرویس کارت ، یک سرویس اسکریپت برنامهها که به اسکریپتها اجازه میدهد کارتها را پیکربندی و بسازند.
- رابطهای مبتنی بر کارت در مستندات توسعهدهندگان افزونههای Google Workspace.
برخی از ویجتهای کارت، قابلیتها و ویژگیهای خاص Workspace Studio را دارند که در این راهنما به تفصیل شرح داده شدهاند.
تعریف کارت پیکربندی
یک کارت پیکربندی را هم در مانیفست Apps Script و هم در کد تعریف کنید.
مثال زیر نحوه ساخت یک کارت پیکربندی را نشان میدهد که از کاربران میخواهد یک فضای چت گوگل را انتخاب کنند.
فایل مانیفست را ویرایش کنید
در فایل مانیفست، workflowElements را تعریف کنید.
جیسون
{
"timeZone": "America/Los_Angeles",
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Chat space selector",
"logoUrl": "https://www.gstatic.com/images/branding/productlogos/gsuite_addons/v6/web-24dp/logo_gsuite_addons_color_1x_web_24dp.png",
"useLocaleFromApp": true
},
"flows": {
"workflowElements": [
{
"id": "actionElement",
"state": "ACTIVE",
"name": "Chat space selector",
"description": "Lets the user select a space from Google Chat",
"workflowAction": {
"inputs": [
{
"id": "chooseSpace",
"description": "Choose a Chat space",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
}
],
"onConfigFunction": "onConfigSpacePicker",
"onExecuteFunction": "onExecuteSpacePicker"
}
}
]
}
}
}
کد را ویرایش کنید
در کد برنامه، یک کارت را برگردانید.
اسکریپت برنامهها
/**
* Generates and displays a configuration card to choose a Chat space
*/
function onConfigSpacePicker() {
const selectionInput = CardService.newSelectionInput()
.setTitle("First Value")
.setFieldName("chooseSpace")
.setType(CardService.SelectionInputType.MULTI_SELECT)
.setPlatformDataSource(
CardService.newPlatformDataSource()
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
.setType(CardService.WorkflowDataSourceType.SPACE)
)
)
);
const cardSection = CardService.newCardSection()
.setHeader("Select Chat Space")
.setId("section_1")
.addWidget(selectionInput)
var card = CardService.newCardBuilder()
.addSection(cardSection)
.build();
return card;
}
function onExecuteSpacePicker(e) {
}
تنظیم تکمیل خودکار برای ابزارکهای ورودی
شما میتوانید قابلیت تکمیل خودکار را برای ویجتهای SelectionInput پیکربندی کنید تا به کاربران در انتخاب از بین لیست گزینهها کمک کند. برای مثال، اگر کاربری شروع به تایپ Atl برای منویی کند که شامل شهرهای ایالات متحده است، عنصر شما میتواند قبل از اینکه کاربر تایپ را تمام کند، به طور خودکار Atlanta پیشنهاد دهد. شما میتوانید تا ۱۰۰ مورد را به طور خودکار تکمیل کنید.
پیشنهادهای تکمیل خودکار میتوانند از منابع داده زیر باشند:
- تکمیل خودکار سمت سرور: پیشنهادات از یک منبع داده شخص ثالث یا خارجی که شما تعریف میکنید، پر میشوند.
- دادههای Google Workspace: پیشنهادها از منابع Google Workspace، مانند کاربران Google Workspace یا فضاهای Google Chat، پر میشوند.
تکمیل خودکار سمت سرور
شما میتوانید ویجت SelectionInput را طوری پیکربندی کنید که پیشنهادات را از یک منبع داده خارجی به صورت خودکار تکمیل کند. به عنوان مثال، میتوانید به کاربران کمک کنید تا از لیست سرنخهای فروش از یک سیستم مدیریت ارتباط با مشتری (CRM) انتخاب کنند.
برای پیادهسازی تکمیل خودکار سمت سرور، باید:
- تعریف منبع داده: در ویجت
SelectionInput، یکDataSourceConfigاضافه کنید که یکRemoteDataSourceرا مشخص میکند. این پیکربندی به یک تابع Apps Script اشاره میکند که پیشنهادات تکمیل خودکار را دریافت میکند. - پیادهسازی تابع تکمیل خودکار: این تابع زمانی فعال میشود که کاربر در فیلد ورودی تایپ کند. این تابع باید بر اساس ورودی کاربر، از منبع داده خارجی شما پرسوجو کند و لیستی از پیشنهادات را برگرداند.
مثال زیر نحوه پیکربندی ویجت SelectionInput را برای تکمیل خودکار سمت سرور نشان میدهد:
اسکریپت برنامهها
// In your onConfig function:
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)
))
)
);
// ... add widget to card ...
درخواست تکمیل خودکار را مدیریت کنید
تابع مشخص شده در setFunctionName (مثلاً getAutocompleteResults ) هنگامی که کاربر در فیلد تایپ میکند، یک شیء رویداد دریافت میکند. این تابع باید:
- برای اطمینان از مطابقت نام تابع مورد انتظار،
event.workflow.elementUiAutocomplete.invokedFunctionرا بررسی کنید. - ورودی کاربر را از
event.workflow.elementUiAutocomplete.queryدریافت کنید. - با استفاده از کوئری، منبع داده خارجی را جستجو کنید.
- حداکثر ۱۰۰ پیشنهاد را در قالب مورد نیاز ارسال کنید.
مثال زیر نحوه پیادهسازی تابع handleAutocompleteRequest() را برای بازگرداندن پیشنهادات بر اساس پرسوجوی کاربر نشان میدهد:
اسکریپت برنامهها
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 based on the query
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();
}
// In your onConfig function, handle the autocomplete event
function onConfigAutocompleteTest(event) {
// Handle autocomplete request
if (event.workflow && event.workflow.elementUiAutocomplete) {
return handleAutocompleteRequest(event);
}
// ... rest of your card building logic ...
}
تکمیل خودکار دادههای Google Workspace
همچنین میتوانید پیشنهادهای تکمیل خودکار را از دادههای موجود در محیط Google Workspace کاربر پر کنید:
- کاربران Google Workspace: کاربران را در همان سازمان Google Workspace جمع کنید.
- فضاهای چت گوگل: فضاهای چت گوگل را که کاربر عضو آن است، پر کنید.
برای پیکربندی این مورد، PlatformDataSource در ویجت SelectionInput تنظیم کنید و 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 ایجاد میکند و تکمیل خودکار سمت سرور، کاربر و فضا را نشان میدهد:
جیسون
{
"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();
}
دکمههای انتخابگر متغیر را سفارشی کنید
شما میتوانید با تنظیم اندازه و برچسب دکمه، دکمه انتخاب متغیر را سفارشی کنید.
اندازه دکمه
برای تنظیم اندازه دکمه، از تابع setVariableButtonSize() به همراه یکی از enumهای VariableButtonSize زیر استفاده کنید:
-
UNSPECIFIED: پیشفرض. دکمه در پنل کناری جمعوجور و در سایر زمینهها اندازه کامل دارد. -
COMPACT: دکمه فقط یک علامت جمع (+) را نمایش میدهد. -
FULL_SIZE: دکمه، برچسب متن کامل را نمایش میدهد.
برچسب دکمه
برای تنظیم متن دکمه، از setVariableButtonLabel() استفاده کنید.
مثال: سفارشیسازی انتخابگر متغیر
مثال زیر نحوه پیکربندی ویجتهای TextInput را با اندازههای مختلف دکمه انتخابگر و یک برچسب سفارشی نشان میدهد.

شکل ۱: سفارشیسازی دکمه انتخاب متغیر در وب 
شکل ۲: سفارشیسازی دکمه انتخاب متغیر در پنل کناری افزونه.
فایل مانیفست برای سفارشیسازی دکمههای انتخاب متغیر به صورت زیر است:
جیسون
{
"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) {
}
ویژگیهای خاص Workspace Studio
برخی از ویجتهای کارت، قابلیتها و ویژگیهای خاص Workspace Studio را دارند که در اینجا به تفصیل توضیح داده شدهاند.
ورودی متن و ورودی انتخاب
ویجتهای TextInput و SelectionInput این ویژگیهای مختص Workspace Studio را دارند:
-
includeVariables: یک ویژگی بولی که به کاربران اجازه میدهد متغیرها را از مراحل قبلی انتخاب کنند. برای اینکه انتخابگر متغیر در مراحل بعدی نمایش داده شود، هم رویداد شروع و هم حداقل یک متغیر خروجی مربوطه باید به متغیر نگاشت شوند. -
type: یک مقدار شمارشی که پیشنهادات را به صورت خودکار تکمیل میکند. مقادیر پشتیبانی شده عبارتند از:-
USER: پیشنهادهای تکمیل خودکار را برای افراد موجود در مخاطبین کاربر ارائه میدهد. -
SPACE: پیشنهادهای تکمیل خودکار برای فضاهای چت گوگل که کاربر عضو آنهاست، ارائه میدهد.
-
وقتی هر دو includeVariables و type تنظیم شوند، فیلد ورودی تجربیات آنها را ترکیب میکند. کاربران میتوانند متغیری با type منطبق را از منوی کشویی انتخاب کنند و پیشنهادات تکمیل خودکار را برای آن مشاهده کنند.

شکل ۳: یک کاربر هنگام انتخاب یک فضا، پیشنهادات تکمیل خودکار را بررسی میکند. 
شکل ۴: کاربر متغیر خروجی مرحله قبل را از منوی کشویی ➕Variables انتخاب میکند.
فقط یک متغیر خروجی را با یک منوی سرریز انتخاب کنید
شما میتوانید ویجت SelectionInput را طوری پیکربندی کنید که به کاربران اجازه دهد با استفاده از یک منوی سرریز، یک متغیر خروجی واحد را از مرحله قبل انتخاب کنند.
وقتی SelectionInputType روی OVERFLOW_MENU تنظیم میکنید، ویجت به عنوان یک انتخابگر متغیر اختصاصی عمل میکند. برخلاف استفاده از includeVariables با TextInput که مقادیر متغیر را به رشته تبدیل میکند، OVERFLOW_MENU نوع داده اصلی متغیر انتخاب شده را حفظ میکند.
اسکریپت برنامهها
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 با حالتهای ورودی مختلف در اینجا آمده است:
جیسون
{
"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) {
}
ملاحظات و محدودیتهای کارت
پیمایش کارتها مانند
popCard()،pushCard()وupdateCard()در افزونههایی که Workspace Studio را توسعه میدهند پشتیبانی نمیشوند.وقتی
SelectionInputدر یک انتخابگر متغیر استفاده میشود، ویجتها فقط"type": "MULTI_SELECT"پشتیبانی میکنند. در جای دیگر کارتهای پیکربندی،SelectionInputاز تمام مقادیرSelectionTypeپشتیبانی میکند.
مباحث مرتبط
- ساخت یک پله
- متغیرهای ورودی
- اعتبارسنجی یک متغیر ورودی
- متغیرهای خروجی
- ثبت فعالیتها و خطاها
- اشیاء رویداد استودیوی فضای کاری