Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set Google Tasks Due Date

How do you set the due date for a task with the google tasks service in apps script?

Tasks Service

Trying to set this value to a given date, but this seems to only update the local value not the server value as tehhowch suggests

task.due = new Date();

How do you update the server? Here is what I tried

var x = {
    due: new Date()
};
Tasks.Tasks.update(x, "MDE2NzI3NTAzNjc5NTQ1ODY5MTY6MDow", task);

but it throws the error

Invalid value for: Invalid format: "Tue Apr 10 20:45:26 GMT-04:00 2018"

Completed Project

I used this code to create this project for keeping Google Tasks up to date:

Keep Google Tasks Updated

https://github.com/CTOverton/Keep-Google-Tasks-Updated

like image 209
CTOverton Avatar asked Oct 20 '25 06:10

CTOverton


1 Answers

In accordance with the Google Tasks API documentation for the Task resource, the due parameter must be an RFC 3339 timestamp. So instead of "Tue Apr 10 20:45:26 GMT-04:00 2018" it should be "2018-04-11T0:45:26.000Z". See related question: Generate an RFC 3339 timestamp similar to Google Tasks API?

This is the same format used by other datetime properties of the task, so if one were to log the task:

console.log(Tasks.Tasks.get(listId, taskId));

Then the due, completed and updated properties, if present, would indicate the required format.

From a native Javascript Date in Google Apps Script, this is easiest done as:

function getExtension(listId, taskId) {
  var now = new Date();
  var deadline = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() + 7));
  var newTask = {
    due: Utilities.formatDate(deadline, "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'")
  };
  // Since we supply only a partial resource, call .patch() rather than .update()
  Tasks.Tasks.patch(newTask, listId, taskId);
}
like image 114
tehhowch Avatar answered Oct 21 '25 23:10

tehhowch