Bu kılavuzda, dinamik değişken oluşturma işlemi açıklanmaktadır.
Mümkün olduğunda, bir değişken manifest dosyasında giriş veya çıkış değişkeni olarak statik olarak tanımlanmalıdır. Ancak bazı durumlarda, girişin yapısı değiştiği için yalnızca kullanıcı akışı yapılandırdığında tanımlanabilen bir değişken gerekir. Örneğin, akış yapılandırması sırasında belirli bir form seçilene kadar Google Formlar'daki soru ve yanıt sayısı (ve içerikleri) belirlenemez.
Dinamik değişkenler, giriş tanımlamanıza olanak tanıyarak bu durumları hesaba katar. Bu giriş, manifesto dosyasında ve adımın kodunda dinamik bir çıkış grubu oluşturur.
Çıkış değişkenini manifest dosyasında tanımlayın
Manifest dosyasında şu adımları uygulayın:
inputs[]içinde, dinamik giriş değeri kabul eden bir giriş değişkeni belirtin.outputs[]içinde, dinamik bir çıktı değişkenleri grubu döndüren bir çıktı değişkeni belirtin. Bu çıkışadataTypeof"workflowResourceDefinitionId": "dynamic_resource_id"verin.Dinamik değişkeni işlemek için özel bir kaynak tanımlayın.
workflowResourceDefinitions,"resourceType": "DYNAMIC"ve"providerFunction": "onDynamicProviderFunction"ile birlikte belirtilmelidir.id,outputs[]içinde ayarlananworkflowResourceDefinitionIdile eşleşmelidir. Özel kaynaklar hakkında daha fazla bilgi edinmek için Özel kaynak tanımlama başlıklı makaleyi inceleyin.dynamicResourceDefinitionProviderdeğerini, adımın kodundaki ilgili işlevin adıyla (bu örnekte, dinamik giriş değerini kabul eden ve özel bir kaynak döndüren bir yapılandırma kartını tanımlayan ve döndürenonDynamicDefinitionFunction()) değiştirin.
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",
}
Çıkış değişkenini kodda tanımlama
Adımın kodu şu işlevleri içerir:
onDynamicVariableConfigFunction(), dinamik giriş widget'ı içeren bir yapılandırma kartı oluşturup döndürür. Bu işlevin adı, manifest dosyasındakionConfigFunction()değerine uymalıdır. Dinamik giriş widget'ının adı, manifest dosyasında ayarlananidile eşleşmelidir. Bu dinamik giriş widget'ı, kullanıcıların akışlarını yapılandırırken dinamik bir değişken ayarlamasına (ör. Google Form seçme) olanak tanır.onDynamicVariableExecuteFunction(), adım çalıştırıldığında dinamik değişken verilerini çıkış olarak döndürür. Bu işlevin adı, manifest dosyasındakionExecuteFunction()değerine uygun olmalıdır.variableIdreturnOutputVariablesAction, manifesto dosyasında ayarlanan çıkış değişkenininidile eşleşmelidir. Dinamik kaynak, akış etkinliği nesnesindee.workflow.resourceFieldsDefinitionRetrievalkonumunda bulunur. Giriş, değişkenlere referans veremez. Bunun nedeni, dinamik bir kaynağın tüm girişlerinin yapılandırma sırasında kullanılabilir olması gerektiğidir.onDynamicDefinitionFunction(), akış etkinliği nesnesinden dinamik değişken verilerini (özellikleresourceFieldsDefinitionRetrieval) alır ve sonraki adımlarda kullanılabilir JSON biçiminde veri sağlayanresourceFieldsDefinitionRetrievedActiondöndürür.resourceId, manifest dosyasında ayarlananworkflowResourceDefinitions[]dizisindeki bir öğeninidile eşleşmelidir.onDynamicProviderFunction(),e.workflow.resourceRetrieval.resourceReference.resourceIdkonumundaki akış etkinliği nesnesinden dinamik değişkeni alır ve sonraki adımlar için çıkış olarak JSON döndürür.
Apps Komut Dosyası
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",
})
}
}
}
};
}
İlgili konular
- Giriş değişkenleri
- Giriş değişkenini doğrulama
- Çıkış değişkenleri
- Özel kaynak tanımlama
- Etkinlikleri ve hataları günlüğe kaydetme
- Akış etkinliği nesnesi