Skip to content

Instantly share code, notes, and snippets.

@gnunicorn
Last active June 6, 2021 05:57
Show Gist options
  • Save gnunicorn/1838132 to your computer and use it in GitHub Desktop.
Save gnunicorn/1838132 to your computer and use it in GitHub Desktop.

Revisions

  1. gnunicorn revised this gist Apr 22, 2013. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions mass_emailer.js
    Original file line number Diff line number Diff line change
    @@ -66,7 +66,6 @@ function _send_mails(mail, name, trial) {
    attrs = data.shift(),
    count = 0,
    mail, bodyCopy, attachments, subjectCopy, idx, line_idx, mail_idx, line;

    mail_idx = attrs.indexOf('Email');
    if (mail_idx === -1) {
    Browser.msgBox("Canceled: At least one row must be called 'email'");
    @@ -75,6 +74,7 @@ function _send_mails(mail, name, trial) {

    attachments = mail.getAttachments();


    for (line_idx in data) {
    line = data[line_idx];
    bodyCopy = mail.getBody();
    @@ -84,7 +84,7 @@ function _send_mails(mail, name, trial) {
    subjectCopy = subjectCopy.replace("{{" + attrs[idx] + "}}", line[idx]);
    }
    count += 1;
    if(trial) {
    if(trial == "true") {
    Browser.msgBox("to:" + line[mail_idx] + "\nSubject:" + subjectCopy + "\nBody:" + bodyCopy);
    return;
    } else {
  2. gnunicorn renamed this gist Apr 22, 2013. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. gnunicorn revised this gist Apr 22, 2013. 1 changed file with 24 additions and 14 deletions.
    38 changes: 24 additions & 14 deletions gistfile1.js
    Original file line number Diff line number Diff line change
    @@ -3,6 +3,8 @@
    *
    * Changelog:
    *
    * 27. Apr. 2013
    * - trial checkbox allows easier debugging
    * 16. Feb. 2012
    * - released the first version to public
    * 15. Feb. 2012
    @@ -11,14 +13,13 @@
    * 10. Feb. 2012
    * - add Support to load Mail from Draft
    */

    function start_mailer() {
    var myapp = UiApp.createApplication().setTitle('Mass Emailer').setHeight(120).setWidth(300);
    var myapp = UiApp.createApplication().setTitle('Mass Emailer').setHeight(150).setWidth(300);
    var top_panel = myapp.createFlowPanel();

    top_panel.add(myapp.createLabel("Please select the draft you'd like to be sent"));

    var lb = myapp.createListBox(false).setId('msg').setWidth(250).setName('message').setVisibleItemCount(1);
    var lb = myapp.createListBox(false).setId('msg').setWidth(300).setName('message').setVisibleItemCount(1);

    var threads = GmailApp.search('is:draft', 0, 10);
    if (threads.length === 0) {
    @@ -31,38 +32,42 @@ function start_mailer() {
    }

    top_panel.add(lb);


    top_panel.add(myapp.createLabel("Name to send from (optional)"))
    var name_box = myapp.createTextBox().setName("name").setWidth(250);
    top_panel.add(myapp.createLabel("Name to send from (optional)"));
    var name_box = myapp.createTextBox().setName("name").setWidth(300);
    top_panel.add(name_box);

    var check_box = myapp.createCheckBox().setName("trial").setText("Trail Run").setWidth(300);
    top_panel.add(check_box);

    var ok_btn = myapp.createButton('Send mails now');
    top_panel.add(ok_btn);
    myapp.add(top_panel);

    var handler = myapp.createServerClickHandler('callback').addCallbackElement(lb).addCallbackElement(name_box);
    var handler = myapp.createServerClickHandler('callback').addCallbackElement(lb).addCallbackElement(name_box).addCallbackElement(check_box);
    ok_btn.addClickHandler(handler);

    SpreadsheetApp.getActiveSpreadsheet().show(myapp);
    }

    function callback(e) {
    var mail = GmailApp.getMessageById(e.parameter.message);
    _send_mails(mail, e.parameter.name);
    _send_mails(mail, e.parameter.name, e.parameter.trial);
    var app = UiApp.getActiveApplication();
    app.close();
    return app;

    }

    function _send_mails(mail, name) {
    function _send_mails(mail, name, trial) {
    var ws = SpreadsheetApp.getActiveSpreadsheet().getActiveSelection(),
    data = ws.getValues(),
    attrs = data.shift(),
    count = 0,
    mail, bodyCopy, attachments, subjectCopy, idx, line_idx, mail_idx, line;

    mail_idx = attrs.indexOf('email');
    mail_idx = attrs.indexOf('Email');
    if (mail_idx === -1) {
    Browser.msgBox("Canceled: At least one row must be called 'email'");
    return;
    @@ -79,11 +84,16 @@ function _send_mails(mail, name) {
    subjectCopy = subjectCopy.replace("{{" + attrs[idx] + "}}", line[idx]);
    }
    count += 1;
    GmailApp.sendEmail(line[mail_idx], subjectCopy, bodyCopy, {
    htmlBody: bodyCopy,
    name: name,
    attachments: attachments
    })
    if(trial) {
    Browser.msgBox("to:" + line[mail_idx] + "\nSubject:" + subjectCopy + "\nBody:" + bodyCopy);
    return;
    } else {
    GmailApp.sendEmail(line[mail_idx], subjectCopy, bodyCopy, {
    htmlBody: bodyCopy,
    name: name,
    attachments: attachments
    });
    }
    }

    Browser.msgBox(count + " Mails send");
  4. gnunicorn revised this gist Apr 22, 2013. No changes.
  5. gnunicorn revised this gist Feb 16, 2012. 1 changed file with 14 additions and 0 deletions.
    14 changes: 14 additions & 0 deletions gistfile1.js
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,17 @@
    /*
    * Mass Emailer Google Spreadsheet script.
    *
    * Changelog:
    *
    * 16. Feb. 2012
    * - released the first version to public
    * 15. Feb. 2012
    * - add possibility to change the name
    * - add full-blown UI
    * 10. Feb. 2012
    * - add Support to load Mail from Draft
    */

    function start_mailer() {
    var myapp = UiApp.createApplication().setTitle('Mass Emailer').setHeight(120).setWidth(300);
    var top_panel = myapp.createFlowPanel();
  6. gnunicorn created this gist Feb 15, 2012.
    84 changes: 84 additions & 0 deletions gistfile1.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,84 @@
    function start_mailer() {
    var myapp = UiApp.createApplication().setTitle('Mass Emailer').setHeight(120).setWidth(300);
    var top_panel = myapp.createFlowPanel();

    top_panel.add(myapp.createLabel("Please select the draft you'd like to be sent"));

    var lb = myapp.createListBox(false).setId('msg').setWidth(250).setName('message').setVisibleItemCount(1);

    var threads = GmailApp.search('is:draft', 0, 10);
    if (threads.length === 0) {
    Browser.msgBox("Please save your template as a draft in your gmail account!");
    return;
    }

    for (var i = 0; i < threads.length; i++) {
    lb.addItem("" + threads[i].getFirstMessageSubject(), threads[i].getMessages()[0].getId());
    }

    top_panel.add(lb);

    top_panel.add(myapp.createLabel("Name to send from (optional)"))
    var name_box = myapp.createTextBox().setName("name").setWidth(250);
    top_panel.add(name_box);

    var ok_btn = myapp.createButton('Send mails now');
    top_panel.add(ok_btn);
    myapp.add(top_panel);

    var handler = myapp.createServerClickHandler('callback').addCallbackElement(lb).addCallbackElement(name_box);
    ok_btn.addClickHandler(handler);

    SpreadsheetApp.getActiveSpreadsheet().show(myapp);
    }

    function callback(e) {
    var mail = GmailApp.getMessageById(e.parameter.message);
    _send_mails(mail, e.parameter.name);
    var app = UiApp.getActiveApplication();
    app.close();
    return app;

    }

    function _send_mails(mail, name) {
    var ws = SpreadsheetApp.getActiveSpreadsheet().getActiveSelection(),
    data = ws.getValues(),
    attrs = data.shift(),
    count = 0,
    mail, bodyCopy, attachments, subjectCopy, idx, line_idx, mail_idx, line;

    mail_idx = attrs.indexOf('email');
    if (mail_idx === -1) {
    Browser.msgBox("Canceled: At least one row must be called 'email'");
    return;
    }

    attachments = mail.getAttachments();

    for (line_idx in data) {
    line = data[line_idx];
    bodyCopy = mail.getBody();
    subjectCopy = mail.getSubject();
    for (idx in attrs) {
    bodyCopy = bodyCopy.replace("{{" + attrs[idx] + "}}", line[idx]);
    subjectCopy = subjectCopy.replace("{{" + attrs[idx] + "}}", line[idx]);
    }
    count += 1;
    GmailApp.sendEmail(line[mail_idx], subjectCopy, bodyCopy, {
    htmlBody: bodyCopy,
    name: name,
    attachments: attachments
    })
    }

    Browser.msgBox(count + " Mails send");
    }



    function onOpen() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var menuEntries = [ {name: "Send Mass Email", functionName: "start_mailer"}];
    ss.addMenu("Mass-Mailer", menuEntries);
    }