S23-E07 – BuiltOnAir Live Podcast Full Show

To get all the latest videos and demonstrations from the BuiltOnAir Podcast, subscribe and get notified on our Youtube channel here and our newsletter/community here.

FULL EPISODE VIDEO

Watch the full video of the show.

FULL EPISODE AUDIO

Listen to the full Audio podcast for this episode here. Or add to your favorite podcast player

Listen On: Apple | Overcast | Spotify


The BuiltOnAir Podcast is Sponsored by On2Air – Integrations and App extensions to run your business operations in Airtable.

Start a FREE 14 Day Trial of On2Air Now


In This Episode

Welcome to the BuiltOnAir Podcast, the live show. The BuiltOnAir Podcast is a live weekly show highlighting everything happening in the Airtable world.

Check us out at BuiltOnAir.com. Join our community, join our Slack Channel, and meet your fellow Airtable fans.

Episode Summary

In this episode, Dan and Kamille discuss Airtable’s recent outage, which lasted for several hours. They also dive into the introduction of HyperAgent, a new tool that allows users to create custom AI-powered agents. Kamille shares a script she built to help manage naming conventions in Airtable, making it easier to keep track of linked records and lookups. The episode also covers the differences between SuperAgent and HyperAgent, and how HyperAgent is more closely tied to Airtable.

⏱ Timeline:

  • 4:14 - Airtable outage discussion
  • 5:00 - Introduction of HyperAgent
  • 10:34 - Kamille’s script for managing naming conventions
  • 17:32 - Script demonstration
  • 25:40 - Script explanation and customization options

Full Transcription

The full transcription for the show can be found here:

[00:00:01]
Welcome back to the BuiltOnAir podcast.

[00:00:05] We are in season twenty three,

[00:00:08] episode seven,

[00:00:10] coming to the end of this season after

[00:00:12] next week.

[00:00:13] Got myself, Dan Fellars and Kamille Parks.

[00:00:16] Welcome back, Kamille.

[00:00:18] Hello.

[00:00:20] And Ale Losa is unavailable for today,

[00:00:23] should be back next week.

[00:00:24] So it’s going to be the two of

[00:00:26] us today.

[00:00:28] And we are post

[00:00:31] apocAllipse,

[00:00:32] we survived the great outage of February,

[00:00:34] the twenty-sixth.

[00:00:37] Outage for, do we know the full length?

[00:00:42] I was in like an all day meeting

[00:00:44] that morning and then about eleven Pacific

[00:00:48] Standard,

[00:00:49] I checked Airtable was not loading.

[00:00:52] I was like, I’ll go to early lunch.

[00:00:54] It’ll be fine.

[00:00:55] Twelve o’clock.

[00:00:56] Nope.

[00:00:57] One o’clock.

[00:00:57] Nope.

[00:00:58] It wasn’t back up for me until four

[00:01:00] thirty Pacific Standard.

[00:01:01] So that’s at least five,

[00:01:03] probably upwards of six hours for most.

[00:01:06] Yeah.

[00:01:07] Yeah.

[00:01:07] That’s probably about the time frame.

[00:01:11] Yeah, I was it was crazy.

[00:01:13] Yeah, I was similar.

[00:01:15] I was I noticed it was

[00:01:17] down I was like okay I’ve got a

[00:01:19] lunch appointment I went out for lunch and

[00:01:22] I was like oh for sure it’ll be

[00:01:23] back when I come back no so as

[00:01:28] far as I can remember this is by

[00:01:30] far the longest outage we’ve had time wise

[00:01:35] can you remember when it was at this

[00:01:37] length

[00:01:38] I haven’t remembered a longer outage.

[00:01:41] I did see a post on Reddit where

[00:01:43] someone was, and rightfully so,

[00:01:46] a bit worried.

[00:01:47] They were like, hey, I’m new to Airtable.

[00:01:49] Is this a common thing?

[00:01:50] And a lot of people said, no,

[00:01:52] it never goes down.

[00:01:53] I don’t agree with that.

[00:01:55] Airtable has a substantial outage probably

[00:01:59] once every six months, I would say.

[00:02:02] But I think it’s rare for every base

[00:02:04] to be down.

[00:02:05] That was this past Friday.

[00:02:07] Oftentimes the outage is several bases are

[00:02:10] down or several bases are slow,

[00:02:12] which affects quite a few of the

[00:02:15] customers, perhaps not all.

[00:02:19] This one on Friday, tremendously bad.

[00:02:22] The homepage didn’t load.

[00:02:24] Airtable.com with the marketing like join

[00:02:28] Airtable.

[00:02:29] That page did not load,

[00:02:30] which means it was at the server level.

[00:02:34] Yeah.

[00:02:35] It was, it was down.

[00:02:38] Yeah.

[00:02:38] Yeah, for sure.

[00:02:39] So yeah, major outage.

[00:02:43] Um,

[00:02:44] I don’t know that they’ve publicly stated

[00:02:46] what went down.

[00:02:48] I don’t believe it was AWS,

[00:02:51] which I know they run on.

[00:02:53] I don’t think there was a major AWS

[00:02:55] outage or anything.

[00:02:57] I think it was Airtable specific.

[00:03:00] In the early days,

[00:03:02] it would go down quite a bit more

[00:03:04] across the board like this,

[00:03:06] but not enough duration.

[00:03:08] But they definitely stabilized it for a

[00:03:12] while.

[00:03:13] whereas more isolated issues.

[00:03:16] But yeah, this was a big one.

[00:03:18] I’m sure it was all hands on deck

[00:03:21] and maybe there was a correlation.

[00:03:23] Let’s talk about,

[00:03:24] let me bring this up from the company

[00:03:27] that brought you SuperAgent that we’ve

[00:03:29] talked about before.

[00:03:31] On that very same day,

[00:03:34] they announced HyperAgent.

[00:03:36] So Airtable now owns SuperAgent and

[00:03:39] HyperAgent.

[00:03:40] What is the difference you ask?

[00:03:43] I don’t know.

[00:03:45] There is a difference.

[00:03:47] The one difference is HyperAgent is not

[00:03:48] actually live.

[00:03:49] You have to join the wait list,

[00:03:51] so you can’t actually try it.

[00:03:55] But there is a video intro here.

[00:04:00] You want to explain the difference?

[00:04:02] Yeah.

[00:04:03] So to the best of my ability,

[00:04:05] I believe SuperAgent is one tool that

[00:04:10] allows you to auto-generate

[00:04:13] Um, content that could be a website.

[00:04:15] It could be a report.

[00:04:17] It could be, I think a presentation deck,

[00:04:19] et cetera.

[00:04:20] It is specifically designed to do that

[00:04:22] task with a couple of variations of what

[00:04:25] the final output might look like,

[00:04:27] but that is generally what super agent is

[00:04:29] for, um, in.

[00:04:32] creating that content package,

[00:04:34] it will do research specifically about

[00:04:36] whatever prompt you give it and then

[00:04:38] design a relatively nice looking report or

[00:04:43] slides or whatever you had it generate.

[00:04:46] HyperAgent is

[00:04:50] It’s like a place where you can set

[00:04:52] up multiple different agents that can do

[00:04:55] whatever you define them as being.

[00:04:57] So rather than being a pre-built solution

[00:05:00] specifically for research and I’ll just

[00:05:03] say report generation,

[00:05:05] HyperAgent is more like you create as many

[00:05:08] agents as you need or as many as

[00:05:10] your plan would allow.

[00:05:12] And each of those agents can have a

[00:05:13] predefined task that you give it in order

[00:05:16] to create a somewhat regular output in a

[00:05:20] format that’s pleasing to you.

[00:05:21] So it’s not necessarily create a website.

[00:05:25] It might be research this topic and give

[00:05:30] me a summarized output that you can take

[00:05:32] and make a report on your own,

[00:05:34] for example.

[00:05:35] Yeah.

[00:05:37] Yeah, that’s good.

[00:05:40] And yeah, so you can watch the video.

[00:05:45] Turn the sound off.

[00:05:48] So yeah,

[00:05:48] you can go through this video and then

[00:05:50] there’s also Howie has his own Substack.

[00:05:55] This was the first I’d seen of Howie’s

[00:05:58] Hubstack.

[00:05:58] Howie is the CEO of Airtable and makes

[00:06:03] a pretty big, bold claim here.

[00:06:05] AGI is here, now Harnessit.

[00:06:08] That might be a little bit of a

[00:06:10] reach.

[00:06:10] I don’t think we’re quite there yet,

[00:06:12] but this is their attempt at that.

[00:06:18] So yeah, so here he kind of explains.

[00:06:21] And it sounds like Howie Liu is heavily

[00:06:23] involved with the development of this.

[00:06:26] So it definitely has his fingerprints in

[00:06:29] the building of this.

[00:06:33] So definitely something he’s going to be

[00:06:37] pushing.

[00:06:41] And yeah,

[00:06:41] so it’ll be interesting to see how this

[00:06:43] rolls out.

[00:06:43] So I signed up for the waiting list.

[00:06:46] I’ve not gotten access yet.

[00:06:47] We’ll see when that happens.

[00:06:51] You can show a sneak peek of it.

[00:06:56] Yeah, we’ll check it out.

[00:06:58] Let’s see if… Okay,

[00:07:01] that was his first post.

[00:07:02] So this is a new sub stack for

[00:07:05] Howie.

[00:07:07] so the another difference between super

[00:07:10] agent and hyper agent was when super agent

[00:07:14] launched and still today i think if you

[00:07:16] scroll through their website there’s no

[00:07:18] indication that its parent company is i

[00:07:21] want to say form a grid which is

[00:07:23] the same parent company that Airtable has

[00:07:26] and then if you look at the

[00:07:29] attribution in like the bottom right

[00:07:30] corner of each website.

[00:07:33] This one says Airtable and the other one

[00:07:35] says SuperAgent.

[00:07:36] So SuperAgent is truly a standalone

[00:07:40] business entity that happens to have the

[00:07:42] same CEO basically.

[00:07:45] HyperAgent has a direct connection to

[00:07:48] Airtable.

[00:07:49] It’s one of the data sources that you

[00:07:50] can add to it.

[00:07:53] And Airtable is mentioned by name on the

[00:07:56] website.

[00:07:56] And it’s copyrighted, apparently,

[00:07:58] by Airtable.

