2017/05/19

Como importar emails do Gmail para uma folha de cálculo no Google Spreadsheets


Para quem ainda usa o email como ferramenta principal, por vezes pode ser vantajoso exportar alguns desses emails para uma folha de cálculo para mais fácil processamento; e felizmente isso é algo relativamente simples de se fazer.

A forma mais fácil de enviar emails do Gmail para um Google Spreadsheet será usar (ou criar) uma receita no IFTTT. Não faltam por lá exemplos disso, como esta que guarda numa folha de cálculo as confirmações de encomendas na Amazon, ou este que faz o mesmo para emails com recibos, encomendas ou facturas.

Mas, se não quiserem ficar dependentes do IFTTT e ter maior controlo sobre como e quando fazerem essa importação, bastará recorrer a um pequeno script no Google Spreadsheets que tratará do assunto. Para isso bastará criarem uma folha de cálculo no Google Docs, e depois irem a Tools->Script Editor, onde deverão fazer colocar o script abaixo. Depois bastará, ainda dentro do editor, seleccionarem a função "run" e clicarem para a executar.

Mas antes disso, há alguns parâmetros a configurar (os campos marcados a amarelo), onde deverão colocar o ID da folha de cálculo (podem correr a função "getId" neste mesmo script para descobrirem o ID da folha actual), o nome da página onde querem inserir os dados (será criada uma nova se não existir) e, não menos importante, que emails desejam copiar através da expressão de pesquisa. Poderão ser email que contenham uma palavra, ou enviados de determinado endereço, ou para determinado endereço, ou com uma label específica, ou uma combinação de tudo isso...

Depois de executado, verão os emails darem origem a uma folha de cálculo, onde mais facilmente poderão gerir coisas como encomendas, contactos, ou o que bem entenderem. (Poderão também executar o script de forma automática de X em X tempo, criando um trigger em "Edit->Current Project's Triggers", evitando a necessidade de o fazer manualmente.)



// Credit: https://gist.github.com/oshliaer/70e04a67f1f5fd96a708

var SHEET_ID = YOUR_SPREADSHEET_ID;
var SHEET_NAME = "YOUR_SHEET_NAME";
var SEARCH_QUERY = "pesquisar label:inbox is:unread from:xpto to:me";

//Gmail Advanced search https://support.google.com/mail/answer/7190

function getEmails_(q){
var emails = [];
var thds = GmailApp.search(q);
for(var i in thds){
var msgs = thds[i].getMessages();
for(var j in msgs){
emails.push([msgs[j].getBody().replace(/<.*?>/g, '\n').replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n')]);
}
}
return emails;
}

function appendData_(sheet, array2d){
sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);
}

function run(){
//Gmail Advanced search https://support.google.com/mail/answer/7190
var array2d = getEmails_(SEARCH_QUERY);
if(array2d) {
var ss = SpreadsheetApp.openById(SHEET_ID);
var sheet = ss.getSheetByName(SHEET_NAME);
if(!sheet) sheet = ss.insertSheet(SHEET_NAME);
appendData_(sheet, array2d);
}
}

function getId() {
Browser.msgBox('Spreadsheet key: ' + SpreadsheetApp.getActiveSpreadsheet().getId());
}

1 comentário: