// 1) GERA CÓDIGOS E RESPECTIVOS URLS
// 2) ENVIA A LISTA PARA E-MAILS
// 3) EMBARALHA OS CÓDIGOS
function enviarCedulas(){
//GERA CÒDIGOS E RESPECTIVOS URLS
var formId = "CÓDIGO OCULTADO";
var entry = "1666239363";
var ssId = SpreadsheetApp.getActive().getId();
var planilha = SpreadsheetApp.openById(ssId);
var nomeAba = "VOTANTES";
var aba = planilha.getSheetByName(nomeAba);
var votantes = aba.getDataRange().getValues();
var totalCodigos = votantes.length;
gerarTodosOsCodigos(formId, entry, totalCodigos);
nomeAba = "CODIGOS";
aba = planilha.getSheetByName(nomeAba);
var codigosRange = aba.getDataRange();
var codigos = codigosRange.getValues();
var totalEmails = votantes.length;
for (var i = 1; i < totalEmails; i++) {
var name = votantes[i][0];
var theirMail = votantes[i][1];
var url = codigos[i][1];
mandaEmails(name, theirMail, url);
var aaa;
}
embaralhaCodigos();
}
function embaralhaCodigos() {
var ssId = SpreadsheetApp.getActive().getId();
var planilha = SpreadsheetApp.openById(ssId);
var nomeAba = "CODIGOS";
var aba = planilha.getSheetByName(nomeAba);
var range = aba.getDataRange();
var random = aba.getRange(2, 1, range.getLastRow() - 1, range.getLastColumn() - 1);
random.randomize();
}
function gerarCodigo() {
//http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript
return random = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
}
function constroiUrl(codigos, formId, entry){
var template = "https://docs.google.com/forms/d/--form-id--/viewform?entry.##entryNumber##=##COD##";
template = template.replace("--form-id--", formId);
var urls = ["Url"];
// Skip headers, then build URLs for each row in Sheet1.
for (var i = 1; i < codigos.length; i++ ) {
var url = template.replace('##COD##',escape(codigos[i])).replace('##entryNumber##', entry);
urls.push(url);
}
return urls;
}
function adicionaValoresParaTabela(aba, letraColuna, valores) {
const intervalo = [letraColuna, "1:", letraColuna, valores.length].join("");
const fn = function(v) {
return [ v ];
};
aba.getRange(intervalo).setValues(valores.map(fn));
}
function gerarTodosOsCodigos(formId, entry, totalCodigos){
var ssId = SpreadsheetApp.getActive().getId();
var nomeAba = "CODIGOS";
var planilha = SpreadsheetApp.openById(ssId);
var aba = planilha.getSheetByName(nomeAba);
var codigos = ["Códigos"];
for (var i = 1; i < totalCodigos; i++) {
codigos.push(gerarCodigo());
}
adicionaValoresParaTabela(aba,"A",codigos);
var links = constroiUrl(codigos, formId, entry);
adicionaValoresParaTabela(aba,"B",links);
}
function mandaEmails(name, theirMail, url) {
var facebookLogoUrl = "https://sites.google.com/site/condominiomizaelmontenegro/gastos-e-receita/area-do-sindico/Ameciclo_html_m2456de1c.png";
var twitterLogoUrl = "https://sites.google.com/site/condominiomizaelmontenegro/gastos-e-receita/area-do-sindico/Ameciclo_html_m65ecf6cc.png";
var instagramLogoUrl = "https://sites.google.com/site/condominiomizaelmontenegro/gastos-e-receita/area-do-sindico/Ameciclo_html_m475d4370.png";
var facebookUrl = "http://www.facebook.com/AMEciclo";
var twitterUrl = "http://www.twitter.com/Ameciclo";
var instagramUrl = "http://www.instagram.com/Ameciclo";
var amecicloUrl = "http://www.ameciclo.org/";
var amecicloGroupMailUrl = "http://groups.google.com/group/ameciclo";
var amecicloGroupFacebookUrl = "http://www.facebook.com/groups/138029079711872/";
var amecicloLogoUrl = "https://uniaodeciclistas.org.br/wp-content/uploads/2013/04/Logo-Ameciclo-Qdr-Pq-300x300.jpg";
var conteudo = "<CENTER><TABLE WIDTH=600 CELLPADDING=4 CELLSPACING=0 RULES=NONE><COL WIDTH=595>" +
"<TR><TD WIDTH=595 VALIGN=TOP><P ALIGN=CENTER>" +
"<a href="+ amecicloUrl +"><img src=" + amecicloLogoUrl + " WIDTH=100 HEIGHT=100><br></p></TD></TR>" +
"<TR><TD WIDTH=595 VALIGN=TOP >" +
"<p>Olá " + name + ", <br>Essa é a nossa CÉDULA DE VOTAÇÃO VIRTUAL para as Eleições da Ameciclo 2020.<br><br></p>" +
"<p><b><a href=" + url + ">CLIQUE AQUI PARA ACESSÁ-LA</a></b><br><br></p>"+
"<p>Cada célula tem um código único, gerado aleatoriamente, e garante o anonimato do voto.<br></p>" +
"<p>Não passe esse código ou link para ninguém, pois é pessoal e intransferível.<br><br>"+
"Devido à pandemia de COVID-19, a Comissão Eleitoral adotou esse método virtual de votação. Saiba mais na própria cédula.<br></p>"+
"<p ALIGN=CENTER>Atenciosamente,<br><b>AMECICLO<br>Associação Metropolitana de Ciclistas do Recife</b></p></TD></TR>" +
"<TR><TD WIDTH=595 VALIGN=TOP><P ALIGN=CENTER>" +
"<a href="+ facebookUrl +"><img src=" + facebookLogoUrl + " WIDTH=29 HEIGHT=29></a><a href="+ twitterUrl +"><img src=" + twitterLogoUrl +" WIDTH=29 HEIGHT=29></a><a href="+ instagramUrl +"><img src=" + instagramLogoUrl + " WIDTH=29 HEIGHT=29></a><br></p></TD></TR></TABLE></CENTER>"
enviarEmailPeloSendgrid(theirMail, conteudo);
}
function enviarEmailPeloSendgrid(endereco, corpoDoEmail) {
var SENDGRID_KEY ='CÓDIGO OCULTADO';
var headers = {
"Authorization" : "Bearer "+SENDGRID_KEY,
"Content-Type": "application/json"
}
var tituloEmail = "CÉDULA DE VOTAÇÃO VIRTUAL - Eleições da Ameciclo 2020"
var body =
{
"personalizations": [
{
"to": [
{
"email": endereco
}
],
"subject": tituloEmail
}
],
"from": {
},
"content": [
{
"type": "text/html",
"value": corpoDoEmail
}
]
}
var options = {
'method':'post',
'headers':headers,
'payload':JSON.stringify(body)
}
var response = UrlFetchApp.fetch("https://api.sendgrid.com/v3/mail/send",options);
Logger.log(response);
}