Z tego przewodnika dowiesz się, jak utworzyć zmienną dynamiczną.
Jeśli to możliwe, zmienną należy zdefiniować statycznie w pliku manifestu jako zmienną wejściową lub wyjściową. W niektórych sytuacjach potrzebna jest jednak zmienna, którą można zdefiniować tylko wtedy, gdy użytkownik skonfiguruje przepływ, ponieważ charakter danych wejściowych jest różny. Na przykład liczby pytań i odpowiedzi (oraz ich treści) w Formularzach Google nie można określić, dopóki podczas konfigurowania przepływu nie zostanie wybrany konkretny formularz.
Zmienne dynamiczne uwzględniają te przypadki, umożliwiając zdefiniowanie danych wejściowych, które generują dynamiczny zestaw danych wyjściowych w pliku manifestu i w kodzie kroku.
Zdefiniuj zmienną wyjściową w pliku manifestu
W pliku manifestu wykonaj te czynności:
W
inputs[]podaj zmienną wejściową, która akceptuje dynamiczną wartość wejściową.W
outputs[]określ zmienną wyjściową, która zwraca dynamiczny zbiór zmiennych wyjściowych. Nadaj temu wynikowi wartośćdataType"workflowResourceDefinitionId": "dynamic_resource_id".Zdefiniuj zasób niestandardowy do obsługi zmiennej dynamicznej. Określ
workflowResourceDefinitionsza pomocą"resourceType": "DYNAMIC"i"providerFunction": "onDynamicProviderFunction". Obiektidmusi być zgodny z obiektemworkflowResourceDefinitionIdustawionym woutputs[]. Więcej informacji o zasobach niestandardowych znajdziesz w artykule Definiowanie zasobu niestandardowego.Ustaw
dynamicResourceDefinitionProviderna nazwę odpowiedniej funkcji w kodzie kroku, w tym przykładzieonDynamicDefinitionFunction(), która definiuje i zwraca kartę konfiguracji akceptującą dynamiczną wartość wejściową i zwracającą zasób niestandardowy.
JSON
"flows": {
"workflowElements" : [{
"id": "getDynamicVariable",
"state": "ACTIVE",
"name": "Get Dynamic Variable",
"description": "Get Dynamic Variable",
"workflowAction": {
"inputs": [
{
"id": "dynamic_resource_input",
"description": "Dynamic Resource Input",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
}
],
"outputs": [
{
"id": "dynamic_resource_output",
"description": "Dynamic Data",
"cardinality": "SINGLE",
"dataType": {
"resourceType": {
"workflowResourceDefinitionId": "dynamic_resource_id"
}
}
}
],
"onConfigFunction": "onDynamicVariableConfigFunction",
"onExecuteFunction": "onDynamicVariableExecuteFunction"
}
}],
"workflowResourceDefinitions": [{
"id": "dynamic_resource_id",
"name": "Dynamic Resource",
"providerFunction": "onDynamicProviderFunction",
"resourceType" : "DYNAMIC"
}],
"dynamicResourceDefinitionProvider" : "onDynamicDefinitionFunction",
}
Zdefiniuj zmienną wyjściową w kodzie
Kod kroku zawiera te funkcje:
onDynamicVariableConfigFunction(), która tworzy i zwraca kartę konfiguracji z dynamicznym widżetem wprowadzania danych. Nazwa tej funkcji musi być zgodna z wartościąonConfigFunction()w pliku manifestu. Nazwa dynamicznego widżetu wejściowego musi być zgodna z nazwąidustawioną w pliku manifestu. Ten dynamiczny widżet wejściowy umożliwia użytkownikom ustawianie dynamicznej zmiennej podczas konfigurowania przepływu, np. wybieranie Formularza Google.onDynamicVariableExecuteFunction(), która zwraca dane zmiennej dynamicznej jako dane wyjściowe po uruchomieniu kroku. Nazwa tej funkcji musi być zgodna z wartościąonExecuteFunction()w pliku manifestu. WartośćvariableIdwreturnOutputVariablesActionmusi być zgodna z wartościąidzmiennej wyjściowej ustawioną w pliku manifestu. Zasób dynamiczny znajduje się w obiekcie zdarzenia przepływu w lokalizacjie.workflow.resourceFieldsDefinitionRetrieval. Dane wejściowe nie mogą odwoływać się do zmiennych, ponieważ wszystkie dane wejściowe dla zasobu dynamicznego muszą być dostępne w momencie konfiguracji.onDynamicDefinitionFunction(), która pobiera dane zmiennej dynamicznej z obiektu zdarzenia przepływu, a konkretnieresourceFieldsDefinitionRetrieval, i zwracaresourceFieldsDefinitionRetrievedAction, które udostępnia dane w formacie JSON do wykorzystania w późniejszych krokach. WartośćresourceIdmusi być zgodna z wartościąidelementu w tablicyworkflowResourceDefinitions[]ustawionej w pliku manifestu.onDynamicProviderFunction(), która pobiera zmienną dynamiczną z obiektu zdarzenia przepływu we.workflow.resourceRetrieval.resourceReference.resourceIdi zwraca dane wyjściowe w formacie JSON na potrzeby kolejnych kroków.
Google Apps Script
function onDynamicVariableConfigFunction() {
var card = {
"sections": [
{
"widgets": [
{
"textInput": {
"name": "dynamic_resource_input",
"label": "Dynamic Resource Input",
}
},
]
}
]
};
return {
"action": {
"navigations": [{
"push_card": card
}]
}
};
}
function onDynamicVariableExecuteFunction(){
var dynamic_resource_id = uuidv4();
return {
"hostAppAction": {
"workflowAction": {
"returnOutputVariablesAction": {
"variableValues": [{
"variableId": "dynamic_resource_output",
"variableData": {
"resourceReferences" : [ dynamic_resource_id ]
}
}]
}
}
}
};
}
function onDynamicDefinitionFunction(e) {
var input_value = e.workflow.resourceFieldsDefinitionRetrieval.inputs.dynamic_resource_input.stringValues[0];
// input_value == "dynamic_resource_input"
return {
"hostAppAction": {
"workflowAction": {
"resourceFieldsDefinitionRetrievedAction": {
"dynamicResourceDefinitions": [{
"resourceId": "dynamic_resource_id",
"fields": [{
"selector": "question_1",
"displayText": "Question 1"
},{
"selector": "question_2",
"displayText": "Question 2"
},{
"selector": "question_3",
"displayText": "Question 3"
}]
}]
}
}
}
};
}
function onDynamicProviderFunction(e) {
var resourceId = e.workflow.resourceRetrieval.resourceReference.resourceId;
// resourceId == uuidv4();
var workflowResourceDefinitionId = e.workflow.resourceRetrieval.resourceReference.resourceType.workflowResourceDefinitionId;
// workflowResourceDefinitionId == "dynamic_resource_id"
return {
"hostAppAction": {
"workflowAction": {
"resourceRetrievedAction": {
"resourceJson": JSON.stringify({
"question_1": "Answer 1",
"question_2": "Answer 2",
"question_3": "Answer 3",
})
}
}
}
};
}
Powiązane artykuły
- Zmienne wejściowe
- Sprawdzanie poprawności zmiennej wejściowej
- Zmienne wyjściowe
- Definiowanie zasobu niestandardowego
- Rejestrowanie aktywności i błędów
- Obiekt zdarzenia przepływu