[00:07:59] So there’s much more of a connection

[00:08:02] between HyperAgent and Airtable than there

[00:08:04] is to SuperAgent and Airtable,

[00:08:06] which I thought was interesting.

[00:08:08] Yeah, that is an interesting point.

[00:08:11] Yeah, you wonder how.

[00:08:13] Yeah,

[00:08:13] because this is much more in line with

[00:08:16] the workflow of Airtable.

[00:08:20] The best way I could kind of describe

[00:08:22] it, it’s not the same,

[00:08:24] but it is similar to in Airtable,

[00:08:26] you can create an automation and that

[00:08:28] automation can follow a series of steps.

[00:08:32] This is similar to that,

[00:08:34] except it’s with AI.

[00:08:35] So the AI is following the steps that

[00:08:38] you tell it to do.

[00:08:39] Yeah.

[00:08:41] Very true.

[00:08:42] Okay, so we’ll be following this,

[00:08:44] see how it progresses,

[00:08:46] see how it changes Airtable,

[00:08:50] what the integrations look like.

[00:08:55] Very cool stuff.

[00:08:57] All right.

[00:08:58] On today’s show,

[00:08:59] we’re going to learn some tips and tricks

[00:09:04] from Kamille on how to improve our naming

[00:09:07] conventions,

[00:09:08] stay clean and tight with our stuff.

[00:09:11] I’m going to share your screen.

[00:09:17] There you go.

[00:09:18] Yeah,

[00:09:19] so I had to deal with what I’m

[00:09:23] about to describe quite a bit in my

[00:09:25] sort of day to day working with Airtable.

[00:09:29] This is really about when you have one

[00:09:32] or more tables

[00:09:34] linked together,

[00:09:35] and you end up with fields that look

[00:09:38] like this.

[00:09:39] The first field,

[00:09:40] if you don’t name them as you go,

[00:09:42] is going to be named after the table

[00:09:44] that they’re connected to.

[00:09:45] And if you add a second link,

[00:09:47] it’s going to be that same name too,

[00:09:50] and then three.

[00:09:51] And then if you add lookups against them,

[00:09:54] they’re going to follow whatever the

[00:09:55] linked record field is named at the time

[00:09:58] and whatever field from the other table

[00:10:01] that you’re pulling in.

[00:10:02] So in this case, email.

[00:10:05] What is helpful, I feel,

[00:10:09] is going back and renaming these fields to

[00:10:13] be more specific.

[00:10:15] So I don’t want context, context two,

[00:10:19] context three.

[00:10:20] I want these to say what they are.

[00:10:23] And one of the issues with that

[00:10:25] is it doesn’t take too much time to

[00:10:27] go back and rename these fields over here.

[00:10:30] But then going back to the context table,

[00:10:34] you’ll notice productions,

[00:10:36] productions two and productions three.

[00:10:37] So I have the same problem,

[00:10:39] but you know,

[00:10:41] what if productions two doesn’t

[00:10:45] necessarily link to context two?

[00:10:48] What if I did these kind of a

[00:10:49] little bit out of order?

[00:10:50] Well, it’s,

[00:10:53] At least if you’re on, I think,

[00:10:56] business plan or higher,

[00:10:57] you have the dependency checker.

[00:10:58] So I could see, oh,

[00:11:00] this is context too.

[00:11:01] So I know what to rename it to.

[00:11:05] Once I fix it on the productions table,

[00:11:09] I built a tool that makes managing this

[00:11:12] a little bit easier.

[00:11:14] So the general idea is you pick one

[00:11:16] table to start with and you adjust the

[00:11:20] fields to what they should be.

[00:11:21] So let’s say this is the director of

[00:11:26] the movie,

[00:11:27] and this is the writer of the movie,

[00:11:30] and this was the producer of the movie.

[00:11:35] I could go through to the context table

[00:11:37] and make that same adjustment,

[00:11:40] Or I could use one of the scripts

[00:11:41] that I wrote.

[00:11:42] And I notice Airtable is still saving,

[00:11:44] so I’m going to let it finish thinking

[00:11:46] before I continue.

[00:11:49] In the meantime,

[00:11:50] I’m going to open up my extensions panel.

[00:11:53] This script is available on my GitHub,

[00:11:55] so you’ll be able to find the link

[00:11:59] and you should be able to copy and

[00:12:00] paste as is.

[00:12:02] I built it as almost like a wizard

[00:12:05] where it’s going to ask you questions as

[00:12:07] you go.

[00:12:07] So there’s no settings that you need to

[00:12:10] configure with this script and you

[00:12:11] shouldn’t need to change anything in the

[00:12:14] body of the script except for the naming

[00:12:16] conventions, which we’ll get to.

[00:12:18] It’s finally done saving,

[00:12:20] so I’m just going to run this.

[00:12:23] So first question,

[00:12:25] select a table that has fields you want

[00:12:27] to rename.

[00:12:27] The table should have at least one linked

[00:12:29] record field.

[00:12:30] So in this case,

[00:12:31] I want to rename these production link

[00:12:34] fields.

[00:12:34] So I’m going to select the context table

[00:12:37] because that’s where the fields are.

[00:12:39] Now,

[00:12:39] what the script has just done is it

[00:12:41] looked and saw that the contacts table is

[00:12:43] linked to both productions and companies.

[00:12:47] Obviously, the production one’s over here,

[00:12:49] but company.

[00:12:50] and CEO, both linked to companies.

[00:12:52] So the question is,

[00:12:54] what relationship do we want to tackle?

[00:12:58] And you’ll see after I finish with

[00:13:00] productions,

[00:13:01] I can go back and do companies without

[00:13:03] stopping the script and starting over.

[00:13:05] So I’m going to do productions,

[00:13:07] and then it’s going to ask me the

[00:13:09] naming convention for my linked record

[00:13:11] fields.

[00:13:11] So in this case, I know that…

[00:13:18] I want this field name to equal the

[00:13:22] field name that it is over here,

[00:13:23] because it’s the same sort of

[00:13:25] relationship.

[00:13:26] So in this case,

[00:13:27] I could do link field name.

[00:13:29] And everything is wrapped in double curly

[00:13:32] braces.

[00:13:33] That is similar to a templating language

[00:13:36] known as

[00:13:39] There’s a couple others that do this as

[00:13:40] well.

[00:13:42] This just lets the script do kind of

[00:13:44] a find and replace as these.

[00:13:47] There are a couple of different.

[00:13:50] inputs that you could do.

[00:13:52] This one is the most straightforward,

[00:13:53] just match the name on the other table.

[00:13:55] The other one is if I wanted to

[00:13:58] say productions dash,

[00:14:00] and then the name on the other table,

[00:14:03] that’s what this one is.

[00:14:04] And maybe I’ll do that one.

[00:14:05] So it’s a little bit more clear.

[00:14:07] And then this one is pretty similar,

[00:14:09] except instead of it being a dash,

[00:14:11] it puts things in parentheses.

[00:14:13] This is the same thing but reversed.

[00:14:14] The link field comes first.

[00:14:16] And this one allows you to put in

[00:14:18] a custom suffix.

[00:14:19] So if you don’t want it to say

[00:14:22] dash table name or what have you,

[00:14:24] you could have it say dash whatever or

[00:14:27] slash whatever, whatever you want.

[00:14:30] So I’m going to pick this one actually.

[00:14:33] And now it’s asking,

[00:14:34] what should I name my lookup fields?

[00:14:39] I don’t have any lookup fields,

[00:14:40] so I’m just going to skip this last

[00:14:42] one is roll up fields.

[00:14:43] I do have a roll up field so

[00:14:45] this one I can do.

[00:14:47] I’m not going to do that though.

[00:14:48] I’ll come back to that later and then

[00:14:50] it’s going to show me a summary of

[00:14:52] based on the options I just clicked

[00:14:53] through what the current name of the

[00:14:56] fields are and what the new name of

[00:14:58] the field will be.

[00:14:59] So if I don’t actually like this,

[00:15:01] I could say no and then start over

[00:15:03] or rename them myself if my script doesn’t

[00:15:06] save me any time.

[00:15:08] But in this case, this looks about right.

[00:15:10] Productions director, productions writer,

[00:15:12] productions producer.

[00:15:13] So I’m going to say yes.

[00:15:15] And it’s gone through.

[00:15:17] I’m going to have to make these actually

[00:15:18] a little bit taller so you could see.

[00:15:20] It’s gone through and renamed them.

[00:15:23] It’s pretty fast,

[00:15:24] depending on the number of fields it needs

[00:15:25] to rename.

[00:15:26] It took less than a second,

[00:15:27] it looked like,

[00:15:28] to go through and rename those.

[00:15:31] And now it’s saying, okay, well,

[00:15:32] we’ve finished your first linked

[00:15:34] relationship with productions.

[00:15:36] Do you want to rename any of the

[00:15:38] fields from companies?

[00:15:39] I’m not going to,

[00:15:40] but I’ll click through and you’ll notice

[00:15:41] it’s the exact same options.

[00:15:43] These fields are already named the way

[00:15:45] that they need to be.

[00:15:45] So I could say skip.

[00:15:47] I could say skip.

[00:15:48] I could say skip.

[00:15:49] It’s going to notice, hey,

[00:15:49] there’s no changes.

[00:15:50] So it’s going to say, well,

[00:15:52] we’re done then.

[00:15:53] And that is the basics of the script

[00:15:56] itself.

[00:15:58] I’m going to go back to my productions

[00:16:01] table and show you an example of adjusting

[00:16:04] lookup fields.

[00:16:04] So these lookups were created before I

[00:16:09] renamed the linked record field.

[00:16:11] So they still say context, context two,

[00:16:13] context three.

[00:16:14] It’s the same sort of issue that I

[00:16:17] want to correct.

[00:16:19] I want…

[00:16:21] these lookup fields to be more

[00:16:23] descriptive.

[00:16:23] Which contact is this coming from?

[00:16:25] It’s coming from the director.

[00:16:27] So I’ll just run this again and I’ll

[00:16:29] say productions.

[00:16:31] And I want to rename fields that have

[00:16:33] to do with the contacts linkage.

[00:16:35] I don’t want to rename any of my

[00:16:37] linked record fields, so I’ll skip this.

[00:16:40] And now for lookups,

[00:16:41] I do want to rename them.

[00:16:42] What I want them to be is this

[00:16:46] one here is the sort of standard naming

[00:16:48] convention that Airtable will give you for

[00:16:51] lookup fields when you create them.

[00:16:53] You could see the other field name,

[00:16:56] parentheses, from,

[00:16:58] and then what the name of the linked

[00:16:59] record field is.

[00:17:01] That’s the same naming convention.

[00:17:02] And I’m going to keep that naming

[00:17:03] convention.

[00:17:04] I’m just going to have it update with

[00:17:05] what the link field currently is.

[00:17:08] I don’t have any roll up,

[00:17:09] so I’m going to skip.

[00:17:12] And now you can see instead of email

[00:17:13] from contacts, it’s email from director,

[00:17:16] writer, producer, which is great.

[00:17:18] I’m going to hit yes,

[00:17:19] and it’s going to be done.

[00:17:21] So again,

[00:17:21] it knows productions is only linked to

[00:17:23] contacts.

[00:17:24] It didn’t bother asking about companies

[00:17:26] because productions aren’t linked to

[00:17:28] companies in my base.

[00:17:30] So if I scroll to the right,

[00:17:31] email from writer, email from producer,

[00:17:34] and then email from director is over here.

[00:17:37] So that’s what the script does.

[00:17:40] Any questions?

[00:17:42] Very cool.

[00:17:43] No, that is awesome.

[00:17:44] So do you need to do it in

[00:17:47] a two-step process?

[00:17:48] So if you rename the field and then

[00:17:51] you want to rename the lookups to match

[00:17:53] that, will it do it?

[00:17:56] It’ll pick up the new name and then

[00:17:59] update the roll-ups and lookups?

[00:18:01] Unfortunately, it is a two-step process.

[00:18:04] So what Dan just suggested was I went

[00:18:07] in and I renamed each of

[00:18:12] uh or no let’s say that i was

[00:18:14] back over here because this is the one

[00:18:16] where i renamed the linked record field

[00:18:19] and um you’ll notice that this uh roll

[00:18:24] up is still saying from productions rather

[00:18:26] than from productions director which is

[00:18:28] the name i can go back and make

[00:18:32] this

[00:18:33] you know, wrong again.

[00:18:36] And I can run this and I could

[00:18:37] say,

[00:18:37] I want to rename fields on the context

[00:18:40] table.

[00:18:41] And I want to rename them based on

[00:18:43] their connection to the productions table.

[00:18:46] I think I chose this one.

[00:18:49] There’s no lookup, so I can skip it.

[00:18:51] For rollups, if I want to correct them,

[00:18:54] it’s not going to realize that this

[00:18:59] productions field is going to be renamed

[00:19:02] to this.

[00:19:04] It did notice that there’s a difference

[00:19:06] because roll ups add the word roll up

[00:19:08] in the default naming convention.

[00:19:12] So it’s removing the word roll up.

[00:19:13] That’s why it’s coming through as a

[00:19:15] potential change.

[00:19:16] But it’s still saying productions instead

[00:19:18] of productions dash director.

[00:19:20] That is an improvement I could make to

[00:19:23] the script because it is going in

[00:19:25] sequence.

[00:19:25] It starts with the linked record fields.

[00:19:28] So by the time it gets to look

[00:19:30] up in rollups, in theory,

[00:19:32] it could know what the new name is.

[00:19:37] But yeah, that’s something I can do.

[00:19:41] That’s not something the script currently

[00:19:42] does.

[00:19:43] Fair enough.

[00:19:44] No, this is super helpful.

[00:19:50] So that is what the script does and

[00:19:53] one potential improvement.

[00:19:55] So I’ll just go through how the script

[00:19:57] is sort of set up.

[00:19:59] Again,

[00:19:59] the only settings up at the top is

[00:20:01] just, you know,

[00:20:02] giving it a name and a description.

[00:20:04] Everything else is fully sort of set in

[00:20:08] the writing of the script itself.

[00:20:11] These bits right here are the parts that

[00:20:13] someone might want to customize to their

[00:20:16] own liking.

[00:20:17] I would say that you should keep the

[00:20:20] option skip at the end because that allows

[00:20:22] you to say,

[00:20:23] I don’t want to rename this type of

[00:20:25] field at all.

[00:20:28] But all of the other ones are fair

[00:20:30] game.

[00:20:31] So what this is doing is it’s really

[00:20:33] just all this is plain text.

[00:20:36] But I thought of what are the variables

[00:20:38] one might want to insert into a linked

[00:20:40] record field or look up or roll up.

[00:20:45] technically count fields could be you

[00:20:49] could slide count fields in here actually

[00:20:52] pretty easily and I’ll kind of talk

[00:20:53] through how one might do that this

[00:20:55] currently doesn’t do count fields but

[00:21:00] I’ll talk through what each of the

[00:21:01] variable names kind of mean.

[00:21:03] So the link field name,

[00:21:07] that means if I’m talking about renaming a

[00:21:12] linked record field, which this is,

[00:21:16] This variable name is saying pull from

[00:21:19] whatever inverse link there is for it,

[00:21:25] which in this case is director,

[00:21:27] pull the name of this field

[00:21:32] into the name of this field that’s the

[00:21:34] first one table name in this case is

