Skip to content

Instantly share code, notes, and snippets.

@DerekCaelin
Last active November 30, 2022 18:13
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save DerekCaelin/fb13d85e4bcd503217cc5793c27dfc08 to your computer and use it in GitHub Desktop.
Save DerekCaelin/fb13d85e4bcd503217cc5793c27dfc08 to your computer and use it in GitHub Desktop.
Google Form to Trello Board via Email
/*
If you want entries on a Google form to auto-create a Trello card,
you can follow the steps below.
There are two ways to connect a Google form to a Trello board. One of them
involves using the Trello API. This version instead works by sending an email to a
Trello board's private email address and then it creates cards based off the content
of the email.
Trello will make a card with a title that matches the "subject" line of the
email. The description will match the message within the email.
1. Create a Google form with a number of questions.
2. In the settings of the Google form, select "< > Script Editor"
3. Replace the pre-existing text with the text from this form.
4. Adapt the code:
- Replace the email adress that the script will send to with the email address you find on the Trello board. (Menu > More > Email-to-Board Settings)
- Change the content of the email message.
5. On the code page, go to Resources > Edit > All Your Triggers. Add a new trigger that runs onFormSubmit. (This will run the "onFormSubmit" function in your code when someone clicks "Submit" on the Google Form.
6. When prompted, provide necessary permissions for your google script to send emails on your behalf, etc.
*/
//Form Variables
var form; //this is your Google form
var responses; //is a collection of all the responses that are provided by the goolge form
//Google Form responses
//these are the individual responses that come with your form. Change the number of your what.
var entry1;
var entry2;
var entry3;
//email content
var trelloEmail = "example@email.com"; //This is the email address of your trello board.
var trelloTitle; //This is the Subject Line of the email your script will send.
var trelloDescription; //This is the Body of the email your script will send.
function onFormSubmit(e) {
form = FormApp.getActiveForm();
responses = e.response.getItemResponses();
//assign variables
AssignVariables ();
//build email
BuildEmail();
//send email
SendEmail();
}
//Get the value of variables from the form
function AssignVariables(form){
entry1 = responses[0].getResponse();
entry2 = responses[1].getResponse();
entry3 = responses[2].getResponse();
}
function BuildEmail(){
trelloTitle = 'Google Form Entry';
trelloDescription = 'Values from your Google form include: ' + '\n' + entry1 + ', ' + entry2 + ', ' + entry3 + '.';
}
function SendEmail(){
MailApp.sendEmail(trelloEmail, title, message);
}
@kellye2008
Copy link

Update to #5: One the code page go to Edit-> All your triggers.

@DerekCaelin
Copy link
Author

Thanks.

@kellye2008
Copy link

Can you explain the parameter 'e' in line 39?

@DerekCaelin
Copy link
Author

When a form is submitted, its information passes into 'e'. You pull information from e into "responses" (ln 41) and then break responses down into independent variables on 54.

@jackfrojpg-rblx
Copy link

Hey. How do I change the list the card goes in?

Also how do I add a label?

@DerekCaelin
Copy link
Author

Labeling

In the subject, add #labelname, #labelcolor, or #labelnumber. If your label consists of two or more words, in the subject line either join the words or use underscores between the words. For example, if your label is named "To Do" in the subject line of your email either enter #ToDo or #To_Do for the label to render properly on your card. If you have multiple labels in a board with the same color or the same name, emailing a board with #color or #name will only add the first label with that color or name to the card.

Lists

I don't believe you can set the card to go to different lists via email. If you find a way, please let me know.

More information on formatting here.

@jackfrojpg-rblx
Copy link

Thank you.

@jackfrojpg-rblx
Copy link

Wait so at the minute, will it just go to a random list?

@DerekCaelin
Copy link
Author

No, check the documentation I shared. When you set up the option to create cards by email, you select a destination list in the Trello GUI.

@jackfrojpg-rblx
Copy link

Oh okay. Thanks again!

@knpFletcher
Copy link

I kept getting a failure message of TypeError: Cannot read property 'getResponse' of undefined. After debugging, the fix seems to be starting the value extraction from the responses array at 0: entry1 = responses[0].getResponse(); Thanks for sharing this script, it's saved me a lot of time and money setting up a paid integration service.

@DerekCaelin
Copy link
Author

Thanks for sharing! I've updated the gist.

@SeriouslyKnowNothing
Copy link

Hi there (code noobie here)

I am getting the following error : TypeError: Cannot read property 'response' of undefinedonFormSubmit @ Code.gs:18

Can you maybe please advice?

@ngocduypham17
Copy link

ngocduypham17 commented Aug 1, 2022

How can I get the form submitted time in Trello card ?

@retupmoc258
Copy link

Unless I am misunderstanding this code, there's a mistake in the SendEmail function. The function sends an email using the email address provided in the code, but the variables "title" and "message" are not defined variables for the function call. Should it instead have trelloTitle and trelloDescription in place of those two variables?

@retupmoc258
Copy link

It looks like there's a similar error in the AssignVariables function and its use. The function requests the variable "form", but in the function call, no value is given. In the execution of the function, it instead uses only the responses variable and doesn't require the input variable. This also means that fetching the form variable is unnecessary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment