Questa guida spiega come creare una variabile dinamica.
Se possibile, una variabile deve essere definita staticamente nel file manifest come variabile di input o di output. Tuttavia, alcune situazioni richiedono una variabile che può essere definita solo quando l'utente configura il flusso perché la natura dell'input varia. Ad esempio, il numero di domande e risposte (e il loro contenuto) per un Modulo Google non può essere determinato finché non viene selezionato un modulo specifico durante la configurazione del flusso.
Le variabili dinamiche tengono conto di questi casi consentendoti di definire un input che produce un insieme dinamico di output nel file manifest e nel codice del passaggio.
Definisci la variabile di output nel file manifest
Nel file manifest, segui questi passaggi:
In
inputs[], specifica una variabile di input che accetta un valore di input dinamico.In
outputs[], specifica una variabile di output che restituisce un insieme dinamico di variabili di output. Assegna a questo output undataTypedi"workflowResourceDefinitionId": "dynamic_resource_id".Definisci una risorsa personalizzata per gestire la variabile dinamica. Specifica
workflowResourceDefinitionscon"resourceType": "DYNAMIC"e"providerFunction": "onDynamicProviderFunction".iddeve corrispondere aworkflowResourceDefinitionIdimpostato inoutputs[]. Per scoprire di più sulle risorse personalizzate, consulta Definire una risorsa personalizzata.Imposta
dynamicResourceDefinitionProvidersul nome di una funzione corrispondente nel codice del passaggio, in questo esempioonDynamicDefinitionFunction(), che definisce e restituisce una scheda di configurazione che accetta un valore di input dinamico e restituisce una risorsa personalizzata.
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",
}
Definisci la variabile di output nel codice
Il codice del passaggio include le seguenti funzioni:
onDynamicVariableConfigFunction(), che crea e restituisce una scheda di configurazione con un widget di input dinamico. Il nome di questa funzione deve corrispondere al valore dionConfigFunction()nel file manifest. Il nome del widget di input dinamico deve corrispondere aidimpostato nel file manifest. Questo widget di input dinamico consente agli utenti di impostare una variabile dinamica durante la configurazione del flusso, ad esempio la scelta di un modulo Google.onDynamicVariableExecuteFunction(), che restituisce i dati della variabile dinamica come output quando viene eseguito il passaggio. Il nome di questa funzione deve corrispondere al valore dionExecuteFunction()nel file manifest. IlvariableIddireturnOutputVariablesActiondeve corrispondere aliddella variabile di output impostato nel file manifest. La risorsa dinamica si trova nell'oggetto evento del flusso ine.workflow.resourceFieldsDefinitionRetrieval. L'input non può fare riferimento a variabili perché tutti gli input per una risorsa dinamica devono essere disponibili al momento della configurazione.onDynamicDefinitionFunction(), che recupera i dati delle variabili dinamiche dall'oggetto evento del flusso, in particolareresourceFieldsDefinitionRetrieval, e restituisceresourceFieldsDefinitionRetrievedActionche fornisce i dati in formato JSON utilizzabile come output per i passaggi successivi.resourceIddeve corrispondere aiddi un elemento nell'arrayworkflowResourceDefinitions[]impostato nel file manifest.onDynamicProviderFunction(), che recupera la variabile dinamica dall'oggetto evento di flusso ine.workflow.resourceRetrieval.resourceReference.resourceIde restituisce JSON come output per i passaggi successivi.
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",
})
}
}
}
};
}
Argomenti correlati
- Variabili di input
- Convalidare una variabile di input
- Variabili di output
- Definisci una risorsa personalizzata
- Registrare attività ed errori
- Oggetto evento flusso