Mais uma vez, retorno para discutir a otimização da produtividade e a automação dentro do Gmail. Desta vez, vamos nos aprofundar no lado técnico, empregando o Google Apps Script para aprimorar sua experiência com o Gmail.
O Gmail oferece diversas configurações nativas que podem ser ajustadas para automatizar tarefas e impulsionar a produtividade. No entanto, existem limitações e várias funcionalidades carecem de opções de personalização mais abrangentes. É nesse ponto que você pode assumir o controle, utilizando o Google Apps Script para personalizar suas necessidades.
Com essa ferramenta, você pode desenvolver scripts customizados que executam ações que o Gmail não consegue realizar de forma nativa. Além disso, você pode configurar acionadores baseados em tempo para automatizar a execução desses scripts.
Para dar início, preparei uma lista de scripts úteis que, sem dúvida, elevarão sua experiência com o Gmail. Cada script foi projetado para resolver automaticamente desafios comuns, como a eliminação de duplicatas ou a criação automática de pastas. Por isso, alguns scripts podem ser um pouco mais extensos do que o necessário.
Criando um Script no Google Apps Script
Antes de implementar e personalizar esses scripts, é essencial saber como criar e executar um script no Google Apps Script. Siga os passos abaixo:
Abra o Google Apps Script e clique no botão “Novo projeto” localizado no painel esquerdo.
Nessa etapa, remova todo o código preexistente e copie/cole o script que será fornecido. Em seguida, clique no botão “Salvar” para registrar o script.
Para executar o script, clique no botão “Executar” ao lado de “Salvar”. Será solicitado que você conceda permissões e receberá um aviso de que o script não foi verificado. Ignore o aviso e conceda as permissões, pois o script é para uso pessoal e não foi revisado pelo Google.
Feito isso, o script será executado, e você poderá verificar no registro de execução se foi bem-sucedido ou não.
Configurando um Acionador
Diversos scripts funcionam melhor quando são acionados automaticamente. O Google Apps Script também oferece uma seção para criar acionadores baseados em tempo para cada script, garantindo sua execução automática.
No entanto, antes de abordar a criação de um acionador, é importante saber que o Google Apps Script possui cotas limitadas, que variam conforme seu plano do Google Workspace. Caso execute muitos scripts simultaneamente e com muita frequência, você poderá atingir a cota diária, interrompendo o serviço temporariamente.
Embora haja a opção de executar scripts a cada minuto, isso consumiria rapidamente sua cota diária. Certifique-se de definir um intervalo que execute a tarefa de forma confiável.
Para criar um acionador, clique em “Acionadores” no painel esquerdo com o script aberto e, em seguida, clique no botão “Adicionar acionador”.
Aqui você pode escolher um intervalo de tempo em minutos ou meses, além de sua frequência. Também é possível selecionar uma data e hora específicas para executar o script uma única vez. Após selecionar todas as opções, clique em “Salvar” para criar o acionador.
Se você não concedeu permissão para executar o script, como mencionei anteriormente, será solicitado que você faça isso antes de criar o acionador.
Com base em suas configurações, o acionador será executado continuamente. Caso ocorra algum problema, você será notificado juntamente com a mensagem de erro correspondente.
Agora, vamos explorar exemplos práticos de como usar o Google Apps Script para automatizar suas tarefas no Gmail.
Enviar E-mails Recorrentes
function sendRecurringEmail() { var recipient = "[email protected]"; var subject = "Seu assunto aqui"; var message = "Sua mensagem personalizada aqui"; GmailApp.sendEmail(recipient, subject, message); }
O Gmail permite agendar e-mails, mas não e-mails recorrentes. Se você precisa lembrar alguém de algo ou garantir que um e-mail não seja esquecido, este script simples envia uma mensagem para o endereço especificado com o assunto e a mensagem definidos por você. Em seguida, configure um acionador recorrente na seção “Acionadores”.
No script, ajuste os campos “destinatário”, “assunto” e “mensagem” com os detalhes relevantes. Certifique-se de que as aspas em volta do texto de exemplo sejam mantidas. Por exemplo, o assunto deve ser:
var subject = "Lembrete Importante";
Como os acionadores têm um limite máximo de um mês, as mensagens recorrentes devem ser enviadas mensalmente. Infelizmente, isso impede o uso para enviar mensagens em ocasiões anuais.
Filtrar E-mails com Links para um Marcador
function processUnreadEmailsWithLinks() { var labelName="Emails com Links"; var label = GmailApp.getUserLabelByName(labelName); if (!label) { label = GmailApp.createLabel(labelName); } var threads = GmailApp.search('is:unread'); 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]; var body = message.getBody(); if (bodyContainsLinks(body)) { label.addToThread(threads[i]); } } } } function bodyContainsLinks(body) { var regex = /https?:\/\/[^\s<>"']+/g; return regex.test(body); }
E-mails que contêm links no corpo costumam ter maior importância. Seja para receber relatórios de colegas ou newsletters com recursos específicos, categorizar e-mails com links pode ser muito útil.
Este script analisa todos os e-mails não lidos na sua conta do Gmail e direciona aqueles com links para um novo marcador chamado “E-mails com Links”. Por padrão, o script busca em todo o Gmail, mas você pode restringir a pesquisa editando a linha var threads = GmailApp.search(‘is:unread’); Veja algumas opções:
Buscar apenas na Caixa de Entrada: var threads = GmailApp.search(‘in:inbox is:unread’);
Buscar em outros marcadores: var threads = GmailApp.search(‘in:inbox is:unread OR in:promotions is:unread OR in:important is:unread’);
Buscar todos os e-mails lidos/não lidos na Caixa de Entrada: var threads = GmailApp.search(‘in:inbox’);
Buscar e-mails de um remetente específico: var threads = GmailApp.search(‘from:[email protected]‘);
Esses exemplos dão uma ideia de como personalizar o script para refinar a busca de e-mails com links. Acredito que configurar um acionador diário seja suficiente para esse tipo de organização.
Excluir Automaticamente E-mails Antigos
function deleteOldEmails() { var threads = GmailApp.search('older_than:30d'); for (var i = 0; i < threads.length; i++) { threads[i].moveToTrash(); } }
Se você não precisa manter e-mails antigos, utilize este script para excluí-los após um período específico. O script procura e-mails no Gmail com mais de 30 dias e os move para a lixeira. Altere a parte ‘older_than:30d’ para definir o tempo desejado, como ‘older_than:180d’.
Para excluir e-mails de um marcador específico, adapte a linha Gmail.App.search para incluir o marcador. Exemplo:
var threads = GmailApp.search(‘in:caixa de entrada older_than:30d’);
Automatize o processo criando um acionador que execute o script automaticamente a cada poucos dias. Dependendo da quantidade de e-mails antigos a serem excluídos, um acionador semanal ou mensal pode ser suficiente.
Salvar Todos os Endereços de E-mail no Planilhas Google
function getEmailAddresses() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheetName = "Email Addresses"; var sheet = ss.getSheetByName(sheetName); if (!sheet) { sheet = ss.insertSheet(sheetName); sheet.appendRow(["Email Address"]); } var threads = GmailApp.getInboxThreads(); var emailAddresses = []; var existingData = sheet.getDataRange().getValues(); if (existingData.length > 1) { var existingEmailAddresses = existingData.slice(1).flat(); } else { var existingEmailAddresses = []; } for (var i = 0; i < threads.length; i++) { var messages = threads[i].getMessages(); for (var j = 0; j < messages.length; j++) { var emailAddress = messages[j].getFrom(); if (emailAddresses.indexOf(emailAddress) === -1 && existingEmailAddresses.indexOf(emailAddress) === -1) { emailAddresses.push(emailAddress); } } } for (var k = 0; k < emailAddresses.length; k++) { sheet.appendRow([emailAddresses[k]]); } }
Este script pesquisa todos os e-mails no Gmail, extrai o nome e o endereço de e-mail dos remetentes/destinatários e salva as informações no Planilhas Google. Essa funcionalidade pode ser usada para criar listas de e-mail para marketing ou manter um registro de todas as suas interações.
A criação deste script é diferente dos anteriores, pois você deve abrir o Google Apps Script dentro do Planilhas Google para que ele possa identificar a planilha. Isso só é necessário na primeira vez. Veja como:
Abra uma nova planilha no Planilhas Google. Clique em “Extensões” no menu superior e selecione “Apps Script”. Isso abrirá o Google Apps Script, e você poderá adicionar o script e executá-lo como demonstrado anteriormente.
O script criará uma nova planilha com o nome “Endereços de E-mail” com o nome e endereço de e-mail de cada remetente na mesma célula. Você não precisará abrir a planilha novamente para cada execução do acionador. Novos endereços de e-mail serão adicionados ao final, sem duplicações.
Dependendo da frequência com que você recebe e-mails de novos remetentes, um acionador diário ou semanal deve ser suficiente.
Salvar Anexos de E-mail no Google Drive Automaticamente
function onNewEmail(e) { var threads = GmailApp.getInboxThreads(0, 1); var messages = threads[0].getMessages(); var folderName = "Email Attachments"; var folderIterator = DriveApp.getFoldersByName(folderName); var folder; if (folderIterator.hasNext()) { folder = folderIterator.next(); } else { folder = DriveApp.createFolder(folderName); } for (var i = 0; i < messages.length; i++) { var message = messages[i]; if (message.getAttachments().length > 0) { var attachments = message.getAttachments(); for (var j = 0; j < attachments.length; j++) { var attachment = attachments[j]; var attachmentHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, attachment.getBytes())); var existingFiles = folder.getFiles(); var isDuplicate = false; while (existingFiles.hasNext()) { var existingFile = existingFiles.next(); var existingFileHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, existingFile.getBlob().getBytes())); if (attachmentHash === existingFileHash) { isDuplicate = true; break; } } if (!isDuplicate) { folder.createFile(attachment); } } } } }
Este script é muito útil para quem recebe anexos importantes por e-mail com frequência. Ele não apenas preserva os anexos, mas também os agrupa em uma interface organizada para melhor gerenciamento.
Este script é programado para funcionar somente com novos e-mails que você receberá após a primeira execução. Ele cria automaticamente uma pasta chamada “Anexos de E-mail” no Google Drive, caso ela não exista. Para evitar duplicações de arquivos com nomes idênticos, o script verifica um valor de hash MD5 único baseado no conteúdo do arquivo.
Nem todos desejam salvar apenas anexos de novos e-mails, e pode haver necessidade de salvar anexos de e-mails já recebidos. Para isso, abaixo está um script modificado que segue as mesmas regras, mas salva os anexos de e-mails já existentes. No entanto, levará algum tempo para salvar todos os arquivos, dependendo da quantidade de anexos que você possui.
function saveAllAttachmentsToDrive() { var folderName = "Email Attachments"; var folderIterator = DriveApp.getFoldersByName(folderName); var folder; if (folderIterator.hasNext()) { folder = folderIterator.next(); } else { folder = DriveApp.createFolder(folderName); } var threads = GmailApp.getInboxThreads(); 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]; var attachments = message.getAttachments(); for (var k = 0; k < attachments.length; k++) { var attachment = attachments[k]; var attachmentHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, attachment.getBytes())); var existingFiles = folder.getFiles(); var isDuplicate = false; while (existingFiles.hasNext()) { var existingFile = existingFiles.next(); var existingFileHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, existingFile.getBlob().getBytes())); if (attachmentHash === existingFileHash) { isDuplicate = true; break; } } if (!isDuplicate) { folder.createFile(attachment); } } } } }
Obtenha Citações Inspiradoras Diárias
function sendDailyQuoteEmail() { var apiKey = 'YOUR_API_KEY'; var endpoint="https://quotes.rest/qod"; var response = UrlFetchApp.fetch(endpoint, { headers: { 'X-TheySaidSo-Api-Secret': apiKey } }); var data = JSON.parse(response.getContentText()); var quoteContents = data.contents.quotes[0]; var quote = quoteContents.quote; var author = quoteContents.author; var recipient="[email protected]"; var subject="Citação Diária"; var message = `Aqui está a sua citação diária:\n\n"${quote}"\n\n- ${author}`; GmailApp.sendEmail(recipient, subject, message); }
Embora não seja diretamente útil para o seu trabalho ou gerenciamento de e-mails, este script é ótimo para se motivar diariamente na sua caixa de entrada. Ao configurá-lo corretamente, o script utilizará a API They Said So para enviar diariamente citações inspiradoras para você via e-mail. Veja como configurá-lo:
Primeiro, você precisa de uma chave de API pessoal da They Said So. Na página da API They Said So, você pode criar uma conta gratuita para obter a chave. A versão gratuita oferece 5 chamadas, o suficiente para um uso diário.
Após obter sua chave, substitua a parte “YOUR_API_KEY” pela sua chave real. Altere também a parte [email protected] com seu endereço de e-mail ou de outra pessoa se quiser enviá-las para outra pessoa.
Agora, configure um acionador para ser executado diariamente. Executá-lo com mais frequência apenas reenviará a citação do dia atual.
Considerações Finais
Personalmente, não tive problemas para executar todos esses scripts em conjunto sem atingir a cota diária. Tenho certeza de que você também terá bons resultados, desde que não use acionadores muito agressivos. Verifique periodicamente os scripts para garantir que não ocorram erros.