คู่มือนี้อธิบายวิธีกำหนดทรัพยากรที่กำหนดเองสำหรับ Google Workspace Flows
ทรัพยากรที่กำหนดเองคือโครงสร้างข้อมูลที่กำหนดเองซึ่งคุณกำหนดเพื่อจัดกลุ่ม ตัวแปรหลายรายการไว้ด้วยกันได้ เช่น หากต้องการสร้างโอกาสในการขายของ CRM ให้ส่งทรัพยากรที่กำหนดเองซึ่งมีอีเมล ที่อยู่ และชื่อ
วิธีระบุทรัพยากรที่กำหนดเองมี 2 วิธีดังนี้
- ข้อมูลอ้างอิง: เมื่อแสดงผลทรัพยากรที่กำหนดเองเป็นข้อมูลอ้างอิง คุณจะแสดงผลทรัพยากรที่กำหนดเองตามรหัส แทนที่จะเป็นออบเจ็กต์ทรัพยากรที่กำหนดเองแบบเต็ม ซึ่งจะช่วยปรับปรุงประสิทธิภาพด้วยการลดข้อมูลที่โอนระหว่างขั้นตอนของโฟลว์ เมื่อข้อมูลต้องมีการค้นหาเพิ่มเติม การแสดงรหัสของข้อมูลนั้นจะเป็นประโยชน์ในการค้นหาดังกล่าว
- เป็นค่า: ใช้วิธีนี้เมื่อต้องดึงข้อมูลระหว่าง การดำเนินการ หรือเมื่อทรัพยากรที่กำหนดเองมีขนาดเล็กและไม่มี ข้อมูลที่ละเอียดอ่อน
แสดงผลทรัพยากรที่กำหนดเองเป็นการอ้างอิง
การแสดงผลทรัพยากรที่กำหนดเองเป็นข้อมูลอ้างอิงจะช่วยให้คุณแสดงผลทรัพยากรที่กำหนดเองตามรหัสแทนที่จะเป็นออบเจ็กต์ทรัพยากรที่กำหนดเองแบบเต็มได้ หากทรัพยากรที่กำหนดเองมีขนาดใหญ่หรือซับซ้อน การส่งเฉพาะรหัสจะช่วยปรับปรุงประสิทธิภาพโดยการลดข้อมูลที่โอนระหว่างขั้นตอนของโฟลว์
หากต้องการแสดงทรัพยากรที่กำหนดเองเป็นข้อมูลอ้างอิง ให้แก้ไขไฟล์ Manifest และโค้ดของขั้นตอน
แก้ไขไฟล์ Manifest
ในไฟล์ Manifest ให้ทำดังนี้
ระบุ
workflowResourceDefinitionsและกำหนดid, อาร์เรย์fields[]และproviderFunctionให้กับworkflowResourceDefinitionsworkflowResourceDefinitionsคือ โครงสร้างที่กำหนดประเภทข้อมูลและเนื้อหาของทรัพยากรที่กำหนดเองภายในอาร์เรย์
fields[]คุณจะระบุฟิลด์แต่ละรายการที่ประกอบกันเป็น ทรัพยากรที่กำหนดเอง ในตัวอย่างนี้เรียกว่าfield_1และfield_2ค่าของ
providerFunctionต้องตรงกับชื่อฟังก์ชันในโค้ดของขั้นตอนproviderFunctionจะดึงเนื้อหาทรัพยากรที่กำหนดเองจริง เมื่อจำเป็นJSON
{ "workflowResourceDefinitions": [ { "id": "resource_id", "name": "Custom Resource", "fields": [ { "selector": "field_1", "name": "Field 1", "dataType": { "basicType": "STRING" } }, { "selector": "field_2", "name": "Field 2", "dataType": { "basicType": "STRING" } } ], "providerFunction": "onMessageResourceFunction" } ] }ใน
outputs[]ให้ระบุตัวแปรเอาต์พุตที่แสดงผลชุดตัวแปรเอาต์พุตแบบไดนามิก ตัวแปรเอาต์พุตมีdataTypeที่มีพร็อพเพอร์ตี้resourceTypeค่าของcardinalityต้องเป็นSINGLEJSON
"outputs": [{ "id": "resource_data", "description": "Resource Data", "cardinality": "SINGLE", "dataType": { "resourceType": { "workflowResourceDefinitionId": "resource_id" } } }]
ต่อไปนี้คือไฟล์ Manifest ที่สมบูรณ์ซึ่งกำหนดทรัพยากรที่กำหนดเอง
JSON
{
"timeZone": "America/Los_Angeles",
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Calculator",
"logoUrl": "https://www.gstatic.com/images/branding/productlogos/calculator_search/v1/web-24dp/logo_calculator_search_color_1x_web_24dp.png",
"useLocaleFromApp": true
},
"flows": {
"workflowElements": [
{
"id": "getResourceData",
"state": "ACTIVE",
"name": "Get Resource by ID",
"description": "Get Resource by ID",
"workflowAction": {
"outputs": [
{
"id": "resource_data",
"description": "Resource Data",
"cardinality": "SINGLE",
"dataType": {
"resourceType": {
"workflowResourceDefinitionId": "resource_id"
}
}
}
],
"onConfigFunction": "onConfigResourceFunction",
"onExecuteFunction": "onExecuteResourceFunction"
}
}
],
"workflowResourceDefinitions": [
{
"id": "resource_id",
"name": "Custom Resource",
"fields": [
{
"selector": "field_1",
"name": "Field 1",
"dataType": {
"basicType": "STRING"
}
},
{
"selector": "field_2",
"name": "Field 2",
"dataType": {
"basicType": "STRING"
}
}
],
"providerFunction": "onMessageResourceFunction"
}
]
}
}
}
แก้ไขโค้ด
ในโค้ดของแอปพลิเคชัน ให้ทำดังนี้
ใช้
providerFunctionซึ่งในตัวอย่างนี้เรียกว่าonMessageResourceFunction()เพื่อดึงเนื้อหาทรัพยากรที่กำหนดเองเมื่อจำเป็น โดยจะรับอินพุตeซึ่งเป็นเพย์โหลด JSON ของออบเจ็กต์เหตุการณ์ของขั้นตอน และตั้งค่ารหัสทรัพยากรที่กำหนดเองจากอินพุตดังกล่าวApps Script
function onMessageResourceFunction(e) { var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId; var field_1 = ...; var field_2 = ...; return { "hostAppAction": { "workflowAction": { "resourceRetrievedAction": { "resourceJson": JSON.stringify({ "field_1": field_1, "field_2": field_2, }) } } } }; }ฟังก์ชันผู้ให้บริการต้องแสดงผลค่าของทรัพยากรที่กำหนดเองโดย เรียกข้อมูลด้วยกลไกที่เหมาะสม เช่น การเรียก API หรือการอ่าน ฐานข้อมูล
หากต้องการดึงและแสดงทรัพยากรที่กำหนดเองตามรหัส ให้แสดงเป็น
returnOutputVariablesActionดังที่แสดงในonExecuteResourceFunction()Apps Script
function onExecuteResourceFunction(e) { var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId; return { "hostAppAction": { "workflowAction": { "returnOutputVariablesAction": { "variableValues": [{ "variableId": "resource_data", "variableData": { "resourceReferences" : [ resource_id ] } }] } } } }; }
ตัวอย่างที่สมบูรณ์มีดังนี้
Apps Script
function onMessageResourceFunction(e) {
var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId;
var field_1 = ...;
var field_2 = ...;
return {
"hostAppAction": {
"workflowAction": {
"resourceRetrievedAction": {
"resourceJson": JSON.stringify({
"field_1": field_1,
"field_2": field_2,
})
}
}
}
};
}
function onExecuteResourceFunction(e) {
var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId;
return {
"hostAppAction": {
"workflowAction": {
"returnOutputVariablesAction": {
"variableValues": [{
"variableId": "resource_data",
"variableData": {
"resourceReferences" : [ resource_id ]
}
}]
}
}
}
};
}
แสดงผลทรัพยากรที่กำหนดเองเป็นค่า
เมื่อแสดงทรัพยากรที่กำหนดเองเป็นข้อมูลอ้างอิง คุณจะแสดงทรัพยากรที่กำหนดเอง
ตามรหัสแทนที่จะเป็นออบเจ็กต์ทรัพยากรที่กำหนดเองแบบเต็ม หากต้องการส่งออบเจ็กต์ทรัพยากรทั้งหมด คุณสามารถทำได้ด้วย resourceValues
ใน resourceValues คุณจะกำหนดเอาต์พุตของขั้นตอน
หากต้องการแสดงทรัพยากรที่กำหนดเองเป็นค่า ให้แก้ไขไฟล์ Manifest และโค้ดของขั้นตอน
แก้ไขไฟล์ Manifest
ในไฟล์ Manifest ให้ทำดังนี้
ระบุ
workflowResourceDefinitionsและกำหนดรหัสให้workflowResourceDefinitionsเป็นโครงสร้างที่กำหนดประเภทข้อมูลและเนื้อหาของทรัพยากรที่กำหนดเอง ภายในworkflowResourceDefinitionsคุณ ระบุฟิลด์แต่ละรายการที่ประกอบกันเป็นทรัพยากรที่กำหนดเอง ในตัวอย่างนี้ เรียกว่าfield_1และfield_2ระบุ
providerFunctionที่มีค่าเป็นชื่อฟังก์ชันในโค้ดของขั้นตอนproviderFunctionจะดึงเนื้อหาทรัพยากรที่กำหนดเองจริง เมื่อจำเป็นJSON
{ "workflowResourceDefinitions": [ { "id": "resource_id", "name": "Custom Resource", "fields": [ { "selector": "field_1", "name": "Field 1", "dataType": { "basicType": "STRING" } }, { "selector": "field_2", "name": "Field 2", "dataType": { "basicType": "STRING" } } ], "providerFunction": "onExecuteResourceAsValuesFunction" } ] }ใน
outputs[]ให้ระบุตัวแปรเอาต์พุตที่แสดงผลresourceValuesค่าของcardinalityต้องเป็นSINGLEJSON
{ "outputs": [ { "id": "resource_data", "description": "Resource Data", "cardinality": "SINGLE", "dataType": { "resourceValues": { "value1": "value one" } } } ] }
ต่อไปนี้คือไฟล์ Manifest ที่สมบูรณ์ซึ่งกำหนดทรัพยากรที่กำหนดเอง
JSON
{
"timeZone": "America/Los_Angeles",
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Calculator",
"logoUrl": "https://www.gstatic.com/images/branding/productlogos/calculator_search/v1/web-24dp/logo_calculator_search_color_1x_web_24dp.png",
"useLocaleFromApp": true
},
"flows": {
"workflowElements": [
{
"id": "getResourceData",
"state": "ACTIVE",
"name": "Get Resource by ID",
"description": "Get Resource by ID",
"workflowAction": {
"outputs": [
{
"id": "resource_data",
"description": "Resource Data",
"cardinality": "SINGLE",
"dataType": {
"resourceValues": {
"value1": "value one"
}
}
}
],
"onConfigFunction": "onConfigResourceFunction",
"onExecuteFunction": "onExecuteResourceFunction"
}
}
],
"workflowResourceDefinitions": [
{
"id": "resource_id",
"name": "Custom Resource",
"fields": [
{
"selector": "field_1",
"name": "Field 1",
"dataType": {
"basicType": "STRING"
}
},
{
"selector": "field_2",
"name": "Field 2",
"dataType": {
"basicType": "STRING"
}
}
],
"providerFunction": "onExecuteResourceAsValuesFunction"
}
]
}
}
}
แก้ไขโค้ด
ในโค้ดแอปพลิเคชัน ให้ใช้ providerFunction ซึ่งเรียกว่า
onExecuteResourceAsValuesFunction() ในตัวอย่างนี้ ซึ่งกำหนดและแสดงผล
ทรัพยากรที่กำหนดเองเป็น JSON ซึ่งในที่นี้จะแสดงเป็น resourceJSON:
Apps Script
function onExecuteResourceAsValuesFunction() {
var field_1 = "value 1";
var field_2 = "value 2";
var resourceJSON = JSON.stringify({
"field_1": field_1,
"field_2": field_2,
});
return {
"hostAppAction": {
"workflowAction": {
"returnOutputVariablesAction": {
"variableValues": [{
"variableId": "resource_data",
"variableData": {
"resourceValues" : [ resourceJSON ]
}
}]
}
}
}
};
}