Neste guia, explicamos como definir recursos personalizados para o Google Workspace Flows.
Recursos personalizados são estruturas de dados personalizadas que você pode definir para agrupar várias variáveis. Por exemplo, para criar um lead de CRM, transmita um recurso personalizado que contenha um endereço de e-mail, um endereço físico e um nome.
Estas são as duas maneiras de definir recursos personalizados:
- Como referência:quando você gera um recurso personalizado como referência, retorna o recurso personalizado pelo ID em vez do objeto completo. Isso melhora o desempenho ao reduzir os dados transferidos entre as etapas do fluxo. Quando os dados exigem pesquisas secundárias, retornar o ID é útil para realizar essas pesquisas.
- Como um valor:use esse método quando os dados precisarem ser recuperados durante a execução ou quando o recurso personalizado for pequeno e não contiver dados sensíveis.
Gerar um recurso personalizado como referência
Ao gerar um recurso personalizado como referência, é possível retornar o recurso personalizado pelo ID em vez do objeto completo. Se um recurso personalizado for grande ou complexo, transmitir apenas o ID vai melhorar a performance, reduzindo os dados transferidos entre as etapas do fluxo.
Para gerar um recurso personalizado como referência, edite o arquivo de manifesto e o código da etapa.
Editar o arquivo de manifesto
No arquivo de manifesto:
Especifique um
workflowResourceDefinitionse atribua a ele umid, uma matrizfields[]e umproviderFunction. OworkflowResourceDefinitionsé uma estrutura que define tipos de dados e conteúdos do recurso personalizado.Dentro da matriz
fields[], especifique os campos individuais que compõem o recurso personalizado, neste exemplo chamadofield_1efield_2.O valor de
providerFunctionprecisa corresponder ao nome de uma função no código da etapa. OproviderFunctionrecupera o conteúdo real do recurso personalizado quando necessário.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" } ] }Em
outputs[], especifique uma variável de saída que retorne um conjunto dinâmico de variáveis de saída. A variável de saída tem umdataTypecom a propriedaderesourceType. O valor decardinalityprecisa serSINGLE.JSON
"outputs": [{ "id": "resource_data", "description": "Resource Data", "cardinality": "SINGLE", "dataType": { "resourceType": { "workflowResourceDefinitionId": "resource_id" } } }]
Confira um arquivo de manifesto completo que define um recurso personalizado:
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"
}
]
}
}
}
Editar o código
No código do aplicativo:
Implemente o
providerFunction, chamadoonMessageResourceFunction()neste exemplo, que recupera o conteúdo do recurso personalizado quando necessário. Ele usa a entradae, que é o payload JSON do objeto de evento da etapa, e define o ID do recurso personalizado.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, }) } } } }; }A função de provedor precisa retornar o valor do recurso personalizado recuperando-o com um mecanismo adequado, como chamar uma API ou ler um banco de dados.
Para recuperar e retornar um recurso personalizado pelo ID, retorne-o como
returnOutputVariablesAction, conforme mostrado emonExecuteResourceFunction().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 ] } }] } } } }; }
Confira um exemplo 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 ]
}
}]
}
}
}
};
}
Gerar um recurso personalizado como um valor
Ao gerar um recurso personalizado como uma referência, você retorna o recurso personalizado
pelo ID em vez do objeto completo. Se você precisar transmitir o
objeto de recurso inteiro, use resourceValues.
Em resourceValues, você define a saída de uma etapa.
Para gerar um recurso personalizado como um valor, edite o arquivo de manifesto e o código da etapa.
Editar o arquivo de manifesto
No arquivo de manifesto:
Especifique um
workflowResourceDefinitionse atribua um ID a ele.OworkflowResourceDefinitionsé uma estrutura que define tipos de dados e conteúdo do recurso personalizado. EmworkflowResourceDefinitions, especifique os campos individuais que compõem o recurso personalizado, neste exemplo chamadofield_1efield_2.Especifique um
providerFunctioncujo valor seja o nome de uma função no código da etapa. OproviderFunctionrecupera o conteúdo real do recurso personalizado quando necessário.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" } ] }Em
outputs[], especifique uma variável de saída que retorneresourceValues. O valor decardinalityprecisa serSINGLE.JSON
{ "outputs": [ { "id": "resource_data", "description": "Resource Data", "cardinality": "SINGLE", "dataType": { "resourceValues": { "value1": "value one" } } } ] }
Confira um arquivo de manifesto completo que define um recurso personalizado:
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"
}
]
}
}
}
Editar o código
No código do aplicativo, implemente o providerFunction, chamado
onExecuteResourceAsValuesFunction() neste exemplo, que define e retorna
o recurso personalizado como JSON, aqui abstraído como 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 ]
}
}]
}
}
}
};
}
Temas relacionados
- Variáveis de entrada
- Validar uma variável de entrada
- Variáveis de saída
- Registrar atividades e erros
- Objeto de evento de fluxo