Por ejemplo, supongamos que intentas crear una solución para tu organización de ventas. La organización de ventas se divide en varias regiones, y cada una tiene su propio gerente regional. El conjunto de datos de ventas en BigQuery tiene el importe de ventas por región y por fecha.
La solución propuesta tendrá un solo panel en el que los gerentes regionales podrán ver los datos de ventas solo de sus propias regiones.
Requisitos
- Los usuarios que vean el panel accederán con una Cuenta de Google.
- Hay una asignación disponible entre el correo electrónico del usuario y los datos o las filas a los que tiene acceso.
- Se usará una cuenta de servicio para acceder a los datos de BigQuery. Por lo tanto, la facturación se centralizará y administrará a través del proveedor del panel.
Limitaciones
- El panel requiere una autorización única de cada usuario la primera vez que lo ve.
- Los usuarios no pueden editar el panel ni compartirlo con otras personas.
- Si eres cliente de Workspace y tu administrador inhabilitó el uso compartido de archivos de Drive con “Cualquier persona que tenga el vínculo”, quita la restricción de uso compartido o desarrolla la solución en una cuenta de Gmail.com.
Solución
Completa todos los pasos que se indican a continuación para implementar la solución.
Crea un nuevo conector de comunidad
Revisa Cómo funcionan los conectores de la comunidad y completa el codelab de Community Connector para comenzar. Usa la herramienta para desarrolladores para crear conectores y lograr un proceso de desarrollo más rápido y sencillo.
Escribe el código del conector
getAuthType()debería devolverNONE.getConfig()debería devolver una configuración vacía.- Opcional: Si necesitas entradas específicas para configurar el panel, puedes solicitar la entrada del usuario aquí.
getSchema()debería devolver el esquema de tu consulta.- Opcional: Puedes agregar campos y cálculos personalizados en la consulta SQL o con campos calculados como parte del esquema.
getData()se completará en un paso posterior.
Actualiza el manifiesto
Consulta la referencia del manifiesto y completa el manifiesto con toda la información requerida, incluida la siguiente:
- Establece
dataStudio.forceViewersCredentialsentrue. - Establece
dataStudio.advancedServices.dataentrue. - Para
oauthScopes, agregahttps://www.googleapis.com/auth/userinfo.emailyhttps://www.googleapis.com/auth/script.external_request. Consulta Alcances de autorización para Apps Script para obtener más información.- Condicional: Agrega todos los permisos pertinentes para los servicios que se usan en el conector.
El manifiesto debería verse de la siguiente manera:
{
...
"dataStudio": {
"forceViewersCredentials": true,
"advancedServices": {
"data": true
},
...
}
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/userinfo.email"
],
...
}
Implementa una cuenta de servicio
- Crea una cuenta de servicio en tu proyecto de Google Cloud. Este será tu proyecto de facturación.
- Asegúrate de que esta cuenta de servicio tenga acceso a BigQuery en el proyecto de Cloud.
- Roles de Identity and Access Management (IAM) obligatorios:
BigQuery Data Viewer,BigQuery Job User
- Roles de Identity and Access Management (IAM) obligatorios:
- Descarga el archivo JSON para obtener las claves de las cuentas de servicio. Almacena las claves en las propiedades de la secuencia de comandos de tu proyecto del conector.
- Incluye la biblioteca OAuth2 para Apps Script en tu proyecto de Apps Script.
- Implementa el código de OAuth2 requerido para la cuenta de servicio:
var SERVICE_ACCOUNT_CREDS = 'SERVICE_ACCOUNT_CREDS'; var SERVICE_ACCOUNT_KEY = 'private_key'; var SERVICE_ACCOUNT_EMAIL = 'client_email'; var BILLING_PROJECT_ID = 'project_id'; /** * Copy the entire credentials JSON file from creating a service account in GCP. */ function getServiceAccountCreds() { return JSON.parse(scriptProperties.getProperty(SERVICE_ACCOUNT_CREDS)); } function getOauthService() { var serviceAccountCreds = getServiceAccountCreds(); var serviceAccountKey = serviceAccountCreds[SERVICE_ACCOUNT_KEY]; var serviceAccountEmail = serviceAccountCreds[SERVICE_ACCOUNT_EMAIL]; return OAuth2.createService('RowLevelSecurity') .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth') .setTokenUrl('https://accounts.google.com/o/oauth2/token') .setPrivateKey(serviceAccountKey) .setIssuer(serviceAccountEmail) .setPropertyStore(scriptProperties) .setCache(CacheService.getScriptCache()) .setScope(['https://www.googleapis.com/auth/bigquery.readonly']); }
Implementa getData().
- Construye tu consulta de BigQuery.
- Con el correo electrónico, busca la asignación entre el correo electrónico y los datos.
- Usa las cláusulas JOIN o WHERE para filtrar los datos.
- Obtén el correo electrónico del usuario efectivo (referencia de identidad del usuario).
- Usa los [Servicios avanzados de Data Studio] para devolver la configuración de la consulta desde getData.
- Pasa la consulta construida, el proyecto de facturación y el token de OAuth de la cuenta de servicio.
- Condicional: Si recibes la entrada del usuario a través del conector
getConfig, debes incorporar la entrada como parámetros de BigQuery.
Crea el panel
- Comprende cómo funcionan las implementaciones y las versiones para los conectores.
- Crea una implementación de producción para el conector.
- Usa la implementación de producción para crear una fuente de datos y un informe nuevo en Data Studio.
- Agrega todas las tablas y los gráficos del informe.
- El panel ya está listo para compartirse con los usuarios.
Haz que el panel esté disponible para los usuarios
- Comparte la secuencia de comandos del conector con los usuarios seleccionados o con “Cualquier persona que tenga el vínculo”.
- Comparte el panel con los usuarios seleccionados o con “Cualquier persona que tenga el vínculo”.
- Opcional: Usa un servicio de acortador de URLs para crear un vínculo corto para la URL del panel. Comparte la URL acortada con tus usuarios. Esto ayuda a reemplazar la URL del panel más adelante si es necesario.
- Opcional: Mide el uso del panel de control configurando Google Analytics para tu informe.