En la empresa en la que trabajo enviamos correos electrónicos todo el tiempo pero al estar pasando por una etapa de recesión era necesario ahorrar y dejar de usar herramientas como mailchimp o sendinblue, entonces la alternativa para enviar campañas fue consumir la API de sendgrid, pero no solo eso, debíamos de crear una función que el equipo de marketing pudiera consumir de forma rápida y fácil con conocimientos básicos de Apps script. este fue el resultado
/**
* Enviar mensaje de correo electrónico por SendGrid
*
* #### Usa la función sendGrid() para enviar un mensaje
*
*
* @param {string} EmailFrom Correo que envía el mensaje, debe tener terminación **"@ivoy.mx"**
* @param {string} Subject Asunto del correo
* @param {string} Content Contenido en html
* @param {object} EmailTo Array con correos a los que se enviará el mensaje
* @param {object} EmailCc Array con correos a los que se enviará el mensaje con copia
* @param {object} EmailBcc Array con correos a los que se enviará el mensaje con copia oculta
*
* @return {number} codigo de respuesta de la API
*/functionsendGrid(EmailFrom,Subject,Content,EmailTo,EmailCc,EmailBcc,Archivo)
{
var SENDGRID_KEY ='TU - API - KEY';
var Headers =
{
"Authorization" : "Bearer "+SENDGRID_KEY,
"Content-Type": "application/json"
}
var Body =
{
"personalizations": [
{
"to": [
]
}
],
"from":
{
"email": EmailFrom,
"name": "ivoy"
},
"subject": Subject,
"content": [
{
"type": "text/html",
"value": Content
}],
"tracking_settings": {
"click_tracking": {
"enable": false,
"enable_text": false
},
"open_tracking": {
"enable": true,
"substitution_tag": "%open-track%"
},
"subscription_tracking": {
"enable": false
}
}
}
for( var i=0; i<EmailTo.length; i++){
var Correo = EmailTo[i]
Body.personalizations[0].to.push({
"email": Correo,
"name": Correo
})
}
Logger.log(typeof EmailCc)
if(typeof EmailCc != "undefined" && typeof EmailCc == "object"){
Body.personalizations[0].cc = []
for( var i=0; i<EmailCc.length; i++){
var CorreoCC = EmailCc[i]
Body.personalizations[0].cc.push({
"email": CorreoCC,
"name": CorreoCC
})
}
}
if(typeof EmailBcc != "undefined" && typeof EmailBcc == "object"){
Body.personalizations[0].bcc = []
for( var i=0; i<EmailBcc.length; i++){
var CorreoBCC = EmailBcc[i]
Body.personalizations[0].bcc.push({
"email": CorreoBCC,
"name": CorreoBCC
})
}
}
if(typeof Archivo != "undefined" && typeof Archivo == "object"){
Body.attachments = []
Body.attachments.push(Archivo)
}
Logger.log(JSON.stringify(Body))
var Options =
{
'method':'post',
'headers':Headers,
'payload':JSON.stringify(Body)
}
var Response = UrlFetchApp.fetch("https://api.sendgrid.com/v3/mail/send",Options);
var Codigo = Response.getResponseCode()
Logger.log(Codigo);
return Codigo
}