[00:21:37] referring to the table name is productions

[00:21:41] and then dash link field name which of

[00:21:44] course would be director for this one this

[00:21:46] is the same except it’s with a parentheses

[00:21:48] instead of a dash and that’s really where

[00:21:51] you could start to customize if you want

[00:21:54] uh slashes if you want to use a

[00:21:56] plus or a colon or a semicolon

[00:21:59] or a pipe character.

[00:22:01] The list goes on.

[00:22:02] This is where you could customize to

[00:22:04] whatever your team or company prefers to

[00:22:07] name things as.

[00:22:09] This should save you some time in that

[00:22:11] regard.

[00:22:13] This one is the same,

[00:22:14] except it’s just the other way around.

[00:22:16] Link field comes first,

[00:22:17] and then comes the table name.

[00:22:19] The last one is suffix,

[00:22:21] which I didn’t show as an example,

[00:22:22] but I can.

[00:22:23] It just gives you an opportunity of take

[00:22:26] the other link field and then a text

[00:22:30] input would come up where you type in

[00:22:32] your own suffix.

[00:22:33] You do have to put a leading space

[00:22:36] if you want a space to be there.

[00:22:38] Otherwise,

[00:22:41] it’s just going to have it run directly

[00:22:43] into the name of the link record field.

[00:22:47] The options for lookup fields are pretty

[00:22:50] similar.

[00:22:51] The main difference is instead of link

[00:22:54] field name,

[00:22:55] I’m saying reference field name.

[00:22:58] So in this case,

[00:22:59] this is a rollup of the field release

[00:23:01] year on the productions table.

[00:23:04] The reference field is release year.

[00:23:07] What field are you bringing in to this

[00:23:09] table?

[00:23:11] And then suffix, we just talked about.

[00:23:13] Link field name, in this case,

[00:23:15] I’m pulling from this link field.

[00:23:18] This is what it’s referring to in this

[00:23:23] context.

[00:23:24] And those are really the only two

[00:23:26] variables for lookups or for rollups.

[00:23:30] You could get the link field table name,

[00:23:35] maybe.

[00:23:37] You could,

[00:23:38] which the way that this is written,

[00:23:42] you might be able to just slide that

[00:23:45] in, actually,

[00:23:46] just add in a new option that includes

[00:23:50] table name.

[00:23:50] I think the way that the script as

[00:23:52] a whole is written,

[00:23:53] it’s always pulling from whatever this

[00:23:56] table would be if you’re looking at this

[00:23:59] field, this set of fields as an example.

[00:24:03] Something we could check.

[00:24:04] But just looking at the rest of the

[00:24:06] script as a whole,

[00:24:08] what we’re doing is up at the top,

[00:24:11] you select a field or you select a

[00:24:13] table, I should say,

[00:24:15] and then that’s this part,

[00:24:18] input table async.

[00:24:19] And then this bit of code is saying,

[00:24:21] all right,

[00:24:22] get all of the fields on table A

[00:24:25] that are a link to another record.

[00:24:28] That way I can see what tables are

[00:24:31] relevant to those link fields.

[00:24:33] And that’s where you get this array of

[00:24:39] what are the relevant tables that you

[00:24:41] could sort of cycle through.

[00:24:45] So now we’re

[00:24:48] After you click one,

[00:24:49] we’re looping through each of the tables

[00:24:54] that you can possibly select on.

[00:24:57] And from that point,

[00:24:59] that’s where you can start to make those

[00:25:01] changes.

[00:25:04] where you could start to make those

[00:25:06] selections.

[00:25:06] So I’m going to stop this.

[00:25:10] I think I’m going to run this again

[00:25:12] from contacts because I do want to show

[00:25:14] what the suffix option is.

[00:25:20] So if I choose any option that contains

[00:25:23] the variable suffix,

[00:25:25] I can add something to the end of

[00:25:27] it.

[00:25:27] So I’m going to say

[00:25:32] X really simple,

[00:25:33] just to demonstrate what it does, skip,

[00:25:35] skip.

[00:25:36] And then you could see here,

[00:25:38] it took the name of the opposing linked

[00:25:42] record field,

[00:25:43] added a space and then added an X.

[00:25:45] Cause that’s what I told it to do.

[00:25:48] And that works for lookups and rollups as

[00:25:50] well.

[00:25:52] And I love like.

[00:25:54] You know, like Airtable,

[00:25:56] their scripting extension does not support

[00:26:00] like dropdown fields.

[00:26:01] So I love like the use of buttons

[00:26:03] to showcase how you would allow for like

[00:26:08] selecting

[00:26:10] Yeah, they have the pre-built dropdowns,

[00:26:13] but only for tables and fields and views.

[00:26:18] You can’t make your own custom dropdown,

[00:26:21] which is unfortunate.

[00:26:23] So yeah,

[00:26:24] that’s why I’m using buttons for that.

[00:26:26] I would probably prefer to use a dropdown

[00:26:29] just because…

[00:26:31] If you have a lot of tables or

[00:26:34] you have a lot of like naming conventions,

[00:26:35] for example, it kind of, to me,

[00:26:38] if I go through this again,

[00:26:41] this feels a little messy.

[00:26:42] I wish they would at least be all

