Action
Todoist Quick Add V3 - With Notes, Reminders, and default project
Version 3 of my Todoist Quick Add API Action. Updated 14 Jan 2020 to use the V8 API
Updated 19/9/2020 to include the new auto_reminder parameter added to the API to ensure that auto reminder times are honoured. If you don’t want this then check the JS code, there is a comment that explains how to turn it off.
Because the Quick Add API is used tasks can be added to specific projects and with specific due dates/times e.g.:
Buy beer tomorrow 1pm #Party p1
Call Pete #Work friday 3pm
You can also add notes and reminders. These should be added using the following parameters, after the main task text:
--
note : Allows a note to be included
--
reminder : Allows a reminder time to be included
Because “--
” is used to indicate the options it cannot be used as part of any regular text.
Each task can include either or both as required e.g.:
Call Fred tomorrow 9pm
Call Joe Wednesday 4pm --
note This is a note
Call Pete Thursday 3pm --
reminder Thursday 2:30pm
Call Sue Friday 6pm --
note Add a note --
reminder Friday 5:45pm
Call Helen Saturday 2pm --
reminder Saturday 1pm --
note One more note
It is also possible to set a default project that will be used for subsequent tasks. Set the default project by putting #projectname at the beginning of a new line. Examples:
Write letter to Santa 1st December <- This will go to the inbox
Delete Facebook #personal tomorrow <- This will go into personal
#work <- This sets the default project to work
File Expenses friday 9am <- WIll be added to work
Clean Shoes #personal <- Will ignore default and go to personal
Organise planning meeting <- Added to work
#holiday <- Sets new default project
Book flights <- Added to holiday
Buy suitcase <- Added to holiday
Note: Unlike the Quick Add entries in the Todoist App, the quick add API doesn’t work with multi word project names. It also doesn’t automatically add new projects.
Steps
-
script
var credential = Credential.create("Todoist", "Todoist API"); credential.addTextField("token", "Token"); var result = credential.authorize(); if (!result) { alert("Failed to obtain credentials. Please check and retry"); context.cancel("Failed to obtain credentials"); } else { if (typeof(credential.getValue("token")) === 'undefined' || String(credential.getValue("token")).length == 0) { alert("Todoist token is blank. Please rerun action and enter token again"); credential.forget(); context.cancel("Todoist token was blank"); } else { // check to see if draft is blank var content = draft.content; var check = content.length; if (content.length == 0) { alert("Draft is blank"); context.cancel("Draft was blank"); } else { // Call API for each line in a draft var newDraft = ""; var defaultProject = ""; // split draft and loop over lines var lines = draft.content.split("\n"); var http = HTTP.create(); // create HTTP object for (var line of lines) { if (line.length == 0) { newDraft+="\n" } else { var proj = line.match(/^#(\S+)\s*/m); if (proj) { defaultProject = proj[1]; newDraft+= line + "\n" } else { var parts = line.split("--"); if (!parts[0].match(/#/m) && defaultProject != "") { mainPart= parts[0]+' #'+defaultProject; } else { mainPart=parts[0]; } // Modified 19/09/2020 to add auto_reminder. If you don't want auto_reminders added change 'true' to 'false' var params = {"token":credential.getValue("token"),"text":mainPart,"auto_reminder":true}; if (parts.length != 1) { for (i = 1; i < parts.length; i++) { var opt=parts[i].split(" ",1); switch (String(opt)) { case 'note': params['note']=parts[i].slice(String(opt).length); break; case "reminder": params['reminder']=parts[i].slice(String(opt).length); break; default: console.log("Bad parameter - "+ opt); break; } } } var response = http.request({ "url": "https://todoist.com/api/v8/quick/add", "method": "POST", "data": params }); if (response.success) { newDraft+= line + " - OK\n" } else { newDraft+= line + " - Failed\n" console.log(response.statusCode); console.log(response.error); } } } } editor.setText(newDraft); } } }
Options
-
After Success Default Notification Info Log Level Info