Menampilkan data kompleks dengan resource kustom

Panduan ini menjelaskan cara menentukan resource kustom untuk Alur Google Workspace.

Resource kustom adalah struktur data kustom yang dapat Anda tentukan untuk mengelompokkan beberapa variabel. Misalnya, untuk membuat prospek CRM, teruskan resource kustom yang berisi alamat email, alamat jalan, dan nama.

Berikut dua cara untuk menentukan resource kustom:

  • Sebagai referensi: Saat menampilkan resource kustom sebagai referensi, Anda akan menampilkan resource kustom berdasarkan ID-nya, bukan objek resource kustom lengkap. Hal ini meningkatkan performa dengan mengurangi data yang ditransfer antar-langkah alur. Jika data memerlukan pencarian sekunder, menampilkan ID-nya akan berguna untuk melakukan pencarian tersebut.
  • Sebagai nilai: Gunakan metode ini saat data harus diambil selama eksekusi, atau saat resource kustom berukuran kecil dan tidak berisi data sensitif.

Menampilkan resource kustom sebagai referensi

Dengan menampilkan resource kustom sebagai referensi, Anda dapat menampilkan resource kustom berdasarkan ID-nya, bukan objek resource kustom lengkap. Jika resource kustom berukuran besar atau kompleks, meneruskan hanya ID akan meningkatkan performa dengan mengurangi data yang ditransfer antar-langkah alur.

Untuk menampilkan resource kustom sebagai referensi, edit file manifes dan kode langkah.

Mengedit file manifes

Dalam file manifes:

  1. Tentukan workflowResourceDefinitions dan tetapkan id, array fields[], dan providerFunction. workflowResourceDefinitions adalah struktur yang menentukan jenis data dan konten resource kustom.

  2. Dalam array fields[], Anda menentukan masing-masing kolom yang membentuk resource kustom, dalam contoh ini disebut field_1 dan field_2.

  3. Nilai providerFunction harus cocok dengan nama fungsi dalam kode langkah. providerFunction mengambil konten resource kustom yang sebenarnya jika diperlukan.

    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. Di outputs[], tentukan variabel output yang menampilkan kumpulan variabel output dinamis. Variabel output memiliki dataType dengan properti resourceType. Nilai cardinality harus SINGLE.

    JSON

    "outputs": [{
            "id": "resource_data",
            "description": "Resource Data",
            "cardinality": "SINGLE",
            "dataType": {
              "resourceType": { "workflowResourceDefinitionId": "resource_id" }
            }
          }]
    

Berikut adalah file manifes lengkap yang menentukan resource kustom:

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

Edit kode

Dalam kode aplikasi:

  1. Terapkan providerFunction, yang disebut onMessageResourceFunction() dalam contoh ini, yang mengambil konten resource kustom saat diperlukan. Tindakan ini mengambil input e yang merupakan payload JSON objek peristiwa langkah, dan dari sana menetapkan ID resource kustom.

    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. Fungsi penyedia harus menampilkan nilai resource kustom dengan mengambilnya menggunakan mekanisme yang sesuai, seperti memanggil API atau membaca database.

  3. Untuk mengambil dan menampilkan resource kustom berdasarkan ID-nya, tampilkan sebagai returnOutputVariablesAction, seperti yang ditunjukkan dalam 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 ]
                }
              }]
            }
          }
        }
      };
    }
    

Berikut contoh lengkapnya:

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

Menampilkan resource kustom sebagai nilai

Saat menampilkan resource kustom sebagai referensi, Anda akan menampilkan resource kustom berdasarkan ID-nya, bukan objek resource kustom lengkap. Jika perlu meneruskan seluruh objek resource, Anda dapat melakukannya dengan resourceValues.

Di resourceValues, Anda menentukan output langkah.

Untuk menampilkan resource kustom sebagai nilai, edit file manifes dan kode langkah.

Mengedit file manifes

Dalam file manifes:

  1. Tentukan workflowResourceDefinitions dan tetapkan ID-nya.workflowResourceDefinitions adalah struktur yang menentukan jenis data dan konten resource kustom. Dalam workflowResourceDefinitions, Anda menentukan masing-masing kolom yang membentuk resource kustom, dalam contoh ini disebut field_1 dan field_2.

  2. Tentukan providerFunction yang nilainya adalah nama fungsi dalam kode langkah. providerFunction mengambil konten resource kustom yang sebenarnya jika diperlukan.

    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. Di outputs[], tentukan variabel output yang menampilkan resourceValues. Nilai cardinality harus SINGLE.

    JSON

    {
        "outputs": [
            {
                "id": "resource_data",
                "description": "Resource Data",
                "cardinality": "SINGLE",
                "dataType": {
                    "resourceValues": {
                        "value1": "value one"
                    }
                }
            }
        ]
    }
    

Berikut adalah file manifes lengkap yang menentukan resource kustom:

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

Edit kode

Dalam kode aplikasi, terapkan providerFunction, yang disebut onExecuteResourceAsValuesFunction() dalam contoh ini, yang menentukan dan menampilkan resource kustom sebagai JSON, yang di sini diabstraksi sebagai 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 ]
            }
          }]
        }
      }
    }
  };
}