Este artículo también está disponible en: English (Inglés)
Si utilizas Zoho Desk para gestionar la atención al cliente y quieres analizar que tal van las cosas, estás de suerte, vamos a ver paso a paso cómo puedes crear fácilmente un conector y ponerlo a funcionar en Data Studio para crear tus propios informes y cuadros de mando.
En caso de que utilices otro servicio, no te preocupes, te resultará sencillo adaptar el ejemplo a tu realidad. Deberás adaptar la consulta de la información a la arquitectura de tus herramienta.
Con el objetivo de hacer el artículo más ligero, no describiremos las aspectos fundamentales de google apps scripts. En caso de que tengáis alguna duda, os recomiendo revisar este tutorial que ha servido de inspiración para este texto.
Uno de los puntos que a mi me parece genial, es que puedes hacer el proceso completo sin instalar nada en tu máquina local. Puesto que haremos todo el trabajo en las distintas plataformas.
Estos son los pasos necesarios para construir el conector:
Puedes consultar la documentación oficial de Data Studio y Zoho Desk API
- Una cuenta de google. (Asumiré que ya la tienes)
- Crear un proyecto en Google Apps Scripts (https://script.google.com )
- Habilitar la biblioteca OAUTH2 y las llamadas externas
- Id. de Biblioteca:1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
- Desarrollar las funciones básicas de los conectores en google apps scripts
- Tener una cuenta de Zoho (Asumiré que ya la tienes)
- Crear una app en la consola API de Zoho
- Publicar el conector
- Autorizar los accesos a las distintas cuentas
- Analiza
Desarrolla las funciones básicas
Fichero principal
Lo primero que haremos dentro de nuestro proyecto de google apps scrips es crear un fichero llamado main.gs (El nombre no es relevante).
En este fichero añadiremos las siguientes funciones:
Función que utilizaremos para seleccionar OAUTH2 como método de autentificación.
function getAuthType() {
return { type: "OAUTH2" };
}
Además, aunque queda fuera del objetivo de este tutorial, podemos definir funcionamiento específico para administradores, aunque en este punto, no lo utilizaremos.
function isAdminUser() {
return true;
}
A nivel de configuración, podríamos definir distintos aspectos, para el ejemplo simplemente indicaremos que no es obligatorio informar fechas.
function getConfig() {
return {
dateRangeRequired: false
};
}
Vamos a meter las manos en la masa, obtendremos la estructura de los datos, los datos y los mapearemos a un formato que data studio sepa gestionar.
function getData(request) {
var dataSchema = prepareSchema(request);
var items = fetchFromApi();
return buildTabularData(items, dataSchema);
}
function prepareSchema(request) {
var dataSchema = [];
var fixedSchema = getSchema().schema;
request.fields.forEach(function(field) {
for (var i = 0; i < fixedSchema.length; i++) {
if (fixedSchema[i].name == field.name) {
dataSchema.push(fixedSchema[i]);
break;
}
}
});
return dataSchema;
}
function getSchema() {
return {
schema: [
{
name: 'id',
label: 'ID',
dataType: 'STRING',
semantics: {
conceptType: 'DIMENSION'
}
},
{
name: 'ticketNumber',
label: 'Ticket',
dataType: 'STRING',
semantics: {
conceptType: 'DIMENSION'
}
},
{
name: 'email',
label: 'Email',
dataType: 'STRING',
semantics: {
conceptType: 'DIMENSION'
}
},
{
name: 'subject',
label: 'subject',
dataType: 'STRING',
semantics: {
conceptType: 'DIMENSION'
}
},
{
name: 'createdTime',
label: 'Created',
dataType: 'STRING',
semantics: {
conceptType: 'DIMENSION'
}
},
{
name: 'status',
label: 'Status',
dataType: 'STRING',
semantics: {
conceptType: 'DIMENSION'
}
},
{
name: 'category',
label: 'Category',
dataType: 'STRING',
semantics: {
conceptType: 'DIMENSION'
}
},
{
name: 'threadCount',
label: 'Threads',
dataType: 'NUMBER',
semantics:{
conceptType: 'METRIC'
}
}
]
};
}
Funciones para la gestión de OAUTH2
Crearemos un segundo fichero en el proyecto llamado oauth.gs, se encargará de realizar la autorización a la cuenta de Zoho.
var oauth = {};
function getOAuthService() {
var scriptProps = PropertiesService.getScriptProperties();
var clientId = '[CLIENT-ID-OBTENIDO-EN-EL-PROXIMO-PASO]';
var clientSecret =’ [CLIENT-SECRET-OBTENIDO-EN-EL-PRÓXIMO-PASO]’;
return OAuth2.createService('ZohoDesk')
.setAuthorizationBaseUrl('https://accounts.zoho.com/oauth/v2/auth')
.setTokenUrl('https://accounts.zoho.eu/oauth/v2/token')
.setGrantType('authorization_code')
.setClientId(clientId)
.setClientSecret(clientSecret)
.setPropertyStore(PropertiesService.getUserProperties())
.setScope('Desk.tickets.READ')
.setCallbackFunction('authCallback');
}
function authCallback(request) {
console.log(request);
var authorized = getOAuthService().handleCallback(request);
if (authorized) {
return HtmlService.createHtmlOutput('Success! You can close this tab.');
} else {
return HtmlService.createHtmlOutput('Denied. You can close this tab');
}
}
function isAuthValid() {
var service = getOAuthService();
if (service == null) {
return false;
}
return service.hasAccess();
}
function resetAuth() {
var service = getOAuthService();
service.reset();
}
function get3PAuthorizationUrls() {
var service = getOAuthService();
if (service == null) {
return '';
}
return service.getAuthorizationUrl();
}
Crear una app en la consola de Zoho
Accederemos a https://api-console.zoho.eu/ , añadiremos una nueva app del tipo Served-based Applications, le daremos un nombre e indicaremos la Authorized Redirect URI con el siguiente valor:
https://script.google.com/macros/d/[Google-apps-script-project-key]/usercallback.
Una vez realizado esto, obtendremos el Client Id y Secret que sustituiremos en el código del paso anterior.
Si necesitas más información, puedes consultar la documentación oficial.
Publica el conector
Antes de publicar el conector, comprueba que tu manifest (archivo appscript.json) es similar al siguiente:
{
"dependencies": {
"libraries": [{
"userSymbol": "OAuth2",
"libraryId": "1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF",
"version": "38"
}]
},
"dataStudio": {
"name": "Zoho Desk Connector",
"logoUrl": "https://www.zohowebstatic.com/sites/default/files/styles/product-home-page/public/Desk-logo.png",
"company": "Acme",
"addonUrl": "Url to GitHub repository",
"supportUrl": "Url to Supportr",
"description": "Retrive basic info from Zoho Desk tickets"
}
}
Tras esto, iremos a Archivo > Gestionar Versiones y crearemos una nueva versión.
Realizado este paso, ya estamos en disposición de desplegar el conector, para ello iremos a Publicar > Desplegar desde el manifiesto.
Hecho esto, crearemos un nuevo despliegue y lo vinculamos a la última versión.
Haremos clic en instalar complemento y tras eso, desplegaremos el despliegue creado para copiar el enlace a datastudio.
Cualquier usuario que siga este enlace, irá a su cuenta de datastudio para dar de alta una fuente de datos configurada con este conector.
Autoriza los accesos a las distintas cuentas
Una vez sigamos el enlace anterior, data studio nos pedirá autorización para:
- Que el conector tenga acceso a la cuenta de datastudio
- Que el conector tenga acceso a la cuenta de zoho desk
Analiza
Ya tienes la información los tickets básica disponible en DataStudio para crear y compartir los informes que necesites.