Difference between revisions of "Create Google Tasks by sending email to Google GMail"

From Ittichai Chammavanijakul's Wiki
Jump to navigation Jump to search
Line 1: Line 1:
 
Goal:
 
Goal:
* Send email to a specified address - in the case Gmail address named yourgmail+task@gmail.com.
+
* Send email to a specified address - in this case to Gmail address named yourgmail+task@gmail.com. (If Gmail ID is ittichai, the email to send to will be ittichai+task@gmail.com.)
* Script will parse that email based on Gmail label, and grab the email's subject then create a new task.
+
* Script will parse that email based on Gmail label assigned by filter, and grab the email's subject to create a new Google task.
  
 
Follow this step-by-step of this page.
 
Follow this step-by-step of this page.
 
http://www.pipetree.com/qmacro/blog/2011/10/automated-email-to-task-mechanism-with-google-apps-script/
 
http://www.pipetree.com/qmacro/blog/2011/10/automated-email-to-task-mechanism-with-google-apps-script/
  
This is just an overview what will happen:
+
This is just an overview of what happens:
 
# Create Gmail new labels - newtask and newtaskdone.
 
# Create Gmail new labels - newtask and newtaskdone.
 
# Create Gmail filter based on newtask label.
 
# Create Gmail filter based on newtask label.
Line 13: Line 13:
 
# Schedule it via the time-driven even trigger.
 
# Schedule it via the time-driven even trigger.
  
Pay attention to the *Integrate the script with Google API* in the *Script Code* section especially if this is your first time coding this. You will have to enable Google API service to allow access the Task API - https://developers.google.com/apps-script/articles/google_apis_reading_list. If not doing so, you will receive an error message saying "Tasks - not defined".
+
Pay attention to the *Integrate the script with Google API* in the *Script Code* section especially if this is your first time coding this. You will have to enable Google API service to allow access the Task API - https://developers.google.com/apps-script/articles/google_apis_reading_list. If not doing so, you will receive an error message saying "Tasks - not defined" when running the script.
  
 
In addition to above sample, I'd like to add the email's body into the G! task's note.
 
In addition to above sample, I'd like to add the email's body into the G! task's note.
  
 +
Here is what I do:
 
* Add this new variable to grab the email's body
 
* Add this new variable to grab the email's body
 
<pre>
 
<pre>

Revision as of 06:16, 10 August 2012

Goal:

  • Send email to a specified address - in this case to Gmail address named yourgmail+task@gmail.com. (If Gmail ID is ittichai, the email to send to will be ittichai+task@gmail.com.)
  • Script will parse that email based on Gmail label assigned by filter, and grab the email's subject to create a new Google task.

Follow this step-by-step of this page. http://www.pipetree.com/qmacro/blog/2011/10/automated-email-to-task-mechanism-with-google-apps-script/

This is just an overview of what happens:

  1. Create Gmail new labels - newtask and newtaskdone.
  2. Create Gmail filter based on newtask label.
  3. Create script from Google Spreadsheet.
  4. Integrate the script with Google API.
  5. Schedule it via the time-driven even trigger.

Pay attention to the *Integrate the script with Google API* in the *Script Code* section especially if this is your first time coding this. You will have to enable Google API service to allow access the Task API - https://developers.google.com/apps-script/articles/google_apis_reading_list. If not doing so, you will receive an error message saying "Tasks - not defined" when running the script.

In addition to above sample, I'd like to add the email's body into the G! task's note.

Here is what I do:

  • Add this new variable to grab the email's body
        // Grab the task data  
        var taskTitle = thread.getFirstMessageSubject();  
        var taskNote = getTextFromHtml((thread.getMessages()[0]).getBody());
  • Add new parameter of task's note to addTask_
        // Insert the task  
        //addTask_(taskTitle, TASKLIST);  
        addTask_(taskTitle, taskNote, TASKLIST);  
  • Update the addTask_ to include setNotes
    function addTask_(title, message, tasklistId) {  
      //var newTask = Tasks.newTask().setTitle(title);  
      var newTask = Tasks.newTask().setTitle(title).setNotes(message);  
      Tasks.Tasks.insert(newTask, getTasklistId_(tasklistId));  
    }