Tudo começa com a facilidade de receber informações inúteis no dia a dia, isso inclui redes sociais e propagandas no email, na contramão disso estão as informações úteis, no meu caso assuntos relacionados a tecnologia, pode ser artigo, blog, podcast e etc; já sabia da possibilidade de criar algumas automações com a Google, lendo planilhas, enviando emails e mais algumas possiblidades, com isso em mãos, comecei a pensar de que forma poderia usar isso ao meu favor.
Estou fazendo alguns cursos na Alura, e sempre existe algum conteúdo extra nos cursos, e gostaria de ve-los de forma recorrente, mas sem precisar controlar isso agendando ou adiando o email, já que são muitos links, prints a se controlar e isso certamente iria me cansar num certo momento.
Eu já sabia a minha dor, faltava resolve-la! foi então que uma ideia começou a se formar, não nesta ordem exatamente, mas já sabia que o Apps scripts tinha algumas capacidades:
Mas eu ainda precisava saber se o Apps scripts podia fazer:
Para a minha sorte(nesse momento eu já estava enviando os links, prints e tudo mais no meu email) os 3 pontos eram possíveis, UFA!!! Nesse ponto eu também já havia criado a label Rever, os emails já estavam marcados e arquivados.
comecei criando uma nova planilha no drive, com ela vazia, acessei a parte de scripts em: Extensões -> Apps Scripts e comecei a construção do script.
Comentei o código para facilitar.
function readRever(label, column, count) {
// Pega a planilha atual e joga para uma variável
var sheet = SpreadsheetApp.getActiveSheet();
// Faz a leitura da coluna indicada
var AAList = sheet.getRange(`${column}:${column}`).getValues();
// Faz a limpeza da coluna, há alguns dados vazios
// Acredito que possa ter uma saída melhor para esse caso, mas até o momento não achei.
var AAListNew = [];
for(i=0; i < AAList.length; i++){
if(AAList[i][0] != ''){
AAListNew.push(AAList[i][0]);
}
}
// Procura por emails com a label informada
var emails = GmailApp.search(`label:${label}`).reverse();
// Caso o banco de dados esteja cheio, ou seja, não existe um novo email a enviar
// ele apaga todos os IDs de email
if(emails.length === AAListNew.length){
for(i=0; i<AAListNew.length; i++){
console.log(`${column}${i}`);
var cell = sheet.getRange(`${column}${i+1}`);
cell.setValue('');
}
return 0;
}
// Percorre os emails com a label informada
var count1 = 0;
for(i=0; i <= emails.length; i++){
email = emails[i];
try{
var emailID = email.getId();
} catch {break;}
// Verifica se o email não está na caixa de entrada e se não existe no planilha
if((email.isInInbox() === false) & (AAListNew.includes(emailID) === false)){
// Faz o envio do email
email.reply('Ola');
// escreve o ID do email enviado na planilha, para não enviar novamente
var cell = sheet.getRange(`${column}${AAListNew.length+count1+1}`);
cell.setValue(emailID);
count1 += 1;
}
// um controle de quantos emails com a label informada deve ser enviada.
if(count1 >= count) {break};
}
}
function main(){
// Chamando a função, indicando a label, a coluna de controle e
// a quantidade que deve ser enviada.
readRever(label="Rever", column="A", count=2);
}
Depois disso, é necessário criar um acionador, para tal, ainda na tela do Apps Scripts. vá no icone do relógio no menu esquerdo.
Com essa configuração, você irá receber todos os dias as 07:00, 2 emails com a label, nunca repetindo o que já foi enviado. Você pode alterar o acionador conforme a sua necessidade.
Com esse script, ganhei algumas horas do meu dia! e consigo manter o meu conhecimento mais fresco, visto que de tempos e tempos o assunto é refrescado na minha mente. O script foi melhorado algumas vezes, confesso que peguei alguns bugs(gerados e corrigidos por mim mesmo), essa versão é a que uso já faz uns 2 meses, criei outras labels também, então recebo mais alguns emails durante o dia.