Help

Re: Auto Number that Resets Every Year

1260 0
cancel
Showing results for 
Search instead for 
Did you mean: 
Devon_Godfrey
5 - Automation Enthusiast
5 - Automation Enthusiast

(So, since I’m a “New” user even though I’ve used airtable for years, I can only post 5 images per post, so I’m breaking this up into multiple responses. )

Hi guys! I encountered a need to have this solved, and the nature of the problem just doesn’t mesh well with creating a formula to fix it.

Here’s a topic that was looking for a good answer on this, and one that gives an answer that I think can be improved upon:

This does require an automation, but only requires one table and two fields: a created time field and a single line text field. It doesn’t matter whether they’re primary or not.

Here’s how it works:

First, create a new base, just to play with it and get a handle on it:
2021-10-30 23_51_23-Auto Number Base_ Projects - Airtable — Mozilla Firefox
Here, I’ve created a single base and renamed the first table “Projects”, as I will use this to create a project numbering system that resets each year.

Next, I’m going to add two fields: “Date” and “Number”:
2021-10-30 23_53_26-Auto Number Base_ Projects - Airtable — Mozilla Firefox
They MUST be a date and single line text field, respectively! ( I would highly suggest that we make the date field a created time field )

15 Replies 15
AshishMore
4 - Data Explorer
4 - Data Explorer

@Devon_Godfrey  please help this is not working with latest Airtable version

 

it creates 001 all the time for all the records.

 

please help

Devon_Godfrey
5 - Automation Enthusiast
5 - Automation Enthusiast

Sorry for the late reply, I just tested it and it still works good. 

I've got it running in this base here: https://airtable.com/apps92mEiuq586J1d/shrBCb9CAL96uvnGv

Link to the form. Feel free to drop some records in here and see how the base responds in the previous link: https://airtable.com/apps92mEiuq586J1d/shrkuPkl67k8AYhdn

Attached are screenshots of the automation. 

The key things are to make sure:

- You edit the configuration variables at the top of the script to match EXACTLY the name of the fields ( configTable, configDateField, configYearAutonumberField )

- You add in input variables that pull in the field data from the created record. The names must match EXACTLY what I have in the screenshot. (createdRecord, recordDate)

As long as you get these correct, everything else should fall into place. 

Edit: Link to the script in pastebin: https://pastebin.com/HiMtb1Yv

Edit: Added an "instructions" table to the example base, that includes screenshots and how to set everything up

SpelaU
6 - Interface Innovator
6 - Interface Innovator

OMG, thanks @Devon_Godfrey ! This is excatly what I was looking for! 😉 

I solved my problem in 5 minutes but before your post I was banging my head just thinking how will I manage to do that for like a month 🙂 I thought that this will be very stressfull task so I didn't even google it until 2024 came along 🙂

Happy 2024!

SpelaU
6 - Interface Innovator
6 - Interface Innovator

Hi @Devon_Godfrey!

My script was working great until today. When I create new row, it starts with 1 again (ever if I have 19 rows in 2024). so this should be number 20 and not 1), and also for every new row, it always brings me back 1 .

Do you know why is this happening?

I check automation (your script) and some error was found. 

Error: Could not find a record with ID "rec78zGIBjPdUyQwv".

    Could not find a record with ID
at main on line 98

I created a new one but now I'm getting 1 for every new row.

SpelaU_0-1705140967882.png

 

Thanks for your help.

Spela

If you look back in my instructions for creating this:

They MUST be a date and single line text field, respectively! ( I would highly suggest that we make the date field a created time field )


A lot of it has to do with this exact issue.

So what's going on is that the script sorts the records by date, and uses that to determine the next number. Far from perfect, but if you deviate from that you get the odd behavior like you're seeing. 

The simple solution is to make sure the date field is a created time field (automatically generated), so that there's always a "progression" and you never end up with a later record being earlier than a previous record. If you need to document a specific date for each record, I'd recommend simply having a separate, editable date field for that. 

Having an editable date field is fine for testing purposes, but I wouldn't encourage it for a live environment. 

So to fix your issue:

1. Have 1 field that is the plain text, per the instructions

2. Have another field that is a created time, per the instructions and associate with the script

3. Have another, separate customizable date field that you can use for your purposes. 

Thank you for your reply @Devon_Godfrey !
I had date field as a created time field from the beginning. Actually it was a formula field: DATETIME_FORMAT(CREATED_TIME(), 'D. M. YYYY')
 
Now I created a new field as "created time" and it's working again.
Thank you for your help!