Creating Checklists with Airtable and Zapier


#1

While answering a question on the forum about Checklists, I decided I would write a blog post about how to use Zapier to automatically create Checklists, assign them to a project and then to a collaborator…

Creating Checklists with Airtable and Zapier

and here’s a link to the base:

I hope you find this useful!!


#2

Maybe I missed something, but I don’t see in the zap where the new tasks are created.


#3

Hi @Philip_Bassham

Thank you for pointing that out - the final section of the process was missing - no idea how!

I’ve updated the page and it should be there now!

Julian


#4

Thanks! I really appreciate it. I am pretty new to Airtable and have been trying for weeks to figure out a good way to get something working to manage recurring workflows and projects! So, this is great! Haven’t really heavily tested it, of course, but I have high hopes. Really appreciate you writing it out!


#5

One other question. At the end you say

There is a limitation in this - Zapier will only Loop around 25 records in an array like this and so if there are more than this number it could fail. However, there is a way around this - and it just adds one more code step to the Zap.

What is that other code step?


#6

Hi @Philip_Bassham

The solution to this is to write a code step in Zapier which splits the incoming string of comma separated variables into blocks of 24 and then to return these in an array of objects. This causes the following steps (starting withe the routing which creates an array of objects with a single record id in each) to run for each group of records. So if you split the original incoming data into 24 such blocks and each of these has 24 individual records then the subsequent processes will run for 24 x 24 = 576 records. Here is a sample of suitable code in Javascript:

//this splits the articles up into chunks of 24 to avoid the Zapier limit…

if (inputData.allArticles == null) {
allArticlesArray = [];
} else {
var allArticlesArray = inputData.allArticles.split(",");
}

var outputElement = [];
var outputElementItem = “”;
var articleNos = allArticlesArray.length;
var i=0;

while (allArticlesArray.length > 0) {
outputElementItem = allArticlesArray.slice(0,24);
var outputElementItemObj = {}
outputElementItemObj.record = outputElementItem
allArticlesArray.splice(0,24);
outputElement.push(outputElementItemObj);
}

return(outputElement);

The input Variable allArticles may have up to 576 comma separated elements, and the array of Objects, outputElement, is an array of objects each containing comma separated lists of up to 24 of these.

You could put some error trapping code in here (for example to check the original allArticles variable doesn’t contain more that 576 items).

I haven’t yet had a need to try, but I assume you could create another ‘layer’ here so that you could process 24x24x24 (13,824) in a single Zap - and so on.


#7

Didn’t work for me

Testing in Zapier at step three did not work. Not sure why.

Bargle. We searched but could not find a matching record. :frowning: Details:
Nothing could be found for the search.

Any Suggestions


#8

Hi @Don_Howden

The most likely reason for this is that the project you’re picking up doesn’t have any values in the Checklist Items field - although I’m not 100% certain the Zap step would be triggered then to be honest. Have you tried entering another project and refreshing the test of all the Zap steps?


#9

Thanks for the explanation. I am actually having a bit of trouble with the original code now and it is not working any more in Zapier for some reason.

I think it may have to do with some upcoming updates to how Zapier processes arrays? They call it “Line item support” Apparently, now when Zapier receives an array it will do the following steps for each item in the array, which is the goal of this code, yes?

But I think the input has to come in through a Webhook GET request direct from the Airtable API rather than the native Airtable Zap in order to process it as an array, rather than just getting the first record found.

Problem is, currently, Zapier is also having issues processing Webhook requests for me right now from Airtable, so I can’t really test it.


#10

Strange - I’ve checked Zapier’s Code Step documentation and they still talk about Arrays of Objects causing following steps to run for each object in the array - and I haven’t had any reports from clients that stuff isn’t working.

Reading about Line Items, I suspect this will only be implemented by apps where the parent and child records are of a known structure (i.e. an accounts system like Zero) so I’m not certain how this would effect the generic feature around arrays of objects (unless there’s a bug in Zapier).


#11

I think you are right about the Line Items. The Trigger app and the Result app both need to support them for it to do what your code accomplishes.

Hopefully Airtable will update their triggers!

Speaking of your code, I think there was a bug somewhere in Zapier for a week, but its working again for me now. Though when I try to add this second step, I also get an error.


#12

I found the issue. It is that the quotes got formatted incorrectly somewhere along the way on this line. Replace them and it works fine.

var outputElementItem = "";

#13

Glad it’s working again!