Panduan ini menjelaskan cara membuat variabel dinamis.
Jika memungkinkan, variabel harus ditentukan secara statis dalam file manifes sebagai variabel input atau output. Namun, beberapa situasi memerlukan variabel yang hanya dapat ditentukan saat pengguna mengonfigurasi alur karena sifat inputnya bervariasi. Misalnya, jumlah pertanyaan dan jawaban (serta kontennya) untuk Google Formulir tidak dapat ditentukan hingga formulir tertentu dipilih selama konfigurasi alur.
Variabel dinamis memperhitungkan kasus ini dengan memungkinkan Anda menentukan input yang menghasilkan serangkaian output dinamis dalam file manifes dan dalam kode langkah.
Menentukan variabel output dalam file manifes
Di file manifes, ikuti langkah-langkah berikut:
Di
inputs[], tentukan variabel input yang menerima nilai input dinamis.Di
outputs[], tentukan variabel output yang menampilkan kumpulan variabel output dinamis. Beri output inidataTypesebesar"workflowResourceDefinitionId": "dynamic_resource_id".Tentukan resource kustom untuk menangani variabel dinamis. Tentukan
workflowResourceDefinitionsdengan"resourceType": "DYNAMIC"dan"providerFunction": "onDynamicProviderFunction".idharus cocok denganworkflowResourceDefinitionIdyang ditetapkan dioutputs[]. Untuk mempelajari resource kustom lebih lanjut, lihat Menentukan resource kustom.Tetapkan
dynamicResourceDefinitionProviderke nama fungsi yang sesuai dalam kode langkah, dalam contoh inionDynamicDefinitionFunction(), yang menentukan dan menampilkan kartu konfigurasi yang menerima nilai input dinamis dan menampilkan resource kustom.
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",
}
Menentukan variabel output dalam kode
Kode langkah mencakup fungsi berikut:
onDynamicVariableConfigFunction(), yang membuat dan menampilkan kartu konfigurasi dengan widget input dinamis. Nama fungsi ini harus cocok dengan nilaionConfigFunction()dalam file manifes. Nama widget input dinamis harus cocok denganidyang ditetapkan dalam file manifes. Widget input dinamis ini memungkinkan pengguna menetapkan variabel dinamis saat mengonfigurasi alur mereka, seperti memilih Google Formulir.onDynamicVariableExecuteFunction(), yang menampilkan data variabel dinamis sebagai output saat langkah dijalankan. Nama fungsi ini harus cocok dengan nilaionExecuteFunction()dalam file manifes.variableIddarireturnOutputVariablesActionharus cocok denganidvariabel output yang ditetapkan dalam file manifes. Resource dinamis ditemukan pada objek peristiwa alur die.workflow.resourceFieldsDefinitionRetrieval. Input tidak dapat mereferensikan variabel karena semua input untuk resource dinamis harus tersedia pada waktu konfigurasi.onDynamicDefinitionFunction(), yang mengambil data variabel dinamis dari objek peristiwa alur, khususnyaresourceFieldsDefinitionRetrieval, dan menampilkanresourceFieldsDefinitionRetrievedActionyang menyediakan data dalam JSON yang dapat digunakan sebagai output untuk langkah-langkah selanjutnya.resourceIdharus cocok denganiditem dalam set arrayworkflowResourceDefinitions[]yang ditetapkan dalam file manifes.onDynamicProviderFunction(), yang mengambil variabel dinamis dari objek peristiwa alur die.workflow.resourceRetrieval.resourceReference.resourceIddan menampilkan JSON sebagai output untuk langkah-langkah selanjutnya.
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",
})
}
}
}
};
}
Topik terkait
- Variabel input
- Memvalidasi variabel input
- Variabel output
- Menentukan resource kustom
- Mencatat aktivitas dan error
- Objek peristiwa alur