GSP1301

Descripción general
Los complementos pueden ampliar las capacidades de Google Workspace para ayudar a sus usuarios a ser más productivos y mejorar el flujo de trabajo. En este lab, crearás un complemento de Google Workspace que aprovecha el poder de Gemini y Vertex AI para realizar análisis de sentimiento en Gmail. Configurarás los recursos de la nube necesarios (incluidas las APIs de Vertex AI) y un proyecto de Apps Script; después implementarás el complemento.
El complemento te permite identificar y etiquetar automáticamente los correos electrónicos con un tono negativo. Puedes usarlo para priorizar las respuestas del servicio de atención al cliente o identificar rápidamente correos electrónicos potencialmente sensibles.
Al final del lab, tendrás una herramienta funcional que demuestra la aplicación práctica de la IA para mejorar la productividad y la comunicación en un contexto empresarial.
Qué aprenderás
En este lab, realizarás las siguientes actividades:
- Crear un complemento de Google Workspace que amplíe la funcionalidad de Gmail
- Integrar Vertex AI en Google Workspace para usar Gemini y las capacidades de procesamiento de lenguaje natural de Vertex AI en un complemento de Gmail
- Implementar la autenticación OAuth2 para autorizar de forma segura al complemento para que acceda a los datos del usuario
- Aplicar el análisis de sentimiento para analizar de forma programática el contenido de los correos electrónicos y determinar el tono de las emociones
- Utilizar Apps Script para escribir código para interactuar con Gmail, administrar interfaces de usuario y conectarse a APIs externas
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón para abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Tarea 1: Accede a tu entorno de lab
Accediste a la consola de Google Cloud. Ahora, accede a Gmail.
- Haz clic en Abrir Gmail para abrir la página de acceso a Gmail.
Sugerencia: Ordena las pestañas en ventanas separadas para facilitar la visualización.
- Accede a Gmail con el Nombre de usuario, y la Contraseña, .
Nota: Estas credenciales también están en el panel Detalles del lab y se usaron para acceder a la consola de Google Cloud.
- Una vez que estés en Gmail, haz clic en Comenzar y cierra cualquier ventana informativa. Ahora deberías ver tu carpeta Recibidos.
Ya está todo listo para comenzar las actividades del lab.
Tarea 2: Configura tu entorno de Google Cloud
En esta tarea, habilitarás la API de Vertex AI y, luego, configurarás la pantalla de consentimiento de OAuth para definir lo que Google Workspace muestra a los usuarios.
Habilita la API de Vertex AI
-
En el menú de navegación de la consola de Google Cloud, haz clic en APIs y servicios > Biblioteca.
-
Escribe API de Vertex AI en el cuadro Buscar APIs y servicios y, luego, haz clic en API de Vertex AI en los resultados de la búsqueda.
-
Haz clic en Habilitar para habilitar la API.
Se abrirá la página de detalles de la API o el servicio.
Configura la pantalla de consentimiento de OAuth
-
En el panel de la izquierda, haz clic en Pantalla de consentimiento de OAuth.
-
Haz clic en Comenzar.
-
En Información de la aplicación, establece lo siguiente y, luego, haz clic en Siguiente:
-
Nombre de la app: Análisis de sentimiento de Gmail con Gemini y Vertex AI
-
Correo electrónico de asistencia del usuario:
- En Público, selecciona Interno y, luego, haz clic en Siguiente.
- En Información de contacto, establece Direcciones de correo electrónico en y, luego, haz clic en Siguiente.
- Para Finalizar, acepta la Política de Datos del Usuario de los Servicios de las APIs de Google y, luego, haz clic en Continuar.
- Haz clic en Crear.
Haz clic en Revisar mi progreso para verificar el objetivo.
Configurar la pantalla de consentimiento de OAuth
Tarea 3: Configura el proyecto de Apps Script
En esta tarea, crearás y configurarás tu complemento como un proyecto de Apps Script.
Obtén tu número de proyecto de Google Cloud
Para obtener tu número de proyecto de Google Cloud y usarlo cuando crees un proyecto de Apps Script, sigue estos pasos:
-
En el menú de navegación (
), haz clic en Vista general de Cloud > Panel.
-
En la sección Información del proyecto, registra el número de proyecto para usarlo más adelante en este lab.
Crea un proyecto de Apps Script
-
En el panel Recursos para estudiantes, haz clic en este vínculo, script.google.com/, para abrir la página de Apps Script.
-
Haz clic en Nuevo proyecto para crear un proyecto de Apps Script.
-
Asigna un nombre al proyecto:
- Haz clic en "Proyecto sin título" en la parte superior izquierda.
- Asígnale el nombre Análisis de sentimiento de Gmail con Gemini y Vertex AI al proyecto y, luego, haz clic en Cambiar nombre.
-
Haz que el archivo de manifiesto sea visible:
- En el panel de la izquierda, haz clic en Configuración del proyecto (
).
- Selecciona Mostrar el archivo de manifiesto “appsscript.json” en el editor.
-
Cambia tu proyecto de Google Cloud Platform:
- Desplázate hacia abajo hasta la sección Proyecto de Google Cloud Platform (GCP) y haz clic en Cambiar proyecto.
- Establece el número de proyecto de GCP en el número de proyecto que registraste anteriormente.
- Haz clic en Establecer el proyecto.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear un proyecto de Apps Script
Tarea 4: Completa archivos de código
- En el panel de la izquierda, haz clic en Editor (
) para abrir la ventana del editor.
Sigue las instrucciones que se indican a continuación para actualizar tu proyecto con el código de ejemplo.
appsscript.json
- Abre
appsscript.json y reemplaza el contenido del archivo por lo siguiente:
{
"timeZone": "America/Toronto",
"oauthScopes": [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/gmail.addons.execute",
"https://www.googleapis.com/auth/gmail.labels",
"https://www.googleapis.com/auth/gmail.modify",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/userinfo.email"
],
"addOns": {
"common": {
"name": "Sentiment Analysis",
"logoUrl": "https://fonts.gstatic.com/s/i/googlematerialicons/sentiment_extremely_dissatisfied/v6/black-24dp/1x/gm_sentiment_extremely_dissatisfied_black_24dp.png"
},
"gmail": {
"homepageTrigger": {
"runFunction": "onHomepageTrigger",
"enabled": true
}
}
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}
- Haz clic en Guardar
para guardar tu proyecto.
Code.gs
- Abre Code.gs y reemplaza el contenido por lo siguiente:
/*
Copyright 2024-2025 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Reemplaza por el ID de tu proyecto
const PROJECT_ID = '{{{project_0.project_id | Project ID}}}';
// Ubicación de tu modelo de Vertex AI
const VERTEX_AI_LOCATION = 'us-east4';
// ID del modelo que se debe usar para el análisis de sentimiento
const MODEL_ID = '{{{project_0.startup_script.gemini_flash_model_id | model id}}}';
/**
* Se activa cuando se abre el complemento desde la página principal de Gmail.
*
* @param {Object} e - El objeto del evento.
* @returns {Card} - La tarjeta de la página principal.
*/
function onHomepageTrigger(e) {
return buildHomepageCard();
}
/**
* Crea la tarjeta principal que se muestra en la página de inicio de Gmail.
*
* @returns {Card} - La tarjeta de la página principal.
*/
function buildHomepageCard() {
// Genera un nuevo creador de tarjetas
const cardBuilder = CardService.newCardBuilder();
// Crea un encabezado de la tarjeta
const cardHeader = CardService.newCardHeader();
cardHeader.setImageUrl('https://fonts.gstatic.com/s/i/googlematerialicons/mail/v6/black-24dp/1x/gm_mail_black_24dp.png');
cardHeader.setImageStyle(CardService.ImageStyle.CIRCLE);
cardHeader.setTitle("Analyze your Gmail");
// Agrega el encabezado a la tarjeta
cardBuilder.setHeader(cardHeader);
// Crea una sección de la tarjeta
const cardSection = CardService.newCardSection();
// Crea botones para generar correos electrónicos de muestra y analizar sentimiento
const buttonSet = CardService.newButtonSet();
// Crea el botón "Generate sample emails"
const generateButton = createFilledButton('Generate sample emails', 'generateSampleEmails', '#34A853');
buttonSet.addButton(generateButton);
// Crea el botón "Analyze emails"
const analyzeButton = createFilledButton('Analyze emails', 'analyzeSentiment', '#FF0000');
buttonSet.addButton(analyzeButton);
// Agrega el botón a la sección
cardSection.addWidget(buttonSet);
// Agrega la sección a la tarjeta
cardBuilder.addSection(cardSection);
// Crea y devuelve la tarjeta
return cardBuilder.build();
}
/**
* Crea un botón de texto completado con el texto, la función y el color expecificados.
*
* @param {string} text - El texto que se va a mostrar en el botón.
* @param {string} functionName - El nombre de la función que se va a llamar cuando se haga clic en el botón.
* @param {string} color - El color de fondo del botón.
* @returns {TextButton} - El botón de texto creado.
*/
function createFilledButton(text, functionName, color) {
// Crea un nuevo botón de texto
const textButton = CardService.newTextButton();
// Configura el botón de texto
textButton.setText(text);
// Establece la acción que se va a realizar cuando se haga clic en el botón
const action = CardService.newAction();
action.setFunctionName(functionName);
textButton.setOnClickAction(action);
// Establece el estilo del botón como filled
textButton.setTextButtonStyle(CardService.TextButtonStyle.FILLED);
// Establece el color de fondo
textButton.setBackgroundColor(color);
return textButton;
}
/**
* Crea una respuesta de notificación con el texto especificado.
*
* @param {string} notificationText - El texto que se va a mostrar en la notificación.
* @returns {ActionResponse} - La respuesta a la acción que se creó.
*/
function buildNotificationResponse(notificationText) {
// Crea una notificación nueva
const notification = CardService.newNotification();
notification.setText(notificationText);
// Genera un nuevo creador de respuestas a acciones
const actionResponseBuilder = CardService.newActionResponseBuilder();
// Establece la notificación para la respuesta a la acción
actionResponseBuilder.setNotification(notification);
// Crea y devuelve la respuesta a la acción
return actionResponseBuilder.build();
}
/**
* Genera correos electrónicos de muestra para probar el análisis de sentimiento.
*
* @returns {ActionResponse} - Una notificación que confirma la generación del correo electrónico.
*/
function generateSampleEmails() {
// Obtiene la dirección de correo electrónico del usuario actual
const userEmail = Session.getActiveUser().getEmail();
// Define correos electrónicos de muestra
const sampleEmails = [
{
subject: 'Thank you for amazing service!',
body: 'Hi, I really enjoyed working with you. Thank you again!',
name: 'Customer A'
},
{
subject: 'Request for information',
body: 'Hello, I need more information on your recent product launch. Thank you.',
name: 'Customer B'
},
{
subject: 'Complaint!',
body: '',
htmlBody: `Hello, You are late in delivery, again.
Please contact me ASAP before I cancel our subscription.
`,
name: 'Customer C'
}
];
// Envía cada correo eletrónico de muestra
for (const email of sampleEmails) {
GmailApp.sendEmail(userEmail, email.subject, email.body, {
name: email.name,
htmlBody: email.htmlBody
});
}
// Devuelve una notificación
return buildNotificationResponse("Successfully generated sample emails");
}
/**
* Analiza el sentimiento de los primeros 10 hilos de Recibidos
* y los etiqueta según corresponda.
*
* @returns {ActionResponse} - Una notificación que confirma que se completó la tarea.
*/
function analyzeSentiment() {
// Analiza y etiqueta correos electrónicos
analyzeAndLabelEmailSentiment();
// Devuelve una notificación
return buildNotificationResponse("Successfully completed sentiment analysis");
}
/**
* Analiza el sentimiento de los correos electrónicos y aplica las etiquetas apropiadas.
*/
function analyzeAndLabelEmailSentiment() {
// Define nombres de etiquetas
const labelNames = ["HAPPY TONE 😊", "NEUTRAL TONE 😐", "UPSET TONE 😡"];
// Obtiene o crea etiquetas para cada sentimiento
const positiveLabel = GmailApp.getUserLabelByName(labelNames[0]) || GmailApp.createLabel(labelNames[0]);
const neutralLabel = GmailApp.getUserLabelByName(labelNames[1]) || GmailApp.createLabel(labelNames[1]);
const negativeLabel = GmailApp.getUserLabelByName(labelNames[2]) || GmailApp.createLabel(labelNames[2]);
// Obtiene los primeros 10 hilos de Recibidos
const threads = GmailApp.getInboxThreads(0, 10);
// Itera en cada hilo
for (const thread of threads) {
// Itera en cada mensaje del hilo
const messages = thread.getMessages();
for (const message of messages) {
// Obtiene el cuerpo del texto sin formato del mensaje
const emailBody = message.getPlainBody();
// Analiza el sentimiento del cuerpo de correo electrónico
const sentiment = processSentiment(emailBody);
// Aplica la etiqueta correspondiente en función del sentimiento
if (sentiment === 'positive') {
thread.addLabel(positiveLabel);
} else if (sentiment === 'neutral') {
thread.addLabel(neutralLabel);
} else if (sentiment === 'negative') {
thread.addLabel(negativeLabel);
}
}
}
}
/**
* Envía el texto del correo electrónico a Vertex AI para realizar el análisis de sentimiento.
*
* @param {string} emailText - El texto del correo electrónico para analizar.
* @returns {string} - El sentimiento del correo electrónico ('positive', 'negative', or 'neutral').
*/
function processSentiment(emailText) {
// Crea la URL de extremo de API
const apiUrl = `https://${VERTEX_AI_LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${VERTEX_AI_LOCATION}/publishers/google/models/${MODEL_ID}:generateContent`;
// Prepara la carga útil de la solicitud
const payload = {
contents: [
{
role: "user",
parts: [
{
text: `Analiza el sentimiento del siguiente mensaje: ${emailText}`
}
]
}
],
generationConfig: {
temperature: 0.9,
maxOutputTokens: 1024,
responseMimeType: "application/json",
// Formato de respuesta esperado para un análisis más simple.
responseSchema: {
type: "object",
properties: {
response: {
type: "string",
enum: ["positive", "negative", "neutral"]
}
}
}
}
};
// Prepara las opciones de solicitud
const options = {
method: 'POST',
headers: {
'Authorization': `Bearer ${ScriptApp.getOAuthToken()}`
},
contentType: 'application/json',
muteHttpExceptions: true, // Set to true to inspect the error response
payload: JSON.stringify(payload)
};
// Realiza la solicitud a la API
const response = UrlFetchApp.fetch(apiUrl, options);
// Analiza la respuesta. There are two levels of JSON responses to parse.
const parsedResponse = JSON.parse(response.getContentText());
const sentimentResponse = JSON.parse(parsedResponse.candidates[0].content.parts[0].text).response;
// Devuelve el sentimiento
return sentimentResponse;
}
Haz clic en Guardar
para guardar tu proyecto.
Tarea 5: Implementa el complemento
En esta tarea, implementarás el complemento y, luego, verificarás la instalación.
Implementa el complemento
-
En la barra de título, haz clic en Implementar > Implementaciones de prueba.
-
Confirma que Gmail aparezca en la lista de Aplicaciones y haz clic en Instalar.
-
Haz clic en Listo.
Verifica la instalación
- Actualiza la pestaña de Gmail. Deberías ver un ícono
en el panel de la derecha.
Solución de problemas
Si no ves tu complemento en la lista, actualiza la ventana del navegador.
Si aún no aparece, vuelve al proyecto de Apps Script, desinstala el complemento desde la ventana Implementaciones de prueba y, luego, vuelve a instalarlo.
Tarea 6: Ejecuta el complemento
¡Está todo listo para ejecutar el complemento! En esta tarea, abrirás y autorizarás el complemento, y luego generarás correos electrónicos para verificar que el análisis funcione.
-
En Gmail, en el panel de la derecha, haz clic en Sentiment Analysis (
).
-
Cuando se abra el panel lateral, haz clic en Otorgar permiso.
Se abrirá una pantalla de consentimiento. Selecciona tu correo electrónico () y haz clic en las pantallas para permitir el acceso.
Una vez que otorgues el consentimiento, se abrirá el panel Análisis de sentimiento a la derecha.
- En el panel Análisis de sentimiento, haz clic en Generar correos electrónicos de muestra (Generate sample emails).
El complemento ahora genera correos electrónicos de muestra para probar el análisis. Se mostrará un mensaje cuando se complete la generación, lo que solo tarda unos segundos.
-
Espera a que los correos electrónicos de muestra aparezcan en tu bandeja de entrada. Es posible que tengas que actualizarla para ver los nuevos correos electrónicos.
-
Una vez que los correos electrónicos de muestra estén en tu bandeja de entrada, en el panel Análisis de sentimiento, haz clic en Analizar correos electrónicos.
En la parte inferior de la pantalla del complemento, se muestra un mensaje que indica que se completó el análisis.
Nota: El análisis de los correos electrónicos puede tardar un tiempo. Puedes actualizar la página para verificar el estado de las etiquetas aplicadas.
El complemento analiza tus correos electrónicos y aplica la etiqueta adecuada ("HAPPY TONE 😊", "UPSET TONE 😡" o "NEUTRAL TONE 😐") a los mensajes de tu bandeja de entrada.
Es posible que debas actualizar Gmail para ver las etiquetas aplicadas.
- Continúa experimentando
Puedes probar el complemento enviando correos electrónicos con diferentes sentimientos (positivo, negativo, neutro) desde tu cuenta de Gmail del lab a otra cuenta de Gmail del lab. No se permiten correos electrónicos externos. Observa cómo el complemento analiza y etiqueta cada correo electrónico.
NOTA: El código solo extrae los últimos 10 correos electrónicos de tu bandeja de entrada, pero puedes cambiar ese valor.
-
Cierra el complemento:
Cuando termines de usar el complemento, puedes cerrarlo haciendo clic en la X en la esquina superior derecha del panel lateral.
Haz clic en Revisar mi progreso para verificar el objetivo.
Aplicar análisis de sentimiento
¡Felicitaciones!
Completaste correctamente el lab Análisis de sentimiento de Gmail con Gemini y Vertex AI.
En este lab, aprendiste a realizar las siguientes tareas:
-
Crea un complemento de Google Workspace: Desarrolla una herramienta práctica que amplíe la funcionalidad de Gmail.
-
Integra Vertex AI en Google Workspace: Usa las capacidades de procesamiento de lenguaje natural de Gemini y Vertex AI en un complemento de Gmail
-
Implementa la autenticación OAuth2: Autoriza de forma segura al complemento para que acceda a los datos del usuario.
-
Aplica análisis de sentimiento Analiza de forma programática el contenido de los correos electrónicos para determinar el tono de las emociones.
-
Utiliza Apps Script: Escribe código para interactuar con Gmail, administrar interfaces de usuario y conectarte a APIs externas.
Ahora tienes un complemento de Gmail funcional que puede ayudarte a priorizar correos electrónicos y mejorar tu flujo de trabajo. No dudes en experimentar más con el complemento; puedes personalizar el análisis de sentimiento o agregar nuevas funciones.
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Actualización más reciente del manual: 28 de noviembre de 2025
Prueba más reciente del lab: 28 de noviembre de 2025
Copyright 2025 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.