How do you set the due date for a task with the google tasks service in apps script?
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"
I used this code to create this project for keeping Google Tasks up to date:
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);
}