[00:26:44] on their own line because to me,

[00:26:46] this is a little hard to read.

[00:26:48] If it was a dropdown,

[00:26:49] I think it would be a better user

[00:26:51] experience,

[00:26:52] but there’s only so much I could do.

[00:26:54] Yeah.

[00:26:56] But there you see,

[00:26:57] you can color the skip button to stand

[00:27:00] out.

[00:27:05] Yeah,

[00:27:05] so that is helpful in that you could

[00:27:07] say, well, obviously,

[00:27:09] the buttons that are red are going to

[00:27:12] abort the option, basically, just to stop.

[00:27:16] You could always use the Stop button that

[00:27:18] appears in the top right.

[00:27:19] But the reason I added these here is

[00:27:21] because if you had, let’s say,

[00:27:24] one table linked to ten other tables,

[00:27:27] and when you’re making that selection at

[00:27:29] the top,

[00:27:30] you accidentally select the wrong one,

[00:27:33] having baked in sort of skip buttons

[00:27:35] within the script lets you not start all

[00:27:38] the way over.

[00:27:39] You could just say, never mind.

[00:27:40] I don’t care about context.

[00:27:41] I really want to rename companies,

[00:27:43] for example.

[00:27:44] Yep.

[00:27:46] Nice.

[00:27:46] Yeah, that’s good.

[00:27:50] And then, um,

[00:27:52] I’ll just sort of walk through the design

[00:27:54] of the script.

[00:27:55] It’s using two functions.

[00:28:00] Uh,

[00:28:02] there’s one function that’s embedded

[00:28:04] within this function.

[00:28:05] And this function is called three times

[00:28:07] once for link fields, once for lookups,

[00:28:10] once for rollups.

[00:28:11] If you wanted to add count fields,

[00:28:13] you would basically duplicate this line,

[00:28:15] rename it to say underscore count.

[00:28:18] And then the one thing you’d have to

[00:28:20] change is this right here.

[00:28:22] So for each time this function is called,

[00:28:25] it’s asking for what type of field are

[00:28:29] we searching for?

[00:28:31] And I believe the name for count is

[00:28:33] count,

[00:28:34] but you’ll notice that certain field types

[00:28:37] are called something you might not expect.

[00:28:40] So link to another record,

[00:28:42] which is what it’s called in the UI,

[00:28:44] it’s called multiple record links under

[00:28:47] the hood.

[00:28:48] And then lookup is called multiple lookup

[00:28:50] values.

[00:28:51] Rollup is just rollup.

[00:28:53] So I’ll just check that right here.

[00:28:55] If I search for the word count in

[00:28:57] the documentation, yep,

[00:28:59] count fields are just called count.

[00:29:01] So just as straightforward as a rollup.

[00:29:03] That’s what you would do in order to

[00:29:06] add counts to the list.

[00:29:08] And then you’d make sure to add them

[00:29:09] to this array as well.

[00:29:11] This is just combining all of the renamed

[00:29:14] fields from each of these three.

[00:29:18] function calls.

[00:29:20] And then the last bit is saying,

[00:29:22] did anything change?

[00:29:24] If so,

[00:29:26] put it in a table so people can

[00:29:28] like preview the output before you commit

[00:29:31] that change.

[00:29:33] And then this is a function that’s like,

[00:29:38] if someone says yes,

[00:29:39] these are to be renamed, rename them.

[00:29:42] If they say no, skip.

[00:29:46] So these two functions at the bottom are

[00:29:50] the ones that are doing the bulk of

[00:29:52] the work.

[00:29:53] This one is finding,

[00:29:57] based on what type of field it is,

[00:29:59] so multiple record links in this case,

[00:30:03] get the correct formatting options,

[00:30:05] so way back up at the top.

[00:30:07] I had two different options, right?

[00:30:10] And this one is relevant for linked record

[00:30:13] fields.

[00:30:13] So first part is what naming conventions

[00:30:17] are possible for this type of field.

[00:30:22] And then the next is I have to

[00:30:24] find what are the relevant fields to fill

[00:30:27] in those placeholders.

[00:30:28] It’s a record link.

[00:30:30] I need the inverse field.

[00:30:32] What is the linked record field on the

[00:30:34] other table?

[00:30:35] If it’s a lookup or a rollup,

[00:30:37] then I need the reference field,

[00:30:40] which is what is the field on this

[00:30:41] table that this is a lookup stemming from?

[00:30:46] Uh, so very similar,

[00:30:49] but slightly different things that we’re

[00:30:51] targeting.

[00:30:52] Again, if you were adding account field,

[00:30:54] you would add it to this condition here.

[00:30:58] Uh,

[00:30:58] multiple record links probably doesn’t

[00:31:00] need to be touched at all.

[00:31:03] Yeah.

[00:31:05] And then this part, real simple,

[00:31:07] take the name of whatever format the

[00:31:13] person clicked on.

[00:31:14] So if I clicked this one, for example,

[00:31:17] go through and replace all of those

[00:31:20] variables with what their actual name

[00:31:23] would be,

[00:31:24] which is determined by this block of code

[00:31:26] up here.

[00:31:27] So it’s a simple find and replace.

[00:31:31] Yeah,

[00:31:31] so there’s a table name would likely get

[00:31:34] replaced if you had that in a rollup.

[00:31:36] Yep.

[00:31:36] And suffix.

[00:31:39] Cool.

[00:31:41] Maybe you could add a prefix as well

[00:31:44] if you wanted.

[00:31:46] I don’t know why I didn’t do a

[00:31:47] prefix.

[00:31:50] I certainly could.

[00:31:54] Yeah.

[00:31:55] Yeah.

[00:31:56] Cool.

[00:31:59] Yeah, so yeah, so it’s,

[00:32:01] that’s the variables that you have to play

[00:32:04] with.

[00:32:06] And awesome.

[00:32:08] Anything else to show in here?

[00:32:11] I think so.

[00:32:13] This one was,

[00:32:15] you could check the GitHub history of it.

[00:32:18] It originally only did linked record

[00:32:20] fields,

[00:32:21] and then I went back and added lookup

[00:32:23] and rollups to it.

[00:32:25] And while doing that,

[00:32:26] I made it more function-y.

[00:32:30] My instinct is not to write

[00:32:33] based on putting everything in functions,

[00:32:36] which is best practice.

[00:32:39] So I went back and tried to clean

[00:32:40] this up to make it more readable for

[00:32:42] other folks.

[00:32:43] It probably could be more legible if I

[00:32:46] kept going.

[00:32:48] But I stopped here because this, I think,

[00:32:51] works pretty well.

[00:32:52] And it limits the amount of places that

[00:32:54] someone would have to go in and customize

[00:32:57] if you wanted to customize it.

[00:32:59] Yeah.

[00:33:01] Yeah, and something like this,

[00:33:03] Even if you like pre-configured your

[00:33:07] naming conventions could not run in

[00:33:10] automation because you can’t update the

[00:33:12] fields.

[00:33:14] Yeah.

[00:33:15] Any schema adjustment can’t be done in,

[00:33:17] in automation, which is adjustment, uh,

[00:33:20] which not great because.

[00:33:23] even if you wanted to update a single

[00:33:25] selects options,

[00:33:27] an automation action that’s like update

[00:33:30] record, that could add new select options,

[00:33:33] but a script can’t, which is…

[00:33:35] Interesting,

[00:33:36] because they’re both automations in that

[00:33:37] case.

[00:33:38] So this has to be a script extension.

[00:33:43] And the hope is that you don’t have

[00:33:44] to be running this constantly.

[00:33:46] It’s really as you’re setting up the table

[00:33:49] structure and field structure,

[00:33:51] you kind of run this once and then

[00:33:54] it’s kind of you don’t need it anymore.

[00:33:55] Yeah, because you never go back in and

[00:33:59] add more fields and stuff.

[00:34:01] Nope.

[00:34:03] What about,

[00:34:03] do you know if a custom interface

[00:34:07] extension can update?

[00:34:10] Ooh, I actually don’t know.

[00:34:16] That is a good question because I’m

[00:34:20] thinking through what the docs say.

[00:34:23] And I don’t remember there being a section

[00:34:25] about modifying table structure.

[00:34:30] Yeah, I don’t know about that.

[00:34:31] Yeah, I don’t remember that being there,

[00:34:35] at least on the old custom extensions.

[00:34:42] I made a…

[00:34:46] And I guess you could use the REST

[00:34:48] API.

[00:34:49] You could,

[00:34:51] but then it’s a whole separate thing.

[00:34:56] It’d be nice if you could perform this

[00:34:58] same sort of,

[00:35:00] function everywhere,

[00:35:03] obviously with an automation script,

[00:35:04] you wouldn’t be able to have the like

[00:35:06] buttons.

[00:35:08] Like there’s no person there to make these

[00:35:10] selections, but if you pre-configured,

[00:35:14] as you said earlier, Dan,

[00:35:15] what these options would be,

[00:35:17] you just standardized your naming

[00:35:19] convention.

[00:35:20] It’d be nice if an automation can do

[00:35:22] it for you.

[00:35:23] Um,

[00:35:24] but until then you’re kind of stuck with

[00:35:26] this.

[00:35:26] Yeah.

[00:35:27] Yeah.

[00:35:28] Cool.

[00:35:31] Very cool.

[00:35:32] This is very useful.

[00:35:33] So we will make,

[00:35:34] we’ll put that link to your GitHub.

[00:35:37] So this is,

[00:35:39] Kamille’s made this freely available for

[00:35:42] people to install into your own basis.

[00:35:44] So thank you for offering that up.

[00:35:47] Yep.

[00:35:49] And yeah, check it out.

[00:35:50] See how it works.

[00:35:51] See if there’s anything that would be

[00:35:55] useful to include in it.

[00:35:57] I’m sure Kamille would take a look at

[00:35:59] it.

[00:36:02] Cool.

[00:36:03] Well, that’s today’s show.

[00:36:05] We’ll be back next week.

[00:36:06] We’ll have a special guest next week that

[00:36:08] will come on and show some very cool

[00:36:10] stuff I’m excited for next week’s show.

[00:36:12] So check it out.

[00:36:14] Fingers crossed that Airtable will stay up

[00:36:18] week and we’ll have a productive week and

[00:36:20] we’ll see everybody next week.

[00:36:23] See ya.