// Esta constante é escrita na coluna C para linhas nas quais um e-mail
// foi enviado com sucesso.
var EMAIL_SENT = 'EMAIL_SENT';
// Função principal para enviar e-mails
function sendEmail() {
// URL do logo a ser incluído no e-mail (Lembrar de usar uma logo em .png)
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Obter o endereço do email
var dataRange = ss.getSheetByName("cadastros").getDataRange();
// Faz com que seja obtido o assunto e a mensagem do email (A2/A4)
var subjectTemplate = ss.getSheetByName("email").getRange("A2").getValue(); // Refere-se à parte de Título do assunto, nos sheets posicionado em A2
var message = ss.getSheetByName("email").getRange("A4").getValue(); // Refere-se à parte de e-mail, nos sheets posicionado em A4
// Obtem valores para cada linha no alcance determinado
var data = dataRange.getValues();
// Loop através das linhas da planilha "cadastros"
for (var i = 1; i < data.length; ++i) {
var row = data[i];
var name = row[0]; // Primeira coluna do planilha (Nome)
var emailDestination = row[1]; // Segunda coluna da planilha (Email)
var emailSent = row[2]; // Terceira Coluna da planilha (status)
// Se o email estiver vazio, dá um break
if (emailDestination == "") {
break;
}
// Verifica se o e-mail ainda não foi enviado
if (emailSent != EMAIL_SENT) {
// Obtenha o título e a mensagem da planilha "email"
// Obtenha o título e a mensagem da planilha "email"
var subject = subjectTemplate.replace("<Nome>", name);
var messageBody = message.replace("<nome>", name);
// Envie o e-mail com o logotipo
sendEmailWithLogo(emailDestination, subject, messageBody, logoUrl);
// Marque a coluna 'Status' como 'EMAIL_SENT', evitando duplicatas
ss.getSheetByName("cadastros").getRange(1 + i, 3).setValue(EMAIL_SENT);
// Registre que o e-mail foi enviado com sucesso no log/console
Logger.log("Email enviado para " + emailDestination + " com sucesso!");
// Garanta que a célula seja atualizada imediatamente, caso o script seja interrompido
SpreadsheetApp.flush();
} else {
Logger.log("Nenhum novo email para enviar!");
}
}
}
// Função para enviar e-mail com logotipo
function sendEmailWithLogo(emailDestination, subject, message, logoUrl) {
// Busca o Blob do logotipo
var logoBlob = UrlFetchApp.fetch(logoUrl + "=s100-c").getBlob().setName("logoBlob");
// Envia o e-mail
MailApp.sendEmail({
to: emailDestination,
subject: subject,
htmlBody: message + "<br><br><img src='cid:logo' align='middle' style='width:100px; height:100px;'>",
inlineImages: {
logo: logoBlob,
},
});
}
// Função para criar o acionador
function createTrigger() {
// Esta função cria um acionador para executar a função sendEmail a cada semana, às 15 horas
ScriptApp.newTrigger('sendEmail')
.timeBased()
.atHour(15)
.everyDays(7)
.create();
}