✅ Todoist Tasks/Media --> ODK Central: Automated One-Way Sync via Google Sheets/Drive

CONTEXT:

So I run an Experimental/Demonstration farm in rural West Africa and my primary employee is non literate. Until WhatsApp/Facebook/Social Media most non literate people in our area had virtually 0 asynchronous communication, and even with those “resources”, I would say most non-literate people in our area have minimal use of asynchronous communication.

Managing Todo Tasks can be a challenge even for literate people without a good system. Over the years, I’ve found that I work well with an app called Todoist. Like 99% of apps, its developed for literate people, but allows image/audio/video comments. For years I’ve been wanting to get this into ODK and I’ve been waiting for “media entities”, but I’ve gotten to the point where I just needed to try this out as I really need to be able to communicate more effectively in an asynchronous way with employees.

Finally, I’ve been able to do a one way sync to a ‘choices’ tab of a google sheet XLSForm via the Todoist API. I have my script run every hour to look to see if there have been any changes between the Todoist info and the XLSForm in a google sheet, if there are differences/updates the script will run 2 functions:

  1. Get all the appropriate info from Todoist and write it into the XLSForm in addition to downloading audio and images from comments that have been updated/changed to a Google folder.
  2. After this step, it automatically runs another script to upload these changes (XLSForm and Media) to ODK Central shown here.

Since the AppsScript for syncing Todoist is not DIRECTLY ODK related, I wasn’t going to post it unless there is interest and others want me to. This is only my second coding projecting (really an extension of the first) and I’m sure the code could use some improvements. It’s quite tailored to a specific XLSForm, but if people wanted to see the whole thing I could do that. In the process of making the script with ChatGPT I realized that the original Todoist API I was using is being phased out soon (wah wah :weary_face:), so I pretty much had to redo the whole thing. It also made me thankful because I feel like the ODK Central API documentation is way clearer than the new Todoist v1 API documentation, and ChatGPT took me on several not so fun rides…lol

WELL DONE ODK Team for good API Documentation with examples! :clap::clap::clap:

Screen Shots

The first ODK Collect Screenshot on the left is a group of questions for filtering a big list of tasks by either:

  1. Area of the Farm
  2. Quarter of the Year
  3. Priority

Each of these 3 filters are populated by info from todoist from either a project name, priority, or a label. Overall I’m only fetching tasks in todoist that match a todoist filter.

1 Like