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.
*/
// Replace with your project ID
const PROJECT_ID = '{{{project_0.project_id | Project ID}}}';
// Location for your Vertex AI model
const VERTEX_AI_LOCATION = 'us-east4';
// Model ID to use for sentiment analysis
const MODEL_ID = 'gemini-2.0-flash';
/**
* Triggered when the add-on is opened from the Gmail homepage.
*
* @param {Object} e - The event object.
* @returns {Card} - The homepage card.
*/
function onHomepageTrigger(e) {
return buildHomepageCard();
}
/**
* Builds the main card displayed on the Gmail homepage.
*
* @returns {Card} - The homepage card.
*/
function buildHomepageCard() {
// Create a new card builder
const cardBuilder = CardService.newCardBuilder();
// Create a card header
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");
// Add the header to the card
cardBuilder.setHeader(cardHeader);
// Create a card section
const cardSection = CardService.newCardSection();
// Create buttons for generating sample emails and analyzing sentiment
const buttonSet = CardService.newButtonSet();
// Create "Generate sample emails" button
const generateButton = createFilledButton('Generate sample emails', 'generateSampleEmails', '#34A853');
buttonSet.addButton(generateButton);
// Create "Analyze emails" button
const analyzeButton = createFilledButton('Analyze emails', 'analyzeSentiment', '#FF0000');
buttonSet.addButton(analyzeButton);
// Add the button set to the section
cardSection.addWidget(buttonSet);
// Add the section to the card
cardBuilder.addSection(cardSection);
// Build and return the card
return cardBuilder.build();
}
/**
* Creates a filled text button with the specified text, function, and color.
*
* @param {string} text - The text to display on the button.
* @param {string} functionName - The name of the function to call when the button is clicked.
* @param {string} color - The background color of the button.
* @returns {TextButton} - The created text button.
*/
function createFilledButton(text, functionName, color) {
// Create a new text button
const textButton = CardService.newTextButton();
// Set the button text
textButton.setText(text);
// Set the action to perform when the button is clicked
const action = CardService.newAction();
action.setFunctionName(functionName);
textButton.setOnClickAction(action);
// Set the button style to filled
textButton.setTextButtonStyle(CardService.TextButtonStyle.FILLED);
// Set the background color
textButton.setBackgroundColor(color);
return textButton;
}
/**
* Creates a notification response with the specified text.
*
* @param {string} notificationText - The text to display in the notification.
* @returns {ActionResponse} - The created action response.
*/
function buildNotificationResponse(notificationText) {
// Create a new notification
const notification = CardService.newNotification();
notification.setText(notificationText);
// Create a new action response builder
const actionResponseBuilder = CardService.newActionResponseBuilder();
// Set the notification for the action response
actionResponseBuilder.setNotification(notification);
// Build and return the action response
return actionResponseBuilder.build();
}
/**
* Generates sample emails for testing the sentiment analysis.
*
* @returns {ActionResponse} - A notification confirming email generation.
*/
function generateSampleEmails() {
// Get the current user's email address
const userEmail = Session.getActiveUser().getEmail();
// Define sample emails
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'
}
];
// Send each sample email
for (const email of sampleEmails) {
GmailApp.sendEmail(userEmail, email.subject, email.body, {
name: email.name,
htmlBody: email.htmlBody
});
}
// Return a notification
return buildNotificationResponse("Successfully generated sample emails");
}
/**
* Analyzes the sentiment of the first 10 threads in the inbox
* and labels them accordingly.
*
* @returns {ActionResponse} - A notification confirming completion.
*/
function analyzeSentiment() {
// Analyze and label emails
analyzeAndLabelEmailSentiment();
// Return a notification
return buildNotificationResponse("Successfully completed sentiment analysis");
}
/**
* Analyzes the sentiment of emails and applies appropriate labels.
*/
function analyzeAndLabelEmailSentiment() {
// Define label names
const labelNames = ["HAPPY TONE 😊", "NEUTRAL TONE 😐", "UPSET TONE 😡"];
// Get or create labels for each sentiment
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]);
// Get the first 10 threads in the inbox
const threads = GmailApp.getInboxThreads(0, 10);
// Iterate through each thread
for (const thread of threads) {
// Iterate through each message in the thread
const messages = thread.getMessages();
for (const message of messages) {
// Get the plain text body of the message
const emailBody = message.getPlainBody();
// Analyze the sentiment of the email body
const sentiment = processSentiment(emailBody);
// Apply the appropriate label based on the sentiment
if (sentiment === 'positive') {
thread.addLabel(positiveLabel);
} else if (sentiment === 'neutral') {
thread.addLabel(neutralLabel);
} else if (sentiment === 'negative') {
thread.addLabel(negativeLabel);
}
}
}
}
/**
* Sends the email text to Vertex AI for sentiment analysis.
*
* @param {string} emailText - The text of the email to analyze.
* @returns {string} - The sentiment of the email ('positive', 'negative', or 'neutral').
*/
function processSentiment(emailText) {
// Construct the API endpoint URL
const apiUrl = `https://${VERTEX_AI_LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${VERTEX_AI_LOCATION}/publishers/google/models/${MODEL_ID}:generateContent`;
// Prepare the request payload
const payload = {
contents: [
{
role: "user",
parts: [
{
text: `Analyze the sentiment of the following message: ${emailText}`
}
]
}
],
generationConfig: {
temperature: 0.9,
maxOutputTokens: 1024,
responseMimeType: "application/json",
// Expected response format for simpler parsing.
responseSchema: {
type: "object",
properties: {
response: {
type: "string",
enum: ["positive", "negative", "neutral"]
}
}
}
}
};
// Prepare the request options
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)
};
// Make the API request
const response = UrlFetchApp.fetch(apiUrl, options);
// Parse the response. 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;
// Return the sentiment
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 Análisis de opiniones (
).
-
Cuando se abra el panel lateral, haz clic en Autorizar acceso para otorgar permiso al complemento para ejecutarse.
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 opiniones a la derecha.
- En el panel Análisis de opiniones, 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 opiniones, haz clic en Analizar correos electrónicos (Analyze emails).
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.
Última actualización del manual: 25 de marzo de 2025
Prueba más reciente del lab: 25 de febrero 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.