Creating Checklists in Ninox
In my last blog post, I covered how to use Integromat to create user defined checklists (and, as it happens, Airtable). This time, I am going to tackle exactly the same task in Ninox, a database available in the Cloud or on Mac, iPad, iPhone and Android - this solution will work on any of these platforms!
In this Article, we are going to go through the process of automatically creating task lists in Ninox and we'll see that here, with Ninox having its own integral database language NX, that NO external services are required. If you'd like to follow this then you will need either a Ninox Cloud Account and/or App - which you can get here. You can also download the database I've created here - you can then load it into your Ninox app.
First Let's Create the Database
In this example, we're going to work on the basis of a project app as before. When a new project is created we are going to enter a checklist (from a lookup table) and Zapier will then create the tasks from the entered checklist.
The Project Table
Here's how the project table is setup:
And here are the field definitions:
This is all quite straightforward as you can see (this isn't intended to be a finished Project Management app!).
For the Checklists table we just have a Name and Notes field - and then associated Checklist Items and Projects:
This table simply contains Name and Notes fields and then shows which Checklist Items are linked to it and also which Projects. Generally I prefer to create these links in the Many (or child) side of a one to many relationship.
This table contains a Name field, who to assign the task to (a User field in this case), a number of days after today that the task is due and which Checklist it forms a part of.
With all this information, we are now in a position where Ninox has all the data it needs to generate a task and assign it to a project and collaborator in the Tasks table…
The Tasks Table
Here we see the Tasks table containing 3 tasks (which were generated by Ninox when a new Project Checklist was entered).
Now let's look at how Ninox takes this and generates the tasks automatically…
Using a 'Trigger after update' on the Checklist field to generate the Tasks:
Unlike Airtable, Ninox has a built in database scripting language which you can use to automate stuff, integrate it externally, and so on. Now I know that this sounds super scary - but it's really quite simple to learn and also and you can get into it at a gentle pace. Ninox also provide excellent support and run weekly Webinars at which you can ask questions of them directly and in public. I find this open approach quite refreshing!
Anyway, as the title suggests, we are going to use an 'after update' trigger on the Checklist field in Projects to run some script which will create our checklist / task list items:
And here's the code window open:
OK - if you're new to code in any description then this is probably making no sense - so here goes an explanation:
let thisProject := this;
This line sets up a 'variable' containing the current record (the one you just edited) - you need to do this because within the subsequent Loop which cycles through the Checklist Items, the current record is not available - whereas your variable 'thisProject' will be.
for items in select 'Checklist Items' where Checklist = thisProject.Checklist do
This is the clever bit! Here we are telling Ninox that we want to Loop through all the 'Check List' records (but only those which belong to the Checklist we have entered against the Project) and do something.
let newTask := (create Tasks); newTask.(Task := items.Name); newTask.(Project := thisProject); newTask.('Checklist Item' := items); newTask.('Assign to' := items.'Assign To'); newTask.(Notes := items.Notes); newTask.('Due Date' := today() + items.'Due After (Days)')
This section first creates a new Tasks record (and references it with a Variable called newTask) - and then sets all its fields (including the calculated Due Date).
Finally, the 'end' - this simply ends the for…do loop (you could write other code after this which would NOT run for each of the items records).
You can find out more about Ninox's language here. (I think this is by far the most useful part of Ninox's documentation)
The more I use Ninox the more impressed I become - especially when you consider that you can run your apps on phones, tablets, Macs and in the Cloud. You can find out more here.
See previous articles which describe how to achieve this with Zapier or Integromat.
I hope you've found this article useful and please feel free to make any comments or suggestions!