Automatización de Gmail: 8 scripts útiles de Google para automatizar su Gmail

Automatización de Gmail: 8 scripts útiles de Google para automatizar su Gmail

Gmail, por sí mismo, ya es un cliente de correo electrónico muy poderoso. Con la ayuda de los filtros, puede configurar la automatización para organizar mejor su bandeja de entrada. Sin embargo, para los usuarios avanzados, la función de filtro no es suficiente en comparación con la escritura de scripts personalizados. Estos ocho scripts de Google pueden automatizar aún más su Gmail.

1. Eliminar automáticamente el correo electrónico después de X número de días

Muy a menudo, después de leer el correo electrónico, los guardamos en nuestra bandeja de entrada, independientemente de lo útiles que sean. Ahora que Google ha puesto un límite de espacio, es posible que desee limpiar su bandeja de entrada y deshacerse de esos correos electrónicos inútiles. La siguiente secuencia de comandos puede verificar el correo electrónico con la etiqueta «Eliminarme» y eliminarlos después de «X» días.

  • Asegúrese de haber iniciado sesión en su cuenta de Google, vaya a Google Scripts y cree un nuevo proyecto.
Automatizar nuevo proyecto de Gmail
  • Pegue el siguiente script y guárdelo. Puede cambiar la cantidad de días (la variable delayDays) que pasan antes de que elimine los mensajes de correo electrónico de su bandeja de entrada.

function auto_delete_mails() {
var label = GmailApp.getUserLabelByName("Delete Me");
if(label == null) {
GmailApp.createLabel('Delete Me');
}
else {
var delayDays = 2; // Enter # of days before messages are moved to trash
var maxDate = new Date();
maxDate.setDate(maxDate.getDate()-delayDays);
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
if (threads[i].getLastMessageDate()<maxdate) {
threads[i].movetotrash();
}
}
}}

  • Cree un nuevo disparador para ejecutar su secuencia de comandos en un horario. Abra «el ícono de programación en el menú del lado izquierdo -> Activadores -> Agregar activador».
Automatice los disparadores de Gmail
  • Personalice la configuración de su disparador para ejecutar el script cada hora (o con la frecuencia que desee), luego desplácese hacia abajo y haga clic en «Guardar».
Automatizar el activador de adición de Gmail

Una vez que se ejecute este script, creará una nueva etiqueta, «Borrarme», en su cuenta de Gmail. Etiquete sus correos electrónicos no deseados con esta etiqueta y se eliminarán después de la cantidad de días especificada en su secuencia de comandos.

2. Archivar todos los correos electrónicos antiguos

Si desea una opción menos peligrosa que eliminar el correo electrónico, puede crear un script para archivar todos sus correos electrónicos antiguos siguiendo los pasos a continuación.

  • Cree un nuevo script de Google con el siguiente código:

function archiveOldEmails() {
// Get all the threads in the inbox
var threads = GmailApp.getInboxThreads();

// Loop through all the threads
for (var i = 0; i < threads.length; i++) {
var thread = threads[i];
var messages = thread.getMessages();

// Loop through all the messages in the thread
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
var age = (new Date() - message.getDate()) / (1000 * 60 * 60 * 24);

// If the message is older than 30 days, archive it
if (age > 30) {
thread.moveToArchive();
}
}
}}

  • Cree un disparador (como se muestra arriba) para ejecutar el script todos los días.

En el momento elegido, el script se ejecutará y moverá los correos electrónicos de su bandeja de entrada al archivo. Estos correos electrónicos archivados seguirán estando disponibles en la sección «Todos los correos».

3. Reciba notificaciones por SMS para correos electrónicos importantes

Este script de Google utiliza la función de SMS de Google Calendar para enviarle un SMS cuando recibe un correo electrónico importante.

  • Cree un nuevo script de Google con el siguiente código:

function Gmail_send_sms(){
var label = GmailApp.getUserLabelByName("Send Text");
if(label == null){
GmailApp.createLabel('Send Text');
}
else{
var threads = label.getThreads();
var now = new Date().getTime();
for (var i = 0; i < threads.length; i++) {
var message = threads[i].getMessages()[0];
var from = message.getFrom();
var subject = message.getSubject();
CalendarApp.createEvent(subject, new Date(now+60000), new Date(now+60000), {location: from}).addSmsReminder(0);
}
label.removeFromThreads(threads);
}}

  • Guárdelo y cree un activador para que se ejecute cada cinco minutos.
  • Cree un nuevo filtro de Gmail que agregue automáticamente la etiqueta «Enviar texto» a los correos electrónicos entrantes que elija. En Gmail, haga clic en el icono Opciones de búsqueda en la barra de búsqueda superior.
Automatizar Gmail 2 Opciones de la barra de búsqueda 1
  • Personalice los criterios para las notificaciones por SMS que lo alertarán de que tiene un correo electrónico importante en su bandeja de entrada, luego haga clic en «Crear filtro».
Automatice los filtros de búsqueda de Gmail 2
  • Marque «Aplicar la etiqueta», elija «Enviar texto» y haga clic en «Crear filtro».
Automatizar el filtro de Gmail 2 Enviar texto

El script escaneará su bandeja de entrada cada cinco minutos. Cuando detecta un correo electrónico con la etiqueta «Enviar texto», inmediatamente creará un evento en Google Calendar, que activará el SMS.

4. Crea un resumen de tus correos electrónicos

En lugar de leer todo su correo electrónico individualmente, puede escribir un script para crear un solo resumen de correo electrónico de su correo electrónico no leído.

  • Cree un nuevo Google Script con el siguiente código:

function createEmailSummary() {
// Search for unread emails
var threads = GmailApp.search("is:unread");
var summary = "Unread Emails:\n";
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
summary += message.getFrom() + ": "+ message.getSubject() + "\n";
}
}

// Search for emails with specific keywords in the subject
var threads = GmailApp.search("subject:(important meeting)");
summary += "\nEmails with keyword 'important meeting' in the subject:\n";
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
summary += message.getFrom() + ": "+ message.getSubject() + "\n";
}
}

// You can add more search criteria here
//. ..

// Send the summary as an email
GmailApp.sendEmail("[email protected]", "Email Summary", summary);}

  • Cambie “ [email protected] ” a su correo electrónico.
  • Cree un nuevo disparador para ejecutar el script todos los días.
Ejemplo de resumen de Automatizar Gmail 4

Cuando se ejecute el script, le enviará un correo electrónico que incluye cuántos de cada tipo de correo electrónico aún no ha leído. El guión anterior es un buen punto de partida: cuenta la cantidad de correos electrónicos con «reunión importante» en el asunto. Puede ajustar la secuencia de comandos para contar los criterios de búsqueda deseados.

5. Guarde el correo electrónico como archivos PDF en Google Drive

Si tiene un correo electrónico que desea archivar en Google Drive, puede usar un script de Google para guardarlo como PDF en su cuenta de Google Drive. La siguiente secuencia de comandos guardará todos los mensajes en un hilo de correo electrónico como un archivo PDF en su Google Drive. Si el correo electrónico tiene archivos adjuntos, creará una carpeta y almacenará los mensajes y archivos adjuntos dentro.

  • Cree un nuevo script de Google con el siguiente código:

function save_Gmail_as_PDF() {
// Get the label "Save As PDF"or create it if it doesn't exist
var label = GmailApp.getUserLabelByName("Save As PDF");
if(label == null){
label = GmailApp.createLabel('Save As PDF');
}

// Get the threads with the label
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
var subject = messages[0].getSubject();
var bodys = [];
// Loop through all messages in thread
for(var j = 0; j < messages.length; j++){
var message = messages[j];
bodys.push({
body: message.getPlainBody(),
from: message.getFrom(),
});
var attachments = message.getAttachments();
var temp_attach = message.getAttachments();
if(temp_attach.length > 0){
for(var k =0; k < temp_attach.length; k++){
attachments.push(temp_attach[k]);
}
}
}
// Create a Google Docs document from the message body
var bodyDoc = DocumentApp.create(subject);
var bodyDocId = bodyDoc.getId();
var bodyDocFile = DriveApp.getFileById(bodyDocId);
var bodyDocBody = bodyDoc.getBody();
bodyDocBody.setText(bodys.map(obj => `From: ${obj.from}\n${obj.body}`).join('\n\n'));
bodyDoc.saveAndClose();

// Convert the Google Docs document to a PDF
var blob = bodyDocFile.getAs('application/pdf');
var pdfFile = DriveApp.createFile(blob);

// If there are attachments
if(attachments.length > 0){
// Create a folder in Drive with the message subject
var folder = DriveApp.createFolder(subject);
for (var j = 0; j < attachments.length; j++) {
folder.createFile(attachments[j]);
}
// Add the PDF file of the message body to the folder
folder.createFile(pdfFile);
}
// Remove the Google Docs document from Google Drive
DriveApp.getFileById(bodyDocId).setTrashed(true);
// Remove the label from the thread
label.removeFromThread(threads[i]);
}
}

  • Guárdelo y establezca un disparador para que se ejecute a intervalos regulares.
Automatizar Gmail 5 Correo electrónico guardado Pdf

Cuando desee guardar un correo electrónico y sus archivos adjuntos en Google Drive, simplemente etiquételo con la etiqueta «Guardar en PDF». El cuerpo de cada correo electrónico y el remitente, en cada hilo, se mostrarán en orden, comenzando por el más antiguo.

6. Enviar automáticamente correos electrónicos de seguimiento

Es posible que no siempre obtenga una respuesta rápida a sus correos electrónicos. Para abordar este problema, puede enviar un correo electrónico de seguimiento para recordar a los destinatarios del correo electrónico. En lugar de escribir cada seguimiento manualmente, ¡puede enviarlos automáticamente con un script!

  • Cree un nuevo script de Google con el siguiente código:

function sendFollowupEmails() {
const startDate = new Date('2023-01-01');

const daysAgo = 3;
var dateInPast = new Date();
dateInPast.setDate(dateInPast.getDate() - daysAgo);

var threads = GmailApp.search("is:sent before:"+ dateInPast.toLocaleDateString() + "after:"+ startDate.toLocaleDateString());

for (var i = 0; i < threads.length; i++) {
var conversation = threads[i];

var foundResponse = false;
// If a sent thread has more than 1 email, we don’t need to followup
// because we either followed up already or they responded.
if (conversation.getMessages().length > 1) {
foundResponse = true;
}

if (!foundResponse) {
var body = "Hi, I just wanted to follow up on my previous email. If I get no reply I will assume you are not interested. \n\nBest regards,\n[Your Name]";
conversation.replyAll(body);
}
}}

  • Personaliza algunas cosas en este script:
  • Cambiar startDatea una época más cercana al presente para no resucitar hilos muy antiguos.
  • Cambie daysAgopara personalizar la antigüedad que desea que tenga un correo electrónico antes de enviar un seguimiento.
  • Cambia [Your Name]a tu nombre.
  • Guárdelo y configure un activador para que se ejecute cada siete días.

Siga enviando correos electrónicos con normalidad y el script se encargará automáticamente de los seguimientos.

7. Etiquete los correos electrónicos según la palabra clave del asunto

Si está inundado de correos electrónicos pero no quiere eliminar la mayoría de ellos, puede usar este script para etiquetarlos y organizarlos según su contenido.

  • Cree un nuevo script de Google con el siguiente código:

function categorizeEmails() {
const emailsToGet = 50;
var keywords = {
"promo": "Promotions",
"offer": "Promotions",
"discount": "Promotions",
"newsletter": "Newsletters",
"action": "Todo",
"required": "Todo",
"shipped": "Orders",
"delivered": "Orders",
"receipt": "Orders",
"invoice": "Orders"
};

var threads = GmailApp.getInboxThreads(0, emailsToGet);

for (var i = 0; i < threads.length; i++) {
var subject = threads[i].getFirstMessageSubject().toLowerCase();
var labels = GmailApp.getUserLabels();
var foundLabel = false;

for (var keyword in keywords) {
if (subject.indexOf(keyword)! == -1) {
for (var j = 0; j < labels.length; j++) {
if (labels[j].getName() === keywords[keyword]) {
threads[i].addLabel(labels[j]);
foundLabel = true;
break;
}
}

if (!foundLabel) {
GmailApp.createLabel(keywords[keyword]);
threads[i].addLabel(GmailApp.getUserLabelByName(keywords[keyword]));
}

break;
}
}
}}

  • Puede personalizar la cantidad de correos electrónicos afectados con la variable emailsToGeto palabras clave y etiquetas con la variable keywords.
  • Guarde el script y configure un disparador para que se ejecute cada pocos minutos u horas.
Automatice los correos electrónicos de Gmail 7 etiquetados por asunto

Esto le permite estar al tanto de las cosas al ver solo los correos electrónicos con una etiqueta específica. Este script funciona bien en la mayoría de sus correos electrónicos, lo que le evita simplemente eliminarlos.

8. Reenviar ciertos correos electrónicos a muchas otras direcciones

Si bien Gmail tiene una forma integrada de reenviar correos electrónicos a otra dirección de correo electrónico, no puede reenviar fácilmente correos electrónicos con ciertos criterios a varias direcciones de correo electrónico, pero este script sí puede.

  • Cree un nuevo script con el siguiente código:

function emailForwarding() {
const emailsToGet = 50;
var criteria = [
{
sender: "[email protected]",
subjectContains: "invoice",
forwardTo: ["[email protected]", "[email protected]"]
},
{
sender: "[email protected]",
subjectContains: "urgent",
forwardTo: ["[email protected]", "[email protected]"]
}
];

var label = GmailApp.getUserLabelByName("Forwarded");
if (!label) {
label = GmailApp.createLabel("Forwarded");
}

var threads = GmailApp.search("is:inbox", 0, emailsToGet);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
console.log('thread id:', threads[i].getId());
for (var j = 0; j < messages.length; j++) {

var message = messages[j];
var sender = message.getFrom();
var subject = message.getSubject().toLowerCase();
console.log('sender', sender, 'subject', subject);
for (var k = 0; k < criteria.length; k++) {
var rule = criteria[k];
if (sender.indexOf(rule.sender)! = -1 && subject.indexOf(rule.subjectContains)! = -1) {
var recipient = rule.forwardTo.join(",");
GmailApp.sendEmail(recipient, subject, message.getPlainBody(), {cc: sender});
threads[i].addLabel(label);
}
}
}
}}

  • Personalice los criterios según sea necesario.
  • Cree un disparador que ejecutará el script cada pocos minutos u horas.

Su Gmail reenviará automáticamente el correo electrónico que coincida con sus criterios a dos o más direcciones de correo electrónico.

Preguntas frecuentes

¿Google Apps Script es de uso gratuito?

Sí, Google Apps Script es de uso gratuito siempre que tenga una cuenta de Gmail. Sin embargo, hay docenas de cuotas y limitaciones en su uso. Google puede cambiarlos en cualquier momento, pero en el momento de escribir este artículo, incluyen casi 40 funciones, como documentos creados, lectura/escritura de correo electrónico, hojas de cálculo creadas y activa el tiempo de ejecución total. Las cuentas gratuitas tienen un límite muy bajo, mientras que Google Workspace tiene un límite mucho más alto.

¿Puedo usar Google Apps Script para acceder a datos de otros servicios?

Sí, Google Apps Script no se limita a trabajar con los servicios de Google. Accede a datos de servicios externos que no son de Google en Internet (por ejemplo, la API de Pokémon ) utilizando clases integradas como UrlFetchApp de esta manera:

var response = UrlFetchApp.fetch("https://pokeapi.co/api/v2/pokemon/ditto");
Logger.log(response.getContentText()); // All details of Ditto would be logged

¿Qué hago si recibo errores en mi Google Apps Script?

Puede depurar su código para identificar y corregir el error. Afortunadamente, Google Apps Script tiene un depurador incorporado que puede usar para solucionar problemas con su código. Para usarlo, simplemente abra el editor de secuencias de comandos y haga clic en Depurar. Desde allí, puede establecer puntos de interrupción, revisar su código e inspeccionar variables para ayudar a identificar cualquier problema.

Crédito de la imagen: Pexels . Todas las capturas de pantalla por Brandon Li.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *