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:
Tentukan
workflowResourceDefinitionsdan tetapkanid, arrayfields[], danproviderFunction.workflowResourceDefinitionsadalah struktur yang menentukan jenis data dan konten resource kustom.Dalam array
fields[], Anda menentukan masing-masing kolom yang membentuk resource kustom, dalam contoh ini disebutfield_1danfield_2.Nilai
providerFunctionharus cocok dengan nama fungsi dalam kode langkah.providerFunctionmengambil 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" } ] }Di
outputs[], tentukan variabel output yang menampilkan kumpulan variabel output dinamis. Variabel output memilikidataTypedengan propertiresourceType. NilaicardinalityharusSINGLE.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:
Terapkan
providerFunction, yang disebutonMessageResourceFunction()dalam contoh ini, yang mengambil konten resource kustom saat diperlukan. Tindakan ini mengambil inputeyang 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, }) } } } }; }Fungsi penyedia harus menampilkan nilai resource kustom dengan mengambilnya menggunakan mekanisme yang sesuai, seperti memanggil API atau membaca database.
Untuk mengambil dan menampilkan resource kustom berdasarkan ID-nya, tampilkan sebagai
returnOutputVariablesAction, seperti yang ditunjukkan dalamonExecuteResourceFunction().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:
Tentukan
workflowResourceDefinitionsdan tetapkan ID-nya.workflowResourceDefinitionsadalah struktur yang menentukan jenis data dan konten resource kustom. DalamworkflowResourceDefinitions, Anda menentukan masing-masing kolom yang membentuk resource kustom, dalam contoh ini disebutfield_1danfield_2.Tentukan
providerFunctionyang nilainya adalah nama fungsi dalam kode langkah.providerFunctionmengambil 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" } ] }Di
outputs[], tentukan variabel output yang menampilkanresourceValues. NilaicardinalityharusSINGLE.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 ]
}
}]
}
}
}
};
}
Topik terkait
- Variabel input
- Memvalidasi variabel input
- Variabel output
- Mencatat aktivitas dan error
- Objek peristiwa alur