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 6: Line 6:
 
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:
 
# Create Gmail new labels - newtask and newtaskdone.
 
# Create Gmail new labels - newtask and newtaskdone.
# Create a filter based on newtask label.
+
# Create Gmail filter based on newtask label.
 
# Create script from Google Spreadsheet.
 
# Create script from Google Spreadsheet.
 
# Integrate the script with Google API.
 
# Integrate the script with Google API.
 
# Schedule it via the time-driven even trigger.
 
# Schedule it via the time-driven even trigger.
  
Pay attention to 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".
  
In addition to above sample, I'd like to add  
+
In addition to above sample, I'd like to add the email's body into the G! task's note.
 +
 
 +
* Add this new variable to grab the email's body
 +
<pre>
 +
        // Grab the task data 
 +
        var taskTitle = thread.getFirstMessageSubject(); 
 +
        var taskNote = getTextFromHtml((thread.getMessages()[0]).getBody());
 +
</pre>
 +
 
 +
* Add new parameter of task's note to addTask_
 +
<pre>
 +
        // Insert the task 
 +
        //addTask_(taskTitle, TASKLIST); 
 +
        addTask_(taskTitle, taskNote, TASKLIST); 
 +
</pre>
 +
 
 +
* Update the addTask_ to include setNotes
 +
<pre>
 +
    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)); 
 +
    } 
 +
</pre>
 
[[Category: Others]]
 
[[Category: Others]]

Revision as of 06:12, 10 August 2012

Goal:

  • Send email to a specified address - in the case Gmail address named yourgmail+task@gmail.com.
  • Script will parse that email based on Gmail label, and grab the email's subject then create a new 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 what will happen:

  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".

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

  • 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));  
    }