Questa guida spiega come definire risorse personalizzate per Google Workspace Flows.
Le risorse personalizzate sono strutture di dati personalizzate che puoi definire per raggruppare più variabili. Ad esempio, per creare un lead CRM, passa una risorsa personalizzata contenente un indirizzo email, un indirizzo e un nome.
Questi sono i due modi per definire le risorse personalizzate:
- Come riferimento:quando restituisci una risorsa personalizzata come riferimento, restituisci la risorsa personalizzata in base al suo ID anziché all'oggetto risorsa personalizzata completo. In questo modo le prestazioni migliorano riducendo i dati trasferiti tra i passaggi del flusso. Quando i dati richiedono ricerche secondarie, restituirne l'ID è utile per eseguirle.
- Come valore: utilizza questo metodo quando i dati devono essere recuperati durante l'esecuzione o quando la risorsa personalizzata è piccola e non contiene dati sensibili.
Generare una risorsa personalizzata come riferimento
Se restituisci una risorsa personalizzata come riferimento, puoi restituire la risorsa personalizzata in base al suo ID anziché all'oggetto risorsa personalizzata completo. Se una risorsa personalizzata è grande o complessa, il passaggio del solo ID migliora le prestazioni riducendo i dati trasferiti tra i passaggi del flusso.
Per generare una risorsa personalizzata come riferimento, modifica il file manifest e il codice del passaggio.
Modificare il file manifest
Nel file manifest:
Specifica un
workflowResourceDefinitionse assegnagli unid, un arrayfields[]e unproviderFunction.workflowResourceDefinitionsè una struttura che definisce i tipi di dati e i contenuti della risorsa personalizzata.All'interno dell'array
fields[], specifica i singoli campi che compongono la risorsa personalizzata, in questo esempio denominatafield_1efield_2.Il valore di
providerFunctiondeve corrispondere al nome di una funzione nel codice del passaggio.providerFunctionrecupera i contenuti effettivi delle risorse personalizzate quando necessario.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" } ] }In
outputs[], specifica una variabile di output che restituisce un insieme dinamico di variabili di output. La variabile di output ha undataTypecon la proprietàresourceType. Il valore dicardinalitydeve essereSINGLE.JSON
"outputs": [{ "id": "resource_data", "description": "Resource Data", "cardinality": "SINGLE", "dataType": { "resourceType": { "workflowResourceDefinitionId": "resource_id" } } }]
Ecco un file manifest completo che definisce una risorsa personalizzata:
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"
}
]
}
}
}
Modifica il codice
Nel codice dell'applicazione:
Implementa
providerFunction, denominatoonMessageResourceFunction()in questo esempio, che recupera i contenuti delle risorse personalizzate quando necessario. Prende l'inpute, ovvero il payload JSON dell'oggetto evento del passaggio, e imposta l'ID risorsa personalizzato.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, }) } } } }; }La funzione del fornitore deve restituire il valore della risorsa personalizzata recuperandolo con un meccanismo appropriato, ad esempio chiamando un'API o leggendo un database.
Per recuperare e restituire una risorsa personalizzata in base al suo ID, restituiscila come
returnOutputVariablesAction, come mostrato inonExecuteResourceFunction().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 ] } }] } } } }; }
Ecco un esempio completo:
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 ]
}
}]
}
}
}
};
}
Restituisci una risorsa personalizzata come valore
Quando restituisci una risorsa personalizzata come riferimento, restituisci la risorsa personalizzata
in base al suo ID anziché all'oggetto risorsa personalizzata completo. Se devi passare l'intero oggetto risorsa, puoi farlo con resourceValues.
In resourceValues, definisci l'output di un passaggio.
Per generare una risorsa personalizzata come valore, modifica il file manifest e il codice del passaggio.
Modificare il file manifest
Nel file manifest:
Specifica un
workflowResourceDefinitionse assegnagli un ID.IlworkflowResourceDefinitionsè una struttura che definisce i tipi di dati e i contenuti della risorsa personalizzata. All'interno diworkflowResourceDefinitions, specifica i singoli campi che compongono la risorsa personalizzata, in questo esempio chiamatifield_1efield_2.Specifica un
providerFunctionil cui valore è il nome di una funzione nel codice del passaggio.providerFunctionrecupera i contenuti effettivi delle risorse personalizzate quando necessario.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" } ] }In
outputs[], specifica una variabile di output che restituisceresourceValues. Il valore dicardinalitydeve essereSINGLE.JSON
{ "outputs": [ { "id": "resource_data", "description": "Resource Data", "cardinality": "SINGLE", "dataType": { "resourceValues": { "value1": "value one" } } } ] }
Ecco un file manifest completo che definisce una risorsa personalizzata:
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"
}
]
}
}
}
Modifica il codice
Nel codice dell'applicazione, implementa providerFunction, chiamato
onExecuteResourceAsValuesFunction() in questo esempio, che definisce e restituisce
la risorsa personalizzata come JSON, qui astratta come 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 ]
}
}]
}
}
}
};
}
Argomenti correlati
- Variabili di input
- Convalidare una variabile di input
- Variabili di output
- Registrare attività ed errori
- Oggetto evento flusso