Create Trello Cards from a Google Form

Trello provides you a unique email address (like xyz@boards.trello.com) for any board in you account and any email message sent to this address is added as a new card to the Trello Board. @jezhou has written a Google Scripts that redirects Google Form submissions to a Trello using this email option.

When a Google Form is submitted, the onFormSubmit() event is triggered which then forwards the Google Form data to Trello via the GmailApp service. The subject is the title of the card while the email body goes in the description field. The script may be extended to forward Google Form entries to other services like WordPress, Evernote, Pocket, Tumblr, etc. since they too allow posting via Email.


// Credit: https://gist.github.com/jezhou/ac34cef8ce02aa051cfd/53a2b9605d99a13ebe090da5d4642be71b5e2e54

// Fire off this function in the script editor to enable.
function init() {

  var triggers = ScriptApp.getProjectTriggers();
  var form = FormApp.getActiveForm();
  
  // Delete all triggers before making a brand new one.
  for(var i in triggers) {
    ScriptApp.deleteTrigger(triggers[i]);
  }
  
  // Set up a new trigger
  ScriptApp.newTrigger('submitToTrello')
           .forForm(form)
           .onFormSubmit()
           .create();
  
  Logger.log('Successful creation of new submitToTrello trigger.');
  
}

function submitToTrello(e) {
  
  var form = FormApp.getActiveForm();
  var latestItemResponses = form.getResponses().pop().getItemResponses();
 
  if (MailApp.getRemainingDailyQuota() > 0) {
    
    // Trello email address goes here
    var email = "ctrlq@boards.trello.com";
    
    // Subject line will be the title of the event on Trello card
    var subject = latestItemResponses[3].getResponse();
    
    // Intial empty body
    var body = "";
    
    // Loop through recent responses and format them into string
    latestItemResponses.forEach(function (value, index, array) {
      var formatted = Utilities.formatString("**%s**\n %s\n\n", value.getItem().getTitle(), value.getResponse());
      body = body.concat(formatted);
    });
        
    MailApp.sendEmail(email, subject, body);
  }

}