In dieser Anleitung wird beschrieben, wie Sie eine dynamische Variable erstellen.
Wenn möglich, sollte eine Variable statisch in der Manifestdatei als Eingabe- oder Ausgabevariable definiert werden. In einigen Fällen ist jedoch eine Variable erforderlich, die nur definiert werden kann, wenn der Nutzer den Ablauf konfiguriert, da die Art der Eingabe variiert. Die Anzahl der Fragen und Antworten (und deren Inhalt) für ein Google-Formular kann beispielsweise erst bestimmt werden, wenn während der Konfiguration des Ablaufs ein bestimmtes Formular ausgewählt wird.
Dynamische Variablen berücksichtigen diese Fälle, indem Sie eine Eingabe definieren, die eine dynamische Reihe von Ausgaben in der Manifestdatei und im Code des Schritts erzeugt.
Ausgabevariable in der Manifestdatei definieren
Führen Sie in der Manifestdatei die folgenden Schritte aus:
Geben Sie in
inputs[]eine Eingabevariable an, die einen dynamischen Eingabewert akzeptiert.Geben Sie in
outputs[]eine Ausgabevariable an, die einen dynamischen Satz von Ausgabevariablen zurückgibt. Geben Sie dieser Ausgabe einendataTypevon"workflowResourceDefinitionId": "dynamic_resource_id".Definieren Sie eine benutzerdefinierte Ressource, um die dynamische Variable zu verarbeiten. Geben Sie
workflowResourceDefinitionsmit"resourceType": "DYNAMIC"und"providerFunction": "onDynamicProviderFunction"an. Deridmuss mit dem inoutputs[]festgelegtenworkflowResourceDefinitionIdübereinstimmen. Weitere Informationen zu benutzerdefinierten Ressourcen finden Sie unter Benutzerdefinierte Ressource definieren.Legen Sie
dynamicResourceDefinitionProviderauf den Namen einer entsprechenden Funktion im Code des Schritts fest, in diesem BeispielonDynamicDefinitionFunction(), die eine Konfigurationskarte definiert und zurückgibt, die einen dynamischen Eingabewert akzeptiert und eine benutzerdefinierte Ressource zurückgibt.
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",
}
Ausgabevariable im Code definieren
Der Code des Schritts enthält die folgenden Funktionen:
onDynamicVariableConfigFunction(): Erstellt und gibt eine Konfigurationskarte mit einem dynamischen Eingabe-Widget zurück. Der Name dieser Funktion muss mit dem Wert vononConfigFunction()in der Manifestdatei übereinstimmen. Der Name des dynamischen Eingabe-Widgets muss mit demidin der Manifestdatei übereinstimmen. Mit diesem dynamischen Eingabe-Widget können Nutzer beim Konfigurieren ihres Flows eine dynamische Variable festlegen, z. B. ein Google-Formular auswählen.onDynamicVariableExecuteFunction(), die die Daten der dynamischen Variablen als Ausgabe zurückgibt, wenn der Schritt ausgeführt wird. Der Name dieser Funktion muss mit dem Wert vononExecuteFunction()in der Manifestdatei übereinstimmen. DervariableIdvonreturnOutputVariablesActionmuss mit demidder Ausgabevariable übereinstimmen, der in der Manifestdatei festgelegt ist. Die dynamische Ressource befindet sich im Ablaufereignisobjekt untere.workflow.resourceFieldsDefinitionRetrieval. Der Input kann nicht auf Variablen verweisen, da alle Inputs für eine dynamische Ressource zur Konfigurationszeit verfügbar sein müssen.onDynamicDefinitionFunction(), mit der die dynamischen Variablendaten aus dem Ablaufereignisobjekt abgerufen werden, insbesondereresourceFieldsDefinitionRetrieval, undresourceFieldsDefinitionRetrievedActionzurückgegeben wird, die die Daten in verwendbarem JSON als Ausgabe für spätere Schritte bereitstellt. DerresourceIdmuss mit demideines Elements imworkflowResourceDefinitions[]-Array übereinstimmen, das in der Manifestdatei festgelegt ist.onDynamicProviderFunction(): Ruft die dynamische Variable aus dem Ablaufereignisobjekt untere.workflow.resourceRetrieval.resourceReference.resourceIdab und gibt JSON als Ausgabe für spätere Schritte zurück.
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",
})
}
}
}
};
}
Weitere Informationen
- Eingabevariablen
- Eingabevariable validieren
- Ausgabevariablen
- Benutzerdefinierte Ressource definieren
- Aktivitäten und Fehler protokollieren
- Ablaufereignisobjekt