คู่มือนี้อธิบายวิธีสร้างตัวแปรแบบไดนามิก
เมื่อเป็นไปได้ ควรมีการกำหนดตัวแปรแบบคงที่ในไฟล์ Manifest เป็น ตัวแปรอินพุตหรือเอาต์พุต อย่างไรก็ตาม ในบางกรณี คุณจะต้องใช้ตัวแปรที่กำหนดได้เฉพาะเมื่อผู้ใช้กำหนดค่าโฟลว์ เนื่องจากลักษณะของอินพุตจะแตกต่างกัน ตัวอย่างเช่น ระบบจะกำหนดจำนวนคำถามและคำตอบ (และเนื้อหาของคำถามและคำตอบ) สำหรับ Google ฟอร์มไม่ได้จนกว่าจะเลือก แบบฟอร์มที่เฉพาะเจาะจงในระหว่างการกำหนดค่าโฟลว์
ตัวแปรแบบไดนามิกจะพิจารณากรณีเหล่านี้โดยให้คุณกำหนดอินพุตที่สร้างชุดเอาต์พุตแบบไดนามิกในไฟล์ Manifest และในโค้ดของขั้นตอน
กำหนดตัวแปรเอาต์พุตในไฟล์ Manifest
ในไฟล์ Manifest ให้ทำตามขั้นตอนต่อไปนี้
ใน
inputs[]ให้ระบุตัวแปรอินพุตที่ยอมรับค่าอินพุตแบบไดนามิกใน
outputs[]ให้ระบุตัวแปรเอาต์พุตที่แสดงผลชุดตัวแปรเอาต์พุตแบบไดนามิก ให้เอาต์พุตนี้มีdataTypeของ"workflowResourceDefinitionId": "dynamic_resource_id"กำหนดทรัพยากรที่กำหนดเองเพื่อจัดการตัวแปรแบบไดนามิก ระบุ
workflowResourceDefinitionsด้วย"resourceType": "DYNAMIC"และ"providerFunction": "onDynamicProviderFunction"idต้องตรงกับworkflowResourceDefinitionIdที่ตั้งไว้ในoutputs[]ดูข้อมูลเพิ่มเติมเกี่ยวกับ ทรัพยากรที่กำหนดเองได้ที่ กำหนดทรัพยากรที่กำหนดเองตั้งค่า
dynamicResourceDefinitionProviderเป็นชื่อของฟังก์ชันที่เกี่ยวข้องในโค้ดของขั้นตอน ในตัวอย่างนี้คือonDynamicDefinitionFunction()ซึ่งกำหนดและแสดงผลการ์ดการกำหนดค่าที่ยอมรับค่าอินพุตแบบไดนามิกและแสดงผลทรัพยากรที่กำหนดเอง
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",
}
กำหนดตัวแปรเอาต์พุตในโค้ด
โค้ดของขั้นตอนประกอบด้วยฟังก์ชันต่อไปนี้
onDynamicVariableConfigFunction()ซึ่งสร้างและแสดงการ์ดการกำหนดค่าที่มีวิดเจ็ตอินพุตแบบไดนามิก ชื่อของฟังก์ชันนี้ ต้องตรงกับค่าของonConfigFunction()ในไฟล์ Manifest ชื่อของ วิดเจ็ตอินพุตแบบไดนามิกต้องตรงกับidที่ตั้งค่าไว้ในไฟล์ Manifest วิดเจ็ตอินพุตแบบไดนามิกนี้ช่วยให้ผู้ใช้ตั้งค่าตัวแปรแบบไดนามิกได้เมื่อกำหนดค่าโฟลว์ เช่น การเลือก Google ฟอร์มonDynamicVariableExecuteFunction()ซึ่งจะแสดงผลข้อมูลตัวแปรแบบไดนามิก เป็นเอาต์พุตเมื่อขั้นตอนทํางาน ชื่อของฟังก์ชันนี้ต้องตรงกับ ค่าของonExecuteFunction()ในไฟล์ ManifestvariableIdของreturnOutputVariablesActionต้องตรงกับidของตัวแปรเอาต์พุตที่ตั้งค่าไว้ ในไฟล์ Manifest พบทรัพยากรแบบไดนามิกในออบเจ็กต์เหตุการณ์โฟลว์ที่e.workflow.resourceFieldsDefinitionRetrievalอินพุตอ้างอิงตัวแปรไม่ได้เนื่องจากอินพุตทั้งหมดสำหรับทรัพยากรแบบไดนามิกต้องพร้อมใช้งานในเวลาที่กำหนดค่าonDynamicDefinitionFunction()ซึ่งดึงข้อมูลตัวแปรแบบไดนามิก จากออบเจ็กต์เหตุการณ์โฟลว์ โดยเฉพาะresourceFieldsDefinitionRetrievalและแสดงผลresourceFieldsDefinitionRetrievedActionซึ่งให้ข้อมูลในรูปแบบ JSON ที่ใช้ได้ เป็นเอาต์พุตสำหรับขั้นตอนต่อๆ ไปresourceIdต้องตรงกับidของ รายการในอาร์เรย์workflowResourceDefinitions[]ที่ตั้งค่าไว้ในไฟล์ ManifestonDynamicProviderFunction()ซึ่งดึงตัวแปรแบบไดนามิกจากออบเจ็กต์เหตุการณ์โฟลว์ที่e.workflow.resourceRetrieval.resourceReference.resourceIdและแสดงผล JSON เป็นเอาต์พุตสำหรับขั้นตอนต่อๆ ไป
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",
})
}
}
}
};
}
หัวข้อที่เกี่ยวข้อง
- ตัวแปรอินพุต
- ตรวจสอบตัวแปรอินพุต
- ตัวแปรเอาต์พุต
- กำหนดทรัพยากรที่กำหนดเอง
- บันทึกกิจกรรมและข้อผิดพลาด
- ออบเจ็กต์เหตุการณ์โฟลว์