แสดงข้อมูลที่ซับซ้อนด้วยทรัพยากรที่กำหนดเอง

คู่มือนี้อธิบายวิธีกำหนดทรัพยากรที่กำหนดเองสำหรับ Google Workspace Flows

ทรัพยากรที่กำหนดเองคือโครงสร้างข้อมูลที่กำหนดเองซึ่งคุณกำหนดเพื่อจัดกลุ่ม ตัวแปรหลายรายการไว้ด้วยกันได้ เช่น หากต้องการสร้างโอกาสในการขายของ CRM ให้ส่งทรัพยากรที่กำหนดเองซึ่งมีอีเมล ที่อยู่ และชื่อ

วิธีระบุทรัพยากรที่กำหนดเองมี 2 วิธีดังนี้

  • ข้อมูลอ้างอิง: เมื่อแสดงผลทรัพยากรที่กำหนดเองเป็นข้อมูลอ้างอิง คุณจะแสดงผลทรัพยากรที่กำหนดเองตามรหัส แทนที่จะเป็นออบเจ็กต์ทรัพยากรที่กำหนดเองแบบเต็ม ซึ่งจะช่วยปรับปรุงประสิทธิภาพด้วยการลดข้อมูลที่โอนระหว่างขั้นตอนของโฟลว์ เมื่อข้อมูลต้องมีการค้นหาเพิ่มเติม การแสดงรหัสของข้อมูลนั้นจะเป็นประโยชน์ในการค้นหาดังกล่าว
  • เป็นค่า: ใช้วิธีนี้เมื่อต้องดึงข้อมูลระหว่าง การดำเนินการ หรือเมื่อทรัพยากรที่กำหนดเองมีขนาดเล็กและไม่มี ข้อมูลที่ละเอียดอ่อน

แสดงผลทรัพยากรที่กำหนดเองเป็นการอ้างอิง

การแสดงผลทรัพยากรที่กำหนดเองเป็นข้อมูลอ้างอิงจะช่วยให้คุณแสดงผลทรัพยากรที่กำหนดเองตามรหัสแทนที่จะเป็นออบเจ็กต์ทรัพยากรที่กำหนดเองแบบเต็มได้ หากทรัพยากรที่กำหนดเองมีขนาดใหญ่หรือซับซ้อน การส่งเฉพาะรหัสจะช่วยปรับปรุงประสิทธิภาพโดยการลดข้อมูลที่โอนระหว่างขั้นตอนของโฟลว์

หากต้องการแสดงทรัพยากรที่กำหนดเองเป็นข้อมูลอ้างอิง ให้แก้ไขไฟล์ Manifest และโค้ดของขั้นตอน

แก้ไขไฟล์ Manifest

ในไฟล์ Manifest ให้ทำดังนี้

  1. ระบุ workflowResourceDefinitions และกำหนด id, อาร์เรย์ fields[] และ providerFunction ให้กับ workflowResourceDefinitions workflowResourceDefinitions คือ โครงสร้างที่กำหนดประเภทข้อมูลและเนื้อหาของทรัพยากรที่กำหนดเอง

  2. ภายในอาร์เรย์ fields[] คุณจะระบุฟิลด์แต่ละรายการที่ประกอบกันเป็น ทรัพยากรที่กำหนดเอง ในตัวอย่างนี้เรียกว่า field_1 และ field_2

  3. ค่าของ 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"
            }
        ]
    }
    
  4. ใน outputs[] ให้ระบุตัวแปรเอาต์พุตที่แสดงผลชุดตัวแปรเอาต์พุตแบบไดนามิก ตัวแปรเอาต์พุตมี dataType ที่มีพร็อพเพอร์ตี้ resourceType ค่าของ cardinality ต้องเป็น SINGLE

    JSON

    "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"
                }
            ]
        }
    }
}

แก้ไขโค้ด

ในโค้ดของแอปพลิเคชัน ให้ทำดังนี้

  1. ใช้ 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,
              })
            }
          }
        }
      };
    }
    
  2. ฟังก์ชันผู้ให้บริการต้องแสดงผลค่าของทรัพยากรที่กำหนดเองโดย เรียกข้อมูลด้วยกลไกที่เหมาะสม เช่น การเรียก API หรือการอ่าน ฐานข้อมูล

  3. หากต้องการดึงและแสดงทรัพยากรที่กำหนดเองตามรหัส ให้แสดงเป็น 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 ให้ทำดังนี้

  1. ระบุ workflowResourceDefinitions และกำหนดรหัสให้ workflowResourceDefinitions เป็นโครงสร้างที่กำหนดประเภทข้อมูลและเนื้อหาของทรัพยากรที่กำหนดเอง ภายใน workflowResourceDefinitions คุณ ระบุฟิลด์แต่ละรายการที่ประกอบกันเป็นทรัพยากรที่กำหนดเอง ในตัวอย่างนี้ เรียกว่า field_1 และ field_2

  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"
            }
        ]
    }
    
  3. ใน outputs[] ให้ระบุตัวแปรเอาต์พุตที่แสดงผล resourceValues ค่าของ cardinality ต้องเป็น SINGLE

    JSON

    {
        "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 ]
            }
          }]
        }
      }
    }
  };
}