В этом руководстве объясняется, как создать шаг, который пользователи смогут добавить в рабочий процесс в Google Workspace Studio.
Шаг — это отдельный шаг в последовательности задач потока. Шаги не могут запустить поток.
В качестве примера рассмотрим шаг, выполняющий арифметические операции. Он запрашивает у пользователя два значения и математическую операцию. Затем он выполняет математическую операцию над значениями и выводит результат.

Чтобы создать шаг, настройте его в файле манифеста дополнения, напишите логику приложения в коде дополнения Google Workspace, а затем разверните и протестируйте шаг.
Определите шаг
Для настройки шага определите его в файле манифеста и напишите логику его применения в коде.
Определите шаг в файле манифеста.
В файле манифеста appsscript.json :
- Установите для
onConfigFunctionиonExecuteFunctionимена соответствующих функций в коде дополнения. В этом примере функции называютсяonConfigCalculate()иonExecuteCalculate().-
onConfigFunctionнастраивает и конфигурирует шаг. При необходимости она собирает данные от пользователей, необходимые для выполнения шага, например, адрес для отправки электронного письма. В примере этого руководства мы запрашиваем два значения и математическую операцию. - Функция
onExecuteFunctionвыполняет шаг. Если данные были собраны от пользователей, эти данные передаются в эту функцию. При необходимости возвращает результат. В примере из этого руководства выводит результат математического вычисления.
-
Задайте необходимые входные и выходные данные, что позволит шагу собрать данные и отправить их на последующие шаги. В этом примере запросите у пользователя два значения и математическую операцию, определенную в
inputs[]. Выведите вычисленный результат, определенный вoutputs[].Чтобы узнать больше о входных и выходных данных, см. разделы «Входные переменные» и «Выходные переменные» . Для обеспечения бесперебойной работы потоков данных проверьте входные переменные .
Вот файл манифеста для шага «Калькулятор»:
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, которая в этом примере называетсяonConfigCalculate(). Когда пользователи добавляют шаг в поток, они могут настроить аспекты этого шага в конструкторе потока. Для сбора необходимой информации от пользователя функцияonConfigFunctionопределяет карточку конфигурации.Карточки — это строительные блоки пользовательского интерфейса в дополнениях. Карточки поддерживают заданный макет, интерактивные элементы интерфейса, такие как кнопки, и мультимедийный контент, например, изображения. С помощью карточек можно получить данные от пользователя, необходимые для выполнения шага, например, адрес электронной почты для отправки письма.
Функция
OnConfigFunctionвозвращает карточку. Эта карточка определяет пользовательский интерфейс, где пользователи задают данные для данного шага. В этом примере функцияonConfigFunctionсоздает карточку, которая запрашивает у пользователя два значения и математическую операцию.В этом примере напишите функцию
onExecuteFunctionс именемonExecuteCalculate(). ФункцияOnExecuteFunctionзапускается, когда выполняется ваш шаг в потоке. Любые входные значения, установленные пользователем во время настройки, как определено в функцииonConfigurationFunctionпередаются вOnExecuteFunction.Напишите
OnExecuteFunction()таким образом, чтобы она синхронно выполняла свою задачу, используя предоставленные входные данные. Помните, чтоOnExecuteFunction()должна возвращать все выходные данные, определенные в манифесте вашего потока, иначе возникнет ошибка.
В этом примере кода представлена вспомогательная функция outputVariables() , которая создает и отправляет предоставленные переменные в качестве выходных данных этого шага.
Ваш шаг готов к тестированию.
Вот код для шага «Калькулятор»:
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
* steps as input values using the `hostAppDataSource` property.
*/
function onConfigCalculate() {
const firstInput = CardService.newTextInput()
.setFieldName("value1")
.setTitle("First Value")
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
)
);
const secondInput = CardService.newTextInput()
.setFieldName("value2")
.setTitle("Second Value").setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
)
);
const selectionInput = CardService.newSelectionInput()
.setTitle("operation")
.setFieldName("operation")
.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)
var card = CardService.newCardBuilder()
.addSection(sections)
.build();
return card;
}
/**
* Returns output variables from a step.
*
* This function constructs an object that, when returned, sends the
* provided variable values as output from the current step.
* The variable values are logged to the console for debugging purposes.
*/
function outputVariables(variableDataMap) {
const workflowAction = AddOnsResponseService.newReturnOutputVariablesAction()
.setVariableDataMap(variableDataMap);
const hostAppAction = AddOnsResponseService.newHostAppAction()
.setWorkflowAction(workflowAction);
const renderAction = AddOnsResponseService.newRenderActionBuilder()
.setHostAppAction(hostAppAction)
.build();
return renderAction;
}
/**
* Executes the calculation step based on the inputs from a flow event.
*
* This function retrieves input values and the operation from the flow event,
* performs the calculation, and returns the result as an output variable.
* The function logs the event for debugging purposes.
*/
function onExecuteCalculate(event) {
console.log("output: " + JSON.stringify(event));
var calculatedValue = 0;
var value1 = event.workflow.actionInvocation.inputs["value1"].integerValues[0];
var value2 = event.workflow.actionInvocation.inputs["value2"].integerValues[0];
var operation = event.workflow.actionInvocation.inputs["operation"].stringValues[0];
if (operation == "+") {
calculatedValue = value1 + value2;
} else if (operation == "-") {
calculatedValue = value1 - value2;
} else if (operation == "x") {
calculatedValue = value1 * value2;
} else if (operation == "/") {
calculatedValue = value1 / value2;
}
const variableDataMap = { "result": AddOnsResponseService.newVariableData().addIntegerValue(calculatedValue) };
return outputVariables(variableDataMap);
}
Проверьте свой шаг
Чтобы протестировать этот шаг, настройте тестовое развертывание для вашего дополнения, добавьте этот шаг в поток, а затем запустите поток.
Настройте тестовое развертывание для вашего дополнения:
- Откройте проект скрипта в редакторе Apps Script.
- Нажмите «Развернуть» > «Проверить развертывания» .
- Нажмите «Установить» .
- Внизу нажмите «Готово» .
Вы можете разрешить другим пользователям протестировать дополнение, предоставив им доступ к проекту Apps Script (требуется доступ на редактирование). Затем предложите пользователям выполнить описанные выше шаги.
После установки дополнение сразу же становится доступно в Flows. Возможно, потребуется обновить страницу Flows, прежде чем дополнение появится. Также необходимо авторизовать дополнение перед его использованием.
Чтобы узнать больше о развертывании тестовых файлов, см. раздел «Установка неопубликованного дополнения» .
Открытые потоки.
Создайте алгоритм, включающий ваш шаг:
- Нажмите новый поток» .
- Выберите способ запуска процесса. При тестировании шага рекомендуется выбрать запуск, который вы можете выполнить самостоятельно, например, отправку себе электронного письма. Если ваш шаг требует входной переменной, настройте эту переменную как часть выходных данных запуска.
- Нажмите шаг» . Выберите шаг, который вы создали или обновили, под названием «Вычислить» .
- Настройте шаг. Для шага вычисления выберите два значения и математическую операцию. Шаг сохраняется автоматически.
- Чтобы проверить результат выполнения шага, добавьте еще один шаг. Например, чтобы добавить результат в электронное письмо, вы можете добавить шаг «Отправить сообщение» в Gmail. В поле «Сообщение» нажмите переменные» и выберите результат выполнения вашего шага. Для шага «Вычисление» выберите переменные» > «Шаг 2: Вычисляемый результат» > «Вычисляемый результат» . Переменная отобразится в виде значка в поле «Сообщение» .
- Нажмите «Включить» . Ваш процесс готов к запуску.
Запустите поток, активировав его в качестве стартового события. Например, если ваш поток запускается при получении электронного письма, отправьте письмо себе.
Убедитесь, что процесс выполняется должным образом. Проверьте журналы, перейдя на вкладку «Действия» в конструкторе процессов. Чтобы узнать, как создавать пользовательские журналы на вкладке «Действия», см. раздел «Журналы действий» .
Связанные темы
- Входные переменные
- Проверить входную переменную
- Выходные переменные
- Определите пользовательский ресурс
- Динамические переменные
- Журналы активности и ошибок
- Объекты событий Workspace Studio