still

; var email = row[column_map.Email]; if (email) { var sent = row[column_map.Sent]; if (sent != EMAIL_SENT) { var message = template; var message_html = template_html; for (var column in column_map) { message = message.replace('{{' + column + '}}', row[column_map[column]]); message_html = message_html.replace('{{' + column + '}}', row[column_map[column]]); } GmailApp.sendEmail(email, subject, message, { htmlBody: message_html }); Logger.log(email); sheet.getRange(i + 1, column_map.Sent + 1).setValue(EMAIL_SENT); // Make sure the cell is updated right away in case the script is interrupted SpreadsheetApp.flush(); } } }}It marks rows that have been sent to by putting "Yes" in the "Sent" column. It pulls the email address from the "Email" column. Those are the only two hard-coded values. I wrote the email template as a draft in Gmail. The outgoing messages all appear in your Gmail "sent" folder.The only downside is that Gmail also has a 100 email per day quota. In my scramble to get these emails out, I had to pay for and set up Google Apps for Work on my domain to increase the quota to 1500 per day. Turns out, the quotadidn't increase, but between my personal Gmail and the Google Apps account, I was able to hit most of my contact list. I'll get the rest tomorrow.I had no idea PR would be so much fun! It's just like programming!Just kidding, it's still horrible.Thanks for reading!