6/28/2022 – BuiltOnAir Live Podcast Full Show – S11-E09

Duration: 55 minutes

Be Sure to Subscribe to the podcast!

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. See below for segment details.

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.

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.

Todays Hosts

Alli Alosa – Hi there! I’m Alli 🙂 I’m a fine artist turned “techie” with a passion for organization and automation. I’m also proud to be a Community Leader in the Airtable forum, and a co-host of the BuiltOnAir podcast. My favorite part about being an Airtable consultant and developer is that I get to talk with people from all sorts of industries, and each project is an opportunity to learn how a business works.

Kamille Parks – I am an Airtable Community Forums Leader and the developer behind the custom Airtable app “Scheduler”, one of the winning projects in the Airtable Custom Blocks Contest now widely available on the Marketplace. I focus on building simple scripts, automations, and custom apps for Airtable that streamline data entry and everyday workflows.

Dan Fellars – I am the Founder of Openside, On2Air, and BuiltOnAir. I love automation and software. When not coding the next feature of On2Air, I love spending time with my wife and kids and golfing.

Show Segments

Round The Bases – 00:03:00 –

Scripting Time – 00:34:24 –

Explore Scripting with “Understanding Async/Await”.

For beginners to Javascript, one thing that is difficult to understand is how/when to use asnyc/await. We will explain the concept and when to use them..

Audience Questions – 00:43:49 –

Kamille Parks answers the Airtable question: “Nested IF Referencing Multiple Fields with String Return”

View the question in the community

Answer: Kamille walks through how to manage nexted Ifs

Field Focus – 00:52:29 –

A deep dive into the Advanced Linked Record Filters – Airtable recently launched ability to select specific items within Linked Records as part of the filters 

Full Segment Details

Segment: Round The Bases

Start Time: 00:03:00

Roundup of what’s happening in the Airtable communities – Airtable, BuiltOnAir, Reddit, Facebook, YouTube, and Twitter.

Segment: Scripting Time

Start Time: 00:34:24

Scripting Time: Understanding Async/Await

Explore Scripting with “Understanding Async/Await”.

For beginners to Javascript, one thing that is difficult to understand is how/when to use asnyc/await. We will explain the concept and when to use them..

Segment: Audience Questions

Start Time: 00:43:49

Airtable Question – Nested IF Referencing Multiple Fields with String Return

Kamille Parks answers the Airtable question: “Nested IF Referencing Multiple Fields with String Return”

View the question in the community

Answer: Kamille walks through how to manage nexted Ifs

Segment: Field Focus

Start Time: 00:52:29

Learn about the Advanced Linked Record Filters – Airtable recently launched ability to select specific items within Linked Records as part of the filters

A deep dive into the Advanced Linked Record Filters – Airtable recently launched ability to select specific items within Linked Records as part of the filters 

Full Transcription

The full transcription for the show can be found here:

[00:01:41] Welcome to the BuiltOnAir podcast,
[00:01:44] season eleven, episode nine.
[00:01:46] Good to be with you as always
[00:01:49] myself, Dan Fellars
[00:01:50] and Kamille and Alli are with
[00:01:52] us again. Welcome back.
[00:01:55] Good to have you with us.
[00:01:57] You got a new background behind you,
[00:02:00] shaking things up a bit for us
[00:02:02] a little bit
[00:02:04] downstairs in my living room today.
[00:02:07] Nice, very nice.
[00:02:08] So welcome everybody.
[00:02:09] We're glad you could join us
[00:02:10] every episode,
[00:02:11] we do four different segments.
[00:02:13] Keep you up to date on everything
[00:02:15] going on in the Airtable world.
[00:02:17] I'll go through quickly
[00:02:18] what we're gonna be
[00:02:19] talking about today.
[00:02:21] As always we'll go through
[00:02:22] all the different communities
[00:02:24] and share with you
[00:02:25] what's going on
[00:02:26] to keep you up to date
[00:02:27] then we will do a
[00:02:28] spotlight on On2Air, our primary sponsor.
[00:02:31] We will then do a Scripting Time getting
[00:02:34] into the code a little bit
[00:02:36] then we'll answer a question
[00:02:38] that was asked recently
[00:02:40] on the Airtable community
[00:02:42] and then a plug for our community
[00:02:45] and then finally
[00:02:47] we'll learn more about some
[00:02:49] new functionality that came to Airtable
[00:02:52] in the filters. So with that we will
[00:02:55] start with our Round the Bases
[00:02:57] is talking about the
[00:02:59] different highlights of
[00:03:00] communities and news from Airtable.
[00:03:03] So let's start, we'll just give a quick
[00:03:07] plug for the Interface Designer
[00:03:10] contest that is happening.
[00:03:12] We talked quite a bit
[00:03:13] about this last week
[00:03:15] or the week before
[00:03:16] so I won't go into too much detail but
[00:03:18] if you have something cool, worth sharing
[00:03:21] Alli I don't think you were on this,
[00:03:23] are you planning to
[00:03:24] to enter?
[00:03:27] Yeah, definitely.
[00:03:28] Alright, so there's money,
[00:03:31] free money going out.
[00:03:32] So there's three different
[00:03:34] categories, best design,
[00:03:37] best use case solution,
[00:03:38] and wildcard category.
[00:03:40] So you can submit
[00:03:41] for each category.
[00:03:43] So you can submit three different
[00:03:45] interfaces and likely get some
[00:03:48] cash prize out of that. So
[00:03:50] worth checking out
[00:03:52] it's due by the end of July,
[00:03:53] so you've still got a month left
[00:03:55] to submit for that.
[00:03:58] Alright. Airtable did put out,
[00:04:01] did make some changes.
[00:04:03] I think they've realized
[00:04:04] they do them Tuesday afternoon
[00:04:06] instead of Tuesday morning,
[00:04:08] although we might see
[00:04:09] an early Tuesday morning change that
[00:04:12] we might share with you.
[00:04:14] But one big change
[00:04:16] was apps are now extensions.
[00:04:18] So
[00:04:20] this we kinda knew
[00:04:21] this was coming.
[00:04:22] I don't think we knew
[00:04:23] exactly when it would,
[00:04:24] but it is now a change.
[00:04:27] So it's only change in name only.
[00:04:30] I don't think there
[00:04:31] was any real functionality
[00:04:33] that changed with this.
[00:04:36] so yeah, so now
[00:04:37] everything is called an extension
[00:04:40] in the marketplace.
[00:04:43] Yeah, so,
[00:04:45] you know, and this post
[00:04:46] goes over the history,
[00:04:48] they used to not exist.
[00:04:49] And then when they were added,
[00:04:51] they were called blocks. And then
[00:04:53] sometime after the blocks contest
[00:04:56] they were renamed to apps and then now
[00:04:59] they're being renamed to extensions.
[00:05:02] So this is,
[00:05:03] you know, hopefully the last name
[00:05:05] applied.
[00:05:07] I don't know,
[00:05:08] I think a lot of people weren't
[00:05:11] the biggest fans
[00:05:12] of the term app. I didn't mind it.
[00:05:15] But I think a lot of people consider
[00:05:18] the entirety of your Airtable the app.
[00:05:20] And so probably this move is to help
[00:05:24] clarify that, you know,
[00:05:26] block slash apps slash extensions
[00:05:28] are like a little piece
[00:05:30] of a puzzle and not the whole puzzle.
[00:05:32] Yeah, exactly.
[00:05:33] This is what matters to me
[00:05:36] that these two sentences here,
[00:05:38] there'll be a way to enhance your views,
[00:05:40] interfaces and more.
[00:05:41] We're working towards
[00:05:42] a future in which developers
[00:05:44] can build and share,
[00:05:44] share custom extensions
[00:05:46] across any major surface in Airtable.
[00:05:50] Yeah, that's cool.
[00:05:51] I think they talked about
[00:05:53] in one of their A. M. A. S. That you know,
[00:05:56] in a perfect world,
[00:05:57] you'd be able to create your own
[00:05:58] view type the same way you
[00:05:59] could make your own
[00:06:01] extension using their custom
[00:06:05] it's I think it's still called
[00:06:07] the custom blocks A. P. I. But you know,
[00:06:08] custom extensions api
[00:06:09] you could code your own view type,
[00:06:11] that's something,
[00:06:12] you know, they're thinking of way down
[00:06:14] the line and with Interface Designer,
[00:06:16] each piece on your page
[00:06:18] is called an element. And so
[00:06:21] maybe they're thinking of a world
[00:06:22] in which there's no elements,
[00:06:23] it's all extensions and you just,
[00:06:25] you know, put them together like that.
[00:06:27] Yeah.
[00:06:30] Yeah and I probably
[00:06:31] I think it's fair to say
[00:06:33] that this is still a ways off.
[00:06:36] This is not something coming next month,
[00:06:40] I'd be shocked if it was
[00:06:42] it would be amazing,
[00:06:44] but I would be very surprised
[00:06:47] based on what little I know
[00:06:49] what's going on at Airtable.
[00:06:52] Okay. But I mean
[00:06:53] I think I was okay with apps.
[00:06:56] I was okay with blocks too,
[00:06:57] but I like the name extensions
[00:07:00] and I do think it does
[00:07:01] free up the word apps to
[00:07:02] be used in a more
[00:07:04] specific way or broader,
[00:07:06] I guess broad and specific at the
[00:07:08] same time, it's like
[00:07:10] you can build whatever you want
[00:07:12] and you can call that your app
[00:07:13] I guess.
[00:07:14] Yeah,
[00:07:15] yeah, we're still struggling
[00:07:18] with, at On2Air
[00:07:19] of how do we name our things now,
[00:07:21] because we've been calling them apps, but
[00:07:25] not everything we have is an extension,
[00:07:28] we do have extensions to our apps and so
[00:07:30] we're struggling
[00:07:32] with our naming convention and
[00:07:34] so if you or others have input
[00:07:36] on how we should name our things,
[00:07:38] we're definitely open to that.
[00:07:40] Clearly you have to start
[00:07:41] using blocks now.
[00:07:42] Yeah,
[00:07:44] we'll just go back to blocks.
[00:07:48] So definitely yeah,
[00:07:50] so exciting.
[00:07:50] I think it's good laying
[00:07:52] the foundation for the
[00:07:53] future
[00:07:54] that I hope is their vision,
[00:07:56] I think it's what makes sense to really
[00:08:00] make their platform,
[00:08:01] you know, extendable for,
[00:08:03] for all use cases.
[00:08:04] so
[00:08:06] hopefully there's more to come
[00:08:07] on that front,
[00:08:08] but right now it's just a name
[00:08:09] change
[00:08:11] and some good discussion there
[00:08:14] if you want to look into it
[00:08:16] okay,
[00:08:17] there was also a feature release
[00:08:20] a feature update.
[00:08:22] And so the the ability to
[00:08:25] create filter options
[00:08:27] for linked records.
[00:08:28] So when you have a filter,
[00:08:30] the only thing you used to be
[00:08:32] able to do was just whether
[00:08:34] it contained text and
[00:08:36] now there's more functionality.
[00:08:38] But Alli is gonna do a
[00:08:39] deep dive into this new
[00:08:40] functionality in one of our
[00:08:43] one of our segments,
[00:08:44] so we won't steal her thunder
[00:08:46] here. So this is cool.
[00:08:48] This is exciting.
[00:08:49] I think a lot of people were happy to
[00:08:51] see this
[00:08:55] dive into that one.
[00:08:57] So hang on for later
[00:08:58] in today's episode and we'll dive deep
[00:09:01] into the new filter options.
[00:09:04] This was one,
[00:09:05] I don't know if you guys
[00:09:07] saw this. Maybe I'm just late to the
[00:09:09] game in this,
[00:09:10] but they just sent out a newsletter
[00:09:13] Airtable did from the
[00:09:15] community Manager
[00:09:17] or somebody on the marketing team. And
[00:09:20] it had a thing in there
[00:09:22] about some new advanced features
[00:09:25] and Airtable syncing.
[00:09:27] And
[00:09:31] is this has this been around
[00:09:33] for a while or is it new? The ability to
[00:09:36] where are we?
[00:09:39] couple of things.
[00:09:40] The ability to change the primary field.
[00:09:43] I don't think that
[00:09:45] I think it's relatively new.
[00:09:47] I feel like I saw it maybe,
[00:09:49] but I also don't work
[00:09:50] in sync tables so often
[00:09:52] that I can pinpoint
[00:09:53] exactly when it is it's it wasn't
[00:09:55] there at launch, That's for sure.
[00:09:58] Right. What you
[00:09:59] what you had been able to do prior
[00:10:01] was select fields and if you
[00:10:03] for example have two data sources
[00:10:05] syncing into the same table then you could
[00:10:07] point different fields at,
[00:10:09] you can say I want this field
[00:10:10] from this table
[00:10:11] and this field from this table to
[00:10:12] go into this new field in the sync table
[00:10:15] into the same field
[00:10:16] which is super powerful in a lot of cases,
[00:10:19] but the primary field was not
[00:10:22] touchable in that case
[00:10:23] and this is really, really cool.
[00:10:25] I know a lot of people
[00:10:26] that are gonna be super excited
[00:10:28] about this.
[00:10:29] Yeah and let me and Melanie mentions
[00:10:31] that it just was announced this morning
[00:10:34] on the what's new? That's where I
[00:10:35] saw that in the in the letter
[00:10:37] but they haven't announced it
[00:10:39] in the community.
[00:10:40] So thank you Melanie for that.
[00:10:44] But I think to be clear,
[00:10:46] I don't think this actually
[00:10:49] changes the primary field
[00:10:51] that shows in your table.
[00:10:52] I think if I'm understanding correctly
[00:10:55] this is just
[00:10:55] the field that it uses
[00:10:58] to uniquely identify a sync.
[00:11:02] But maybe
[00:11:03] maybe it is changing
[00:11:05] the actual field
[00:11:07] that shows up on the left.
[00:11:10] I feel like
[00:11:12] I feel like it should be the one
[00:11:14] that's on the left. It does.
[00:11:15] It seems weird.
[00:11:16] I mean uniquely identify should be
[00:11:19] based on the record I. D
[00:11:21] Yeah and that's my preferred
[00:11:24] implementation.
[00:11:25] Yeah. Time to research
[00:11:27] Excuse me while I go sync a table. Yeah,
[00:11:30] Maybe we'll showcase this in a bit
[00:11:33] or next week
[00:11:34] or next show this is really cool.
[00:11:37] This this would be
[00:11:39] useful for
[00:11:41] like I mean one use case
[00:11:42] that I've had people bring up
[00:11:44] and when they ask me is
[00:11:45] this possible?
[00:11:46] And now I can say yes,
[00:11:47] hopefully. It's like if they're syncing
[00:11:50] out a subset of data
[00:11:51] and they've got, you know,
[00:11:52] a long formula for their primary
[00:11:54] field and their source base,
[00:11:56] but they want to share it
[00:11:57] with somebody that
[00:11:58] they don't necessarily want them
[00:12:00] to see that formula
[00:12:01] or it might be confusing so
[00:12:02] they want to just change
[00:12:03] whatever they're seeing
[00:12:04] on that side that they're
[00:12:05] syncing out.
[00:12:07] That would be hugely powerful.
[00:12:09] So that is similar to this next one.
[00:12:14] You can change the field type
[00:12:18] in the sync table.
[00:12:21] So that might imply
[00:12:25] that if it's well let's see,
[00:12:29] I'm trying to remember
[00:12:31] in the sync table,
[00:12:32] can you see the actual formula if
[00:12:34] you're syncing over a formula,
[00:12:36] it doesn't show you
[00:12:37] can't click in to see the
[00:12:38] formula.
[00:12:39] It comes in as a long text field,
[00:12:41] text field.
[00:12:43] So this actually allows you
[00:12:45] to change from a long text field
[00:12:47] to a single line
[00:12:47] text field.
[00:12:48] It's still not editable.
[00:12:50] So it's still read only the sync field.
[00:12:53] But I thought that was interesting.
[00:12:56] What other
[00:12:57] what other field types
[00:12:59] would you change?
[00:13:01] Would it work for a single select?
[00:13:03] Maybe
[00:13:06] I'm going to have to explore this in a
[00:13:08] future segment. You could
[00:13:13] I guess if you had a number field
[00:13:16] and wanted to have a display as a rating
[00:13:18] that's
[00:13:19] you know a compatible field type.
[00:13:21] That might be one
[00:13:22] potential
[00:13:24] you know option.
[00:13:25] Yeah
[00:13:26] but I wish like the wreck. I wish,
[00:13:30] I doubt you could
[00:13:32] implement your own linked records
[00:13:34] within your sync base.
[00:13:36] That would be nice
[00:13:38] if there is somewhere to
[00:13:40] to
[00:13:41] I wonder if the combination of the two
[00:13:44] if you can change what your primary field
[00:13:47] is. I wonder if that allows you to.
[00:13:52] That is interesting.
[00:13:54] I
[00:13:54] I'll have to play around
[00:13:56] with that for sure. I am.
[00:13:58] I've finally settled on
[00:14:00] like
[00:14:01] My best practice for link
[00:14:02] like syncing two tables out
[00:14:04] and linking them back
[00:14:05] together.
[00:14:06] I'll have to do a segment on that
[00:14:08] at some point because I think I have like
[00:14:10] I think I got it down to a science.
[00:14:12] Yeah the cleanest way
[00:14:13] now it's gonna change
[00:14:14] everything. Yeah
[00:14:15] that would be
[00:14:16] that would be a good segment
[00:14:19] because I know that
[00:14:20] comes up quite a bit.
[00:14:21] Yeah actually I definitely will do that
[00:14:24] but I would love to
[00:14:25] play with this for a single select
[00:14:27] because I had
[00:14:27] a use case for this
[00:14:29] the other day where I had
[00:14:30] two data sources.
[00:14:31] I wanted to sync into the same table,
[00:14:34] One had a status,
[00:14:34] single select field
[00:14:36] but the other one had
[00:14:37] no status field and I wanted to fill
[00:14:39] them all out and just add
[00:14:41] to that single select
[00:14:44] but if I used a formula
[00:14:46] on one side then it all changed to
[00:14:48] the just text
[00:14:49] and I couldn't have the
[00:14:50] single select anymore
[00:14:52] so
[00:14:53] I'll have to try that out. Really
[00:14:55] interesting.
[00:14:57] It also is interesting
[00:14:59] if you then change the type in the
[00:15:04] oh so if you change it
[00:15:05] in the target
[00:15:06] then it will take precedence.
[00:15:07] So if you change it in the source
[00:15:09] it's not gonna override the target
[00:15:11] which is
[00:15:11] probably the right way to handle that.
[00:15:13] Awesome.
[00:15:14] What else is there more down here?
[00:15:18] Advanced
[00:15:20] I think that's always been there.
[00:15:26] Field has been manually edited.
[00:15:30] What does that mean?
[00:15:36] I mean you can actually
[00:15:39] oh that's just showing you
[00:15:41] the type has been edited
[00:15:43] so
[00:15:45] yeah
[00:15:46] but I think it's still,
[00:15:47] I don't think that means
[00:15:48] you can edit the data.
[00:15:50] Okay I have done a test
[00:15:52] in the background
[00:15:53] and changing the primary field does
[00:15:56] change what field is the primary field
[00:15:59] in your sync destination.
[00:16:00] Which is useful
[00:16:01] you have to do it on new syncs.
[00:16:04] It will not let you change a
[00:16:06] sync that has already been
[00:16:08] done. So
[00:16:09] anytime you create a new sync table
[00:16:12] you know you could make that adjustment.
[00:16:15] I did test it directly from if you're
[00:16:17] in your origin table
[00:16:20] it there's like an option that says
[00:16:23] sync this view to somewhere else.
[00:16:25] If you do it from there
[00:16:26] it's not going to give you
[00:16:28] the advanced options that
[00:16:29] need that you need to say
[00:16:31] okay now pick this one
[00:16:32] is my primary field so it's
[00:16:34] gonna make that source
[00:16:36] and then you won't be able to
[00:16:37] change it later
[00:16:38] because like I just said once
[00:16:39] it's there you can't change
[00:16:41] what the primary field is.
[00:16:42] So
[00:16:44] go to your origin view,
[00:16:46] make sure that toggle
[00:16:48] for allow it to be sync is
[00:16:50] turned on
[00:16:50] and then go to your destination base
[00:16:53] and then create the sync table
[00:16:55] from there
[00:16:56] and then you'll see the advanced options
[00:16:58] and be able to select
[00:16:59] after
[00:17:01] Very useful
[00:17:02] hot off the press. That's good stuff.
[00:17:07] So yeah we'll probably
[00:17:09] we'll probably in the future
[00:17:11] future episode we'll dive
[00:17:12] deep into these changing
[00:17:15] changes
[00:17:16] and get you caught up on everything.
[00:17:19] Alright. Very cool.
[00:17:21] So those are kind of some of the updates
[00:17:23] Melanie says it's a precursor
[00:17:26] to two way sync.
[00:17:27] Maybe. Maybe that would be
[00:17:29] interesting.
[00:17:32] So moving on,
[00:17:33] there are a couple of other things
[00:17:35] that have changed but they
[00:17:37] weren't shared on the Airtable community.
[00:17:39] So we're going to the BuiltOnAir
[00:17:41] community and some people noticed
[00:17:44] a couple of things that are coming out so
[00:17:48] Justin mentioned this.
[00:17:49] I haven't seen this yet.
[00:17:51] I don't know if either of you
[00:17:53] have seen this. I have yeah
[00:17:55] only in my free bases
[00:17:57] interesting
[00:17:58] so for the first time
[00:18:01] this today you did? Yeah
[00:18:03] okay so yeah so this is coming out.
[00:18:07] So what it is
[00:18:08] is it's a button on the plus
[00:18:10] button where you
[00:18:11] down in the lower left
[00:18:13] where there's been like a circle plus
[00:18:15] button to add a new record.
[00:18:17] They made that into
[00:18:18] kind of a pill
[00:18:19] that has an add button that allows you to
[00:18:22] click and then it has
[00:18:24] bring up here a
[00:18:25] bigger pop up that comes up with all
[00:18:28] sorts of things that you can add
[00:18:30] different views or automations.
[00:18:32] So it's more kind of a
[00:18:34] a quick start guide
[00:18:36] to adding new things to your base.
[00:18:42] So that's good and bad.
[00:18:43] I think people found annoying.
[00:18:45] I think they saw it was a
[00:18:46] bug like it wouldn't go away
[00:18:48] the pop up bubble.
[00:18:50] So that's definitely annoying
[00:18:52] if that sticks around.
[00:18:56] That's all that was going on there.
[00:18:59] So that and then let's see here
[00:19:06] we're gonna come back to this one.
[00:19:09] This is one that
[00:19:10] I actually brought up
[00:19:12] but I only see this in one base.
[00:19:14] So this is a new ui
[00:19:16] that is starting to roll out
[00:19:18] that moves automations up
[00:19:21] into the upper left
[00:19:23] and creates three menu items. Data
[00:19:26] is your standard grid base.
[00:19:29] Then there's automations
[00:19:31] and then interfaces is
[00:19:33] accessible up at the top.
[00:19:35] Have you
[00:19:36] have you guys seen this in any bases yet?
[00:19:39] No, I was waiting for it
[00:19:41] to start appearing
[00:19:42] and it has not
[00:19:44] Yeah, I don't know why
[00:19:46] it's just in this one base.
[00:19:48] Yeah, I haven't seen it in
[00:19:49] any other bases.
[00:19:54] I think I like the move
[00:19:57] right now, automations and
[00:20:01] extensions are options
[00:20:03] that are on the same line
[00:20:06] as your tabs for your
[00:20:08] different tables.
[00:20:09] So if you have a lot of tables
[00:20:11] it's eating up not a whole lot
[00:20:12] of space, but some space
[00:20:13] in your real estate
[00:20:15] and then interface is up at the top
[00:20:17] next to the name of the base and it's a,
[00:20:21] you know,
[00:20:22] a interfaces is still in beta and b
[00:20:25] it's you know,
[00:20:27] there's a sort of
[00:20:29] precedence or
[00:20:31] I don't know, it
[00:20:32] it seems to have like
[00:20:34] such a high level compared to other
[00:20:36] things that you might want to access
[00:20:39] with a lot of frequency and so
[00:20:41] putting them at a similar sort of line
[00:20:44] and then next to the name of your base I
[00:20:46] think might be a good move.
[00:20:48] I also like that their
[00:20:50] you know, showing you
[00:20:51] that you're looking at your
[00:20:53] your data presumably that
[00:20:54] still includes your con Bond views,
[00:20:56] galleries, calendars, et cetera.
[00:20:57] That aren't just the grid view
[00:20:59] but they're all still looking
[00:21:01] at just your data
[00:21:02] effectively.
[00:21:04] But extensions is
[00:21:06] missing.
[00:21:07] Where is it?
[00:21:08] I didn't yeah,
[00:21:10] I cut it off on the screenshot
[00:21:13] of it's over on the right,
[00:21:15] is it on the same line as data
[00:21:18] and it's no it's down with the table names
[00:21:22] Strange.
[00:21:23] So it's the same place where
[00:21:25] it is now but automations is gone,
[00:21:28] automations is moved up
[00:21:30] so now it's just extensions over there.
[00:21:32] I guess
[00:21:34] the thought process there is
[00:21:36] you wouldn't have reason
[00:21:38] to look at your extensions
[00:21:39] and your automations at the same time
[00:21:42] and you can't have an extension and an
[00:21:44] interface yet so you wouldn't be there
[00:21:46] but you might look at your extensions
[00:21:49] which might include a chart
[00:21:50] or something like that at the same time,
[00:21:52] you would look at your data so
[00:21:54] that
[00:21:54] might make sense.
[00:21:56] My guess is they're still
[00:21:58] trying to figure out
[00:21:59] what to do with extensions so
[00:22:01] they just left it where it is.
[00:22:03] Could be
[00:22:04] I'm excited about one thing
[00:22:06] I get annoyed about
[00:22:07] with having automations
[00:22:08] and extensions next
[00:22:10] to each other is when I
[00:22:11] I do have to switch between
[00:22:12] the two of them
[00:22:13] because like sometimes I'll have a
[00:22:14] script in a scripting extension
[00:22:17] taking some getting used to saying.
[00:22:19] But I'll have to go back and there's no
[00:22:22] way to click on extensions.
[00:22:23] Once you have automation
[00:22:25] open you have to close
[00:22:26] automations and then extensions
[00:22:28] again which is frustrating to me.
[00:22:30] But this
[00:22:32] for me the my major problem
[00:22:34] was automations and apps
[00:22:36] both start with an A.
[00:22:37] And so I would click one
[00:22:38] meaning to click on one
[00:22:39] and I would click on the other
[00:22:40] on accident now they don't start
[00:22:42] with the same letter
[00:22:43] anymore but they'll be
[00:22:44] even further away
[00:22:45] so I can't do that accidental click.
[00:22:47] Yeah,
[00:22:48] the cool thing about this is
[00:22:50] now it's much easier
[00:22:51] to jump between data and
[00:22:53] interfaces before it was like
[00:22:55] impossible to get out of interfaces.
[00:22:58] So this is a big improvement.
[00:23:01] One thing that's kind of annoying is it
[00:23:04] doesn't remember your state,
[00:23:06] so when you're in interfaces
[00:23:08] and then you jump back
[00:23:09] to data,
[00:23:09] it doesn't remember like
[00:23:11] what interface you were in,
[00:23:12] you have to then go back
[00:23:14] and I'm pretty sure
[00:23:16] that's how it works but and
[00:23:18] same with automations, like,
[00:23:20] it doesn't remember
[00:23:22] if you're like inside a step
[00:23:24] that's how it is now too,
[00:23:26] which is annoying.
[00:23:27] The interface is one thing I find
[00:23:29] annoying about,
[00:23:30] I mean there's a lot of things about
[00:23:31] the navigation about with
[00:23:32] interfaces that needs to be fixed, but
[00:23:34] the
[00:23:35] overview page,
[00:23:36] like when you get to that,
[00:23:38] there's no way to like
[00:23:40] go back to all of your different
[00:23:42] interfaces, icons,
[00:23:43] you have to hit the back button
[00:23:46] if that makes any sense, that
[00:23:48] on the screen. But yeah,
[00:23:50] yeah, maybe that's changed.
[00:23:52] We could do
[00:23:53] we could do in the future one once it
[00:23:56] starts to roll out more,
[00:23:58] we'll dive more into it,
[00:24:00] but it's good, it's coming,
[00:24:03] I could see
[00:24:04] I feel like now that they've changed
[00:24:06] interfaces or extensions
[00:24:09] to extensions, I feel like
[00:24:11] eventually they're gonna reintroduce apps
[00:24:14] and it'll probably be up in here and
[00:24:16] those will be like full blown apps
[00:24:19] that take over the entire ui
[00:24:23] I could see that coming
[00:24:25] or maybe interfaces is where that happens,
[00:24:27] I don't know, but
[00:24:29] this opens up more flexibility
[00:24:31] to add more more functionality
[00:24:34] at the top level.
[00:24:36] So with that as far as what's coming
[00:24:40] here's some interesting tidbits.
[00:24:42] Hopefully I don't get in trouble for this.
[00:24:44] I thought this was like a public
[00:24:47] sharing of Airtable.
[00:24:49] Somebody said maybe it
[00:24:50] was just for enterprise customers,
[00:24:53] I don't know, but we'll see it's out
[00:24:55] there so
[00:24:57] but basically what's coming next
[00:25:01] at a glance
[00:25:03] of Interface Designer, enable
[00:25:06] advanced permissions
[00:25:08] app like capabilities,
[00:25:10] creation experience.
[00:25:12] So coming soon is record creation,
[00:25:15] new button types and better navigation and
[00:25:19] then the advanced stuff in the future.
[00:25:23] So as far as record creation,
[00:25:25] the ability to create a
[00:25:27] new form layout sometime
[00:25:29] in this quarter.
[00:25:30] And then trigger a form
[00:25:33] in a model from an existing page.
[00:25:36] So that's coming
[00:25:38] advanced permissions
[00:25:41] invite users to the interface
[00:25:43] without granting access
[00:25:45] to the underlying base
[00:25:46] sometime later this year.
[00:25:48] So that's exciting.
[00:25:52] new button types,
[00:26:03] new button types
[00:26:04] that will be able to
[00:26:06] open other U. R. L. S.
[00:26:08] And pages
[00:26:10] start automations
[00:26:11] it looks like off of a button.
[00:26:14] So that's coming
[00:26:16] exciting
[00:26:22] customizable detailed views, detail
[00:26:26] review
[00:26:27] detailed view with
[00:26:28] the power of Interface Designer.
[00:26:30] Yeah, so that's my most
[00:26:32] anticipated
[00:26:34] change and I'm curious to see
[00:26:36] if it only exists an Interface Designer.
[00:26:38] If it also exists in the data tab,
[00:26:41] if they, you know,
[00:26:43] launch that new top level
[00:26:44] navigation for everybody
[00:26:46] because that's been a
[00:26:49] sought after feature for a while. The,
[00:26:52] what is shown to you in terms of the
[00:26:56] order of fields
[00:26:57] and the visibility of fields
[00:26:59] has been somewhat of a mystery for
[00:27:01] a while. It's highly dependent
[00:27:03] on from where you've clicked on a record.
[00:27:07] but like yeah,
[00:27:09] I just, you know, I wish
[00:27:11] that you could
[00:27:13] very easily be able to say
[00:27:15] under what circumstances
[00:27:17] I want to show such and such
[00:27:19] fields and it looks like
[00:27:20] they're gonna let you do,
[00:27:21] you know perhaps a two column
[00:27:22] layout because having everything
[00:27:25] in one column
[00:27:25] is not super convenient if you
[00:27:27] have a lot of fields.
[00:27:30] Yeah,
[00:27:31] that would be interesting.
[00:27:33] Absolutely. I'm
[00:27:35] that was my first question too
[00:27:37] is is this only going to be
[00:27:38] available in interface
[00:27:39] designer or is it gonna be universal?
[00:27:42] You know, all expanded records.
[00:27:43] But I would hope that,
[00:27:45] I mean
[00:27:46] it makes me think of coda,
[00:27:47] that's something I really loved
[00:27:49] about Coda,
[00:27:49] is that you can design
[00:27:51] different layouts
[00:27:52] for your expanded records
[00:27:53] and you can,
[00:27:54] I think even choose
[00:27:55] which one is visible when
[00:27:57] I can't recall if that's exactly true,
[00:28:00] but that's where we're going.
[00:28:01] I would be super excited.
[00:28:03] Yeah. And then the other
[00:28:05] little tidbit up here,
[00:28:07] you see desktop and mobile.
[00:28:08] So they've got different experiences.
[00:28:12] They might be getting into the mobile app
[00:28:16] design world.
[00:28:19] So yeah, exciting stuff.
[00:28:21] It'll be interesting to see
[00:28:24] how this plays out
[00:28:27] one more
[00:28:29] updated editor.
[00:28:30] So improvements to the editor.
[00:28:33] Some interesting
[00:28:35] Yeah, it's been out for a while
[00:28:38] so I've gotten used to
[00:28:40] a lot of the particulars
[00:28:42] with the Interface Designer editor
[00:28:44] but it is you know, fairly finicky,
[00:28:46] especially if you have multiple columns
[00:28:49] already on the page and you want to move
[00:28:50] something to the top
[00:28:52] of a column in a row.
[00:28:53] Sometimes it thinks you want to start
[00:28:55] a new row as opposed to
[00:28:56] just reordering within that column.
[00:28:58] so
[00:29:00] you know, the more complex your
[00:29:02] your page has become,
[00:29:03] the more difficult it is
[00:29:04] to place things exactly
[00:29:06] where you want it.
[00:29:07] I know some other editors for,
[00:29:09] you know, what you see
[00:29:11] is what you get, type design experiences.
[00:29:13] They have a thing on the left
[00:29:15] usually that's like a
[00:29:16] basically your table of contents
[00:29:18] of all of the elements on the page.
[00:29:19] Where if you want to drag stuff
[00:29:21] you could just drag it in that
[00:29:23] table of contents
[00:29:24] and then you don't have to
[00:29:25] worry about moving your mouse
[00:29:27] at exactly the right pixel
[00:29:29] for it to go where you
[00:29:30] need it. That might be one way
[00:29:32] that they could be,
[00:29:33] you know, improving the drag and drop
[00:29:36] functionality but it looks like there
[00:29:38] also adding perhaps new templates
[00:29:40] and other experiences
[00:29:41] to the editor as well.
[00:29:43] Yeah, yeah,
[00:29:46] so yeah, stuff coming to interface,
[00:29:49] they're definitely working on that
[00:29:52] and we
[00:29:52] shall see in the coming months
[00:29:55] so something's coming soon to the world of
[00:29:58] interface. So
[00:30:01] excited to see what's coming there.
[00:30:04] So that's kind of what
[00:30:05] we've got for what's
[00:30:06] going on in the Airtable world,
[00:30:10] some exciting new features
[00:30:13] and so let's move
[00:30:15] on.
[00:30:16] So a quick spotlight on On2Air
[00:30:18] is our primary sponsor, it's
[00:30:20] an all one toolkit to
[00:30:22] run your business on Airtable.
[00:30:24] It's just that of apps or extensions or
[00:30:27] something else
[00:30:28] that we don't know what to name,
[00:30:30] that allow your business to
[00:30:33] execute to its maximum
[00:30:35] potential on Airtable
[00:30:37] for today's spotlight.
[00:30:39] We're gonna continue with
[00:30:40] the theme of sneak peeks.
[00:30:42] So we launched our
[00:30:44] so our very, our second product
[00:30:47] that we launched was an
[00:30:49] integration with Jot form
[00:30:51] and so we call that our
[00:30:53] On2Air forms
[00:30:54] and it was kind of we wanted to kind of
[00:30:57] test case
[00:30:58] getting something quick and dirty
[00:31:00] that allowed people to build more
[00:31:03] advanced forms solution
[00:31:05] and we decided at that time to go with
[00:31:08] jot form because it allowed
[00:31:09] it was really the only form builder
[00:31:11] out there that
[00:31:12] allows you to build kind of
[00:31:14] on top of it or inside of it.
[00:31:16] And so it allowed us
[00:31:17] to build little widgets
[00:31:19] that we could incorporate
[00:31:21] Airtable data. But it also
[00:31:23] introduced a lot of
[00:31:25] issues that made it challenging
[00:31:27] and jot form
[00:31:29] has some quirks that
[00:31:31] has made that bit difficult to get going.
[00:31:34] And so it's probably been
[00:31:37] a year in the making,
[00:31:39] we decided to build our own
[00:31:41] form solution
[00:31:43] and we were getting very close to that.
[00:31:45] So I wanted to today give the very first
[00:31:47] sneak peek of
[00:31:48] of what's coming in there.
[00:31:50] And of course
[00:31:52] Murphy's law came into effect.
[00:31:54] I made a quick change
[00:31:56] last night and broke something
[00:31:58] and so I can't get a full
[00:32:00] functional form running.
[00:32:02] I didn't have enough time
[00:32:04] to get it running,
[00:32:04] but
[00:32:05] this is one that is still
[00:32:07] in some state of functionality.
[00:32:09] Just to give you a quick glimpse
[00:32:11] what we're gonna do is the next three
[00:32:14] episodes that we have
[00:32:15] up until this launch.
[00:32:17] The goals to launch this at the end
[00:32:18] of July beginning of August
[00:32:21] and so we're gonna, I'm gonna sneak peek
[00:32:24] different functionality
[00:32:26] that we have coming in the form solution
[00:32:29] but it will be a full functional
[00:32:32] standalone form,
[00:32:33] won't be dependent on jot form
[00:32:35] or anything.
[00:32:36] And it will have the full ability
[00:32:38] to edit existing records,
[00:32:39] create new records,
[00:32:41] edit linked records,
[00:32:42] create as many linked records as you
[00:32:45] want at existing linked records. Full
[00:32:49] visibility into attachments.
[00:32:52] The ability to create new options
[00:32:54] for select or multi select records
[00:32:57] on the fly
[00:32:58] and everything will be configurable.
[00:33:01] Dynamic ability to hide and show records,
[00:33:05] even update records, things like that. So
[00:33:09] very very excited for this,
[00:33:11] this is kind of
[00:33:12] taking everything that I've learned
[00:33:15] from our first form solution
[00:33:17] as well as what
[00:33:17] we a lot of what we learned from
[00:33:20] our amplify product building into a
[00:33:23] standalone form solution. So
[00:33:25] this has been a lot of work
[00:33:27] and there's still a lot of work
[00:33:29] yet to go to get it
[00:33:29] all ready
[00:33:30] but just wanted to showcase this
[00:33:33] and start getting it out there.
[00:33:35] So if you have must have features
[00:33:37] that you want to see from a form solution,
[00:33:40] let us know,
[00:33:41] we might be able to sneak it
[00:33:43] in before we launch this.
[00:33:44] So we'd love to hear feedback
[00:33:46] on what people absolutely need from a form
[00:33:49] solution.
[00:33:51] That's exciting.
[00:33:53] Yes, very very excited for that.
[00:33:56] Melanie only right now
[00:33:59] we're launching with just
[00:34:02] a single field per row.
[00:34:04] We're not we're not
[00:34:05] launching with a
[00:34:07] you know Interface Designer,
[00:34:09] so it will be just kind of
[00:34:11] a standard like
[00:34:12] Airtable's form at launch
[00:34:14] but designer will be
[00:34:16] in a future release after that
[00:34:20] Alright, our first segment
[00:34:23] I will be handling this Scripting Time.
[00:34:26] So one thing that
[00:34:28] that especially for beginners
[00:34:31] if you're just dabbling with
[00:34:33] with scripting one of the
[00:34:36] first things that you'll probably like
[00:34:39] hit your head against is
[00:34:41] understanding what these keywords
[00:34:43] are a sync and await
[00:34:45] it came up recently in the BuiltOnAir
[00:34:49] community Russell Bishop.
[00:34:52] Hopefully you're okay with me
[00:34:55] using this as a test case, but
[00:34:58] he actually is doing this
[00:34:59] outside of Airtable.
[00:35:01] So this is just in code but
[00:35:02] it's still javascript
[00:35:04] so it'll work pretty similarly
[00:35:06] but trying to understand
[00:35:07] the concept of a promise.
[00:35:09] So I want to try to help people
[00:35:12] understand what a
[00:35:13] promise is because
[00:35:14] you'll need to know what that is
[00:35:16] if you're doing any
[00:35:17] scripting within Airtable
[00:35:20] or writing any code
[00:35:21] in javascript in general,
[00:35:23] this isn't anything Airtable specific.
[00:35:27] So let's add a scripting extension
[00:35:32] to our base
[00:35:34] and you'll notice an Airtable.
[00:35:38] when you're dealing with
[00:35:41] any data from Airtable,
[00:35:44] let's use one of their here we go.
[00:35:48] What you'll notice is
[00:35:50] their functions to get data from a table,
[00:35:55] they always end with a sync.
[00:35:57] And so that's kind of
[00:35:59] I think they did that is just
[00:36:00] to make it obvious that this is
[00:36:04] what's called a promise.
[00:36:06] So a promise means
[00:36:09] you're gonna have to help me with this.
[00:36:14] I understand conceptually what the
[00:36:17] process of using a sync and await
[00:36:20] and for some reason my brain has never
[00:36:22] connected the concept of a promise,
[00:36:24] which is the same thing.
[00:36:26] So
[00:36:27] yeah, who knows how much help I'll be
[00:36:31] basically what the what it
[00:36:35] means is in javascript
[00:36:37] when you, when it's executing code
[00:36:40] it has the ability
[00:36:41] to kind of step outside
[00:36:45] of that linear code
[00:36:47] to perform some action.
[00:36:50] And so if you know anything about
[00:36:52] how computers run your computer has a CPU
[00:36:54] which is kind of the brain
[00:36:56] of the computer
[00:36:57] and it's executing one line at a time.
[00:36:59] Well if you have a task
[00:37:01] that might take a long time, for example,
[00:37:04] the most common one is
[00:37:05] making a request out to the internet
[00:37:08] and asking for some
[00:37:09] data.
[00:37:10] from a U. R. L.
[00:37:11] That could take a long time
[00:37:14] because it has to go across
[00:37:16] the internet and wait for it.
[00:37:18] What they do is they say
[00:37:20] while you're waiting for
[00:37:21] that code to execute somewhere else,
[00:37:24] we're gonna continue on with the code that
[00:37:27] that we have here.
[00:37:29] And so they allow you to be
[00:37:32] executing code
[00:37:33] while you're also waiting for some
[00:37:36] other response for something
[00:37:39] happening outside of
[00:37:41] your code of execution.
[00:37:43] So that's kind of what a promise is.
[00:37:46] It it allows you to
[00:37:48] to wait or
[00:37:50] to kind of send away code
[00:37:54] to be executed on another
[00:37:57] environment and then you can
[00:37:59] continue on
[00:38:00] and then later come back to that code
[00:38:02] once it's done.
[00:38:04] And so what the a sync
[00:38:06] and await does is
[00:38:08] tells it that no I don't want to
[00:38:12] execute anymore and tell
[00:38:14] that other
[00:38:15] thing is done.
[00:38:17] And I want to wait for what that
[00:38:19] that other piece of
[00:38:21] code that's executing is completed.
[00:38:24] And so right here, what we're now doing is
[00:38:27] we're saying we're going to wait
[00:38:30] for this asynchronous function
[00:38:33] to finish and
[00:38:34] return
[00:38:35] before we execute the next line of code.
[00:38:40] So if we didn't put this await here,
[00:38:44] this would actually return
[00:38:47] what's called a promise,
[00:38:49] which is this placeholder,
[00:38:52] that is not the is not what
[00:38:55] you would be expecting.
[00:38:58] And so that's why it actually
[00:39:01] it actually gave me this error
[00:39:04] now because it
[00:39:04] doesn't exist.
[00:39:06] The records property
[00:39:08] doesn't exist on a promise.
[00:39:10] And so if you don't have that await
[00:39:12] there then you're it's not going to do
[00:39:15] what what you expected to do
[00:39:17] now what you could do is
[00:39:19] there's two ways
[00:39:20] you can deal with promises.
[00:39:22] One is to just say
[00:39:23] I wanna wait right here for it
[00:39:26] and that's the way that I
[00:39:27] would likely
[00:39:29] that that's the way
[00:39:31] I usually do things now.
[00:39:33] I come from,
[00:39:34] I actually did javascript
[00:39:36] before this kind of was out
[00:39:39] or popular and it was a
[00:39:40] nightmare. What you would have to do is
[00:39:44] there's another way where
[00:39:45] you can deal with promises
[00:39:47] where you can
[00:39:48] and wait, you can call dot then
[00:39:51] and wait for
[00:39:53] and then get the result as a
[00:39:56] parameter into here
[00:39:57] and then use a function that then
[00:40:00] process that so you can
[00:40:02] have this chain of all of these
[00:40:04] then, of whenever it's finished
[00:40:07] then it executes this code but what
[00:40:11] you would notice is,
[00:40:13] and this is what Russell was seeing
[00:40:15] with his code is he was
[00:40:17] implementing dot then
[00:40:20] if we go back to that example
[00:40:24] right here,
[00:40:26] this stop find
[00:40:27] this is kind of the equivalent
[00:40:30] of a promise
[00:40:31] callback.
[00:40:32] So this code right here
[00:40:34] won't get executed until it actually makes
[00:40:38] that call to the server,
[00:40:40] but then he had this line right here
[00:40:44] and what he was noticing
[00:40:46] and trying to understand was
[00:40:49] that this gets
[00:40:50] executed before this does
[00:40:52] and that's because when you
[00:40:55] call this base this is a
[00:40:58] promise
[00:40:59] and it's making an api call
[00:41:01] to the rest api of Airtable.
[00:41:04] Now it's going to return instantly
[00:41:07] and then it will execute this
[00:41:09] and then come back to this code
[00:41:12] inside of here
[00:41:13] because this is the callback.
[00:41:15] So that's
[00:41:17] so it's basically saying
[00:41:19] I'm gonna call this
[00:41:20] and I'm gonna continue on
[00:41:22] and then whenever
[00:41:23] I get the response back
[00:41:24] from the server, then I'm going to
[00:41:26] call this function
[00:41:27] and execute what's inside of there
[00:41:29] and then it's going to continue on
[00:41:32] to any any code after
[00:41:34] this. So if he instead used
[00:41:37] an await right here,
[00:41:38] then it would wait right
[00:41:40] there in that line
[00:41:42] and not process anything.
[00:41:43] It would basically just stall and
[00:41:45] then once the server came back
[00:41:47] then it would continue on,
[00:41:49] which is usually what
[00:41:50] people want to do
[00:41:51] unless you're really trying to
[00:41:53] do a lot of things at the same time,
[00:41:55] there might be times when you want to use
[00:41:57] the other approach.
[00:41:59] so hopefully that helps
[00:42:02] understand the difference between
[00:42:06] you know whenever
[00:42:08] in Airtable because they
[00:42:10] use all the standard naming
[00:42:12] convention of putting a
[00:42:13] sync on everything
[00:42:15] that helps you understand
[00:42:16] that you probably need
[00:42:18] to put in await in front of
[00:42:19] it unless you
[00:42:20] want to use the promise approach.
[00:42:24] So hopefully that helps
[00:42:26] explain it anything to add there?
[00:42:28] I can confuse the audience with a metaphor
[00:42:31] that's always fun.
[00:42:33] To me
[00:42:33] with the two approaches
[00:42:36] that we have shown
[00:42:38] when you're using await,
[00:42:40] think of when you're
[00:42:41] cooking something for dinner.
[00:42:43] So your started cooking,
[00:42:45] you realize you don't have
[00:42:47] the ingredients when you use
[00:42:49] await, you're basically
[00:42:51] telling your roommate to go to the store,
[00:42:53] give me the ingredients I'm missing,
[00:42:55] come back and as soon as you have them in
[00:42:57] your hands, you continue cooking
[00:42:59] with, then
[00:43:01] it's more like, alright,
[00:43:02] you're cooking,
[00:43:03] you realize you have stuff missing,
[00:43:05] you send your roommate to the store
[00:43:08] and in the interim
[00:43:09] you make a salad and then
[00:43:10] at some point your roommate
[00:43:12] comes back
[00:43:13] and then you finish cooking whatever it
[00:43:14] is you were cooking
[00:43:15] and at the end
[00:43:16] you've already made your side dishes.
[00:43:17] So
[00:43:19] you know it's so good.
[00:43:20] I love that
[00:43:21] convoluted metaphor.
[00:43:23] That's what I'm here for.
[00:43:24] Very good.
[00:43:25] So hopefully that didn't completely
[00:43:28] scare people away from scripting.
[00:43:30] It's not that hard.
[00:43:31] Once you figure that out,
[00:43:33] it's definitely something that is
[00:43:34] confusing at first, but
[00:43:37] once you get it then
[00:43:38] then it's pretty straightforward.
[00:43:42] So let's continue on to our next segment,
[00:43:47] Kamille is gonna go through
[00:43:48] an audience question with us.
[00:43:50] Sure would be helpful
[00:43:52] if I shared my screen.
[00:43:55] Hold on.
[00:44:00] Okay, so
[00:44:05] am I sharing?
[00:44:06] Okay so there was this question
[00:44:09] on the Airtable community forums
[00:44:11] and it was a fairly good one
[00:44:13] because I think it comes up
[00:44:15] often and there's a
[00:44:16] billion different ways that you could
[00:44:18] you know, start to solve the issue.
[00:44:21] So essentially they had a series of
[00:44:23] fields.
[00:44:24] I think it was four different date fields.
[00:44:27] Some of them have values
[00:44:29] in them and some of them don't
[00:44:31] and they wanted to have
[00:44:32] another field
[00:44:33] that summarized each of those four fields
[00:44:35] together.
[00:44:36] But if one of those date fields was empty,
[00:44:38] just not include the value for that
[00:44:41] field.
[00:44:42] That sounds simple
[00:44:43] and it is simple
[00:44:45] unless you want to have a separator in
[00:44:47] between each of your fields.
[00:44:49] Because if you just sort of
[00:44:51] contaminated a bunch
[00:44:52] of fields together,
[00:44:53] including the separator
[00:44:55] and then one of your fields is empty,
[00:44:56] what you're going to end up with,
[00:44:58] it's just a floating separator.
[00:44:59] And then
[00:45:01] her initial approach was to
[00:45:03] concatenate things together
[00:45:05] and then use an if
[00:45:06] statement that's like if,
[00:45:09] you know the edit date
[00:45:11] and or the format date
[00:45:13] is there then put in the semi
[00:45:14] colon. Otherwise,
[00:45:16] you know,
[00:45:16] don't put anything
[00:45:17] and that's one way you could do
[00:45:19] it. But that gets really complicated
[00:45:21] once you have several, several fields that
[00:45:23] you're trying to concatenate together.
[00:45:26] And it's also, you know,
[00:45:28] difficult if it doesn't matter
[00:45:31] whether or not format
[00:45:33] versus production is empty.
[00:45:35] Some processes are very
[00:45:37] sequential where,
[00:45:38] you know, if production start has a value,
[00:45:41] then format must have a value.
[00:45:43] That's not the case here,
[00:45:45] it didn't matter which
[00:45:46] ones were empty
[00:45:47] and which ones weren't.
[00:45:48] So the actual formula to put in the
[00:45:50] separators was what was making
[00:45:53] the problem a little bit difficult.
[00:45:56] So what I ended up doing
[00:45:57] is I just recreated
[00:45:59] the setup and just had
[00:46:01] some values filled in some not
[00:46:04] and then I used RegEx
[00:46:06] in order to handle my separator.
[00:46:09] So I have
[00:46:12] in here
[00:46:13] fairly simple lines
[00:46:15] for each of my four date fields, so
[00:46:19] if there's a value for edit,
[00:46:21] then put in the name
[00:46:23] of the field and then format
[00:46:25] the edit date, so that it's
[00:46:28] you know, readable,
[00:46:30] you have to do this for
[00:46:31] any sort of date field,
[00:46:33] put it in a date time format,
[00:46:34] otherwise you'll get the,
[00:46:36] you know UNIX timestamp
[00:46:38] which isn't so pretty.
[00:46:39] I did that for each of my four
[00:46:42] and no matter
[00:46:43] which field it was all of them as
[00:46:46] part of their formatting
[00:46:47] include the semi colon
[00:46:49] and a space at the end.
[00:46:50] I could have also just concatenate
[00:46:52] concatenated a semicolon and space at the
[00:46:55] end. However it didn't matter.
[00:46:57] I was already using date time format,
[00:46:59] I just collapsed
[00:47:01] that into one
[00:47:03] function.
[00:47:04] And then
[00:47:05] outside of that
[00:47:06] outside of my concatenation
[00:47:08] I have a RegEx replace which is
[00:47:10] taking any semi colon
[00:47:13] and then a space
[00:47:15] followed by the end of a line.
[00:47:17] So the when you're using RegEx
[00:47:20] there are different
[00:47:23] variables or placeholders
[00:47:25] for very specific items.
[00:47:27] In this case I'm using the
[00:47:29] dollar sign because in reject
[00:47:31] a dollar sign means
[00:47:33] this is the end of the text
[00:47:35] or end of the line.
[00:47:37] I am using RegEx replace.
[00:47:40] So it's taking any semicolon and space
[00:47:43] followed immediately
[00:47:44] by the end of the line
[00:47:46] and replace it with nothing.
[00:47:47] Just blank space.
[00:47:49] And with that
[00:47:50] I ended up with this field.
[00:47:53] This other field is just separating
[00:47:55] them into you know, one line each.
[00:47:57] Just so that it's easier to see and read.
[00:47:59] You'll notice that each field
[00:48:02] ends with a semicolon unless it's the last
[00:48:06] one and it doesn't matter
[00:48:07] which is the last one. If I delete
[00:48:10] this value,
[00:48:13] it will update
[00:48:14] and it start is now the last
[00:48:16] option. So even though
[00:48:18] it is supposed to have
[00:48:20] a semicolon at the end,
[00:48:22] it doesn't have one anymore.
[00:48:23] If I were to fill in the format start
[00:48:27] and put that in
[00:48:28] edit start gets its semicolon back.
[00:48:31] But format start doesn't have it anymore.
[00:48:33] And then
[00:48:34] once more, if I were to delete edit start,
[00:48:36] format start is now the first and
[00:48:38] the last,
[00:48:38] it doesn't need the semicolon,
[00:48:40] so it's disappeared.
[00:48:41] I thought that was
[00:48:43] the simplest way
[00:48:44] to handle multiple different fields being
[00:48:46] contaminated together
[00:48:47] and it will work for
[00:48:48] basically any separator,
[00:48:49] as long as your separator
[00:48:52] doesn't happen to be
[00:48:53] one of these RegEx replaces
[00:48:56] if it
[00:48:57] for instance
[00:48:58] you wanted to use a dollar sign
[00:49:00] as your actual separator,
[00:49:02] then your code would look something like
[00:49:05] you have to
[00:49:06] what's called escape the character
[00:49:09] so proceed it with a couple of
[00:49:11] slashes and then put that in
[00:49:13] and then that's what,
[00:49:14] that's what would
[00:49:15] allow you to use the dollar sign
[00:49:17] as your separator.
[00:49:17] But that's it.
[00:49:20] I put that same formula in this
[00:49:23] thread so you'd be able to
[00:49:26] copy it for yourself.
[00:49:29] That's awesome.
[00:49:30] I've never experimented with
[00:49:33] RegEx because I find it super
[00:49:35] intimidating and scary.
[00:49:37] This makes me really want to
[00:49:39] because this is actually
[00:49:41] a use case that like I
[00:49:42] have so many formulas
[00:49:43] that are super long
[00:49:45] because I'm like if or anything that
[00:49:47] came before it
[00:49:48] and something after it
[00:49:49] then put a comma blah blah blah.
[00:49:50] This makes it so simple and clean.
[00:49:52] I love it.
[00:49:53] Yeah, when RegEx was added it was
[00:49:55] a lot of
[00:49:56] like, well I could do this with
[00:49:58] regular
[00:49:59] you know, formula functions
[00:50:01] and you could
[00:50:03] but you could also write a much
[00:50:04] smaller formula
[00:50:06] if you just did it this way. And
[00:50:10] I find RegEx really intimidating.
[00:50:13] I don't have all of these you know,
[00:50:16] placeholder values memorized in my head.
[00:50:18] I every single time I write a RegEx
[00:50:20] formula, I click on the guide
[00:50:23] so that I can see
[00:50:24] you know the breakdown of what
[00:50:26] each
[00:50:27] character actually means.
[00:50:28] But you could,
[00:50:29] it allows you to do stuff like this
[00:50:31] which will save you a lot of
[00:50:33] headache if you could just
[00:50:35] you know think to yourself.
[00:50:37] Alright let me standardize
[00:50:38] everything and put a
[00:50:39] semicolon there every time and then
[00:50:42] you know replace only the semicolons
[00:50:44] at the end. Really the hard part is
[00:50:46] thinking of
[00:50:49] you know, recognizing situations
[00:50:51] where RegEx could work.
[00:50:53] And then the other
[00:50:54] hard part is actually working with reg ex
[00:50:57] I can't even imagine
[00:50:59] but this looks hugely powerful.
[00:51:01] It's almost kind of like an
[00:51:03] array function
[00:51:04] in a way
[00:51:04] it's like looping kind of
[00:51:06] to look for the line,
[00:51:06] the end of each line.
[00:51:08] Yeah it opens a whole lot of doors
[00:51:11] and you know there's
[00:51:13] infinite solutions that
[00:51:14] are easier with RegEx
[00:51:16] and some that weren't even
[00:51:18] really possible without
[00:51:20] you know
[00:51:20] several, several formula fields
[00:51:22] working in tandem to do stuff and
[00:51:25] this was one of those instances
[00:51:27] where I was like, aha,
[00:51:29] I'm pretty sure RegEx
[00:51:30] could do this in a shorter
[00:51:32] formula.
[00:51:33] Yeah. And and your RegEx Yeah,
[00:51:36] it's only the replace at the end.
[00:51:39] Yeah. So
[00:51:41] that's fairly simple.
[00:51:42] Yeah. If you're doing RegEx,
[00:51:44] there's websites out there
[00:51:46] that you'll live on
[00:51:48] that help you test, is this valid?
[00:51:50] Does this work?
[00:51:51] You probably want to do it there
[00:51:53] instead of just continually
[00:51:55] updating a formula
[00:51:56] saving and see if it worked.
[00:52:00] Very cool stuff.
[00:52:03] Thank you. Kamille.
[00:52:06] Alright, moving on.
[00:52:08] Just a quick plug for
[00:52:09] our BuiltOnAir community.
[00:52:11] We'd love to have you join us
[00:52:12] if you're not already in.
[00:52:14] We have an active slack
[00:52:15] community of thousands of Airtable users
[00:52:18] and always stuff going on.
[00:52:19] So please join us
[00:52:21] builtonair.com/join to sign up.
[00:52:24] And our final segment
[00:52:26] Alli is gonna walk through
[00:52:28] advanced linked record filters.
[00:52:32] Alright, am I sharing here?
[00:52:35] Excellent. Okay,
[00:52:36] so this is something that's super
[00:52:40] exciting.
[00:52:40] It's not as exciting I think
[00:52:43] as some people thought it was based on
[00:52:45] the name of the release
[00:52:47] with the advanced filter options
[00:52:48] for linked records.
[00:52:50] it literally is only talking about
[00:52:52] the filtering function.
[00:52:54] It's nothing special
[00:52:55] about being able to filter the
[00:52:57] choices by your linked record
[00:52:59] which hopefully
[00:53:00] is coming sometime in the future
[00:53:01] but this is still very powerful.
[00:53:05] so actually this is something
[00:53:06] I kind of touched on
[00:53:07] a few weeks ago before this
[00:53:08] was something that was available.
[00:53:11] And a little trick
[00:53:12] that I had used in the past
[00:53:14] and sometimes will probably still use
[00:53:16] because I like having the color of a
[00:53:18] single select field
[00:53:19] is on my locations table. I actually have
[00:53:23] that single select here.
[00:53:25] For each one
[00:53:26] and even if this is still reading
[00:53:28] sometimes they'll have the
[00:53:29] name actually read the single select
[00:53:31] but neither here nor there.
[00:53:34] And then because I have each record
[00:53:36] on my company vehicle table linked to a
[00:53:38] location,
[00:53:39] I'm able to look up that single select.
[00:53:42] And then I could use that
[00:53:44] as
[00:53:46] a filter to be able to
[00:53:47] actually choose an option.
[00:53:50] And that was to get around
[00:53:52] having to type in
[00:53:54] the actual code for a linked
[00:53:56] record.
[00:53:56] If I'm trying to filter
[00:53:58] by the actual physical location
[00:54:01] because it's on contains
[00:54:02] it still stays there.
[00:54:03] So this is interesting that works
[00:54:04] out pretty well.
[00:54:06] Previously you'd have to
[00:54:07] actually type in here you know
[00:54:09] instead of just picking it from the list.
[00:54:12] Can with a single select
[00:54:15] but
[00:54:16] now
[00:54:18] we have all of these pretty options here.
[00:54:20] So instead of just contains
[00:54:23] or is
[00:54:24] or does not contain.
[00:54:26] Now we have has any of
[00:54:28] has all of
[00:54:29] is exactly
[00:54:30] and has none of
[00:54:32] which all pertained to a actual selector
[00:54:36] for those linked record fields.
[00:54:38] So just like I could have
[00:54:39] with my single select
[00:54:40] field.
[00:54:41] Now, this is going to function
[00:54:43] very similar to how
[00:54:44] actually choosing a linked
[00:54:46] record works in a field.
[00:54:48] I can actually go and find
[00:54:50] that linked record.
[00:54:51] It's gonna show me other
[00:54:53] information about that linked record,
[00:54:55] just like it does in the linked record
[00:54:56] picker
[00:54:57] and now I can go through
[00:54:59] and pick my locations
[00:55:01] just like I could with that
[00:55:02] single select,
[00:55:04] which is super, super helpful.
[00:55:07] Like I said, I still probably
[00:55:08] will use my little hack
[00:55:10] with the single select
[00:55:10] cause I like the colors but
[00:55:12] this makes things a lot easier
[00:55:14] because previously
[00:55:15] you'd have to kind of rely on
[00:55:17] knowing what that linked record
[00:55:18] was called and
[00:55:19] actually having the
[00:55:21] correct spelling nomenclature, whatever
[00:55:23] it is for your naming convention,
[00:55:25] like somewhat memorized
[00:55:26] or just have to guess,
[00:55:27] like did I type it in white shirt
[00:55:29] or yellow t shirt,
[00:55:30] white or whatever it is.
[00:55:31] Like there were,
[00:55:33] there were like three major problems
[00:55:35] with the contains does not
[00:55:36] contain
[00:55:37] because it didn't have is
[00:55:40] so if your name was like
[00:55:42] carl
[00:55:42] and then another person's name is carlita.
[00:55:46] When you're looking for contains
[00:55:48] carl,
[00:55:49] you're going to get both of those people
[00:55:51] and their different people and
[00:55:52] then
[00:55:53] if carl were to change their name
[00:55:57] to Phil or something
[00:55:59] that's no longer going to contain it,
[00:56:01] even though you were looking for a very
[00:56:02] particular record.
[00:56:03] It no longer contains carl
[00:56:05] so it's not gonna lose that
[00:56:07] this
[00:56:08] implementation I've tested it before
[00:56:11] has does
[00:56:12] not have
[00:56:12] has any of
[00:56:13] has none of
[00:56:14] they're looking at the record I.D.
[00:56:17] So if you were to rename that
[00:56:19] to say whatever, it's still gonna pick,
[00:56:22] you know,
[00:56:23] that specific record that was found.
[00:56:26] Exactly.
[00:56:27] So to demo what Kamille just said
[00:56:29] if I had just previously,
[00:56:31] if I'm relying on
[00:56:32] contains and I had typed in
[00:56:33] Cape or which was the name of my record,
[00:56:36] went here and changed the name
[00:56:38] of my record. Now to test,
[00:56:40] my view is now completely broken.
[00:56:41] There's nothing there
[00:56:43] not really broken but still
[00:56:45] however, if I actually use
[00:56:48] that selector
[00:56:50] has any of
[00:56:52] now it's called test
[00:56:55] and I go back and change my name back.
[00:57:01] It still works
[00:57:03] and it actually
[00:57:05] look it's gonna load. That's cool.
[00:57:07] So now it stays with
[00:57:08] the actual name of that record
[00:57:10] and it's not gonna break
[00:57:11] that link.
[00:57:13] So super exciting stuff.
[00:57:15] And the last issue
[00:57:16] with contains does not contain is if
[00:57:18] you wanted to look at
[00:57:19] two different people,
[00:57:20] you have to have two separate
[00:57:21] filters says you know,
[00:57:23] contains carl
[00:57:24] or contains Phil and have that as like a
[00:57:26] conditional group
[00:57:27] and you have to do that for
[00:57:29] however many records and that's
[00:57:31] deeply infeasible
[00:57:32] depending on how many record types
[00:57:33] or whatever that you were
[00:57:34] looking for and now it's just one line
[00:57:37] makes it super easy
[00:57:39] and someone from our chat
[00:57:40] pointed out that it's not
[00:57:42] just in, you know, the data view,
[00:57:44] it's also an Interface Designer
[00:57:46] and also in
[00:57:47] automations if I'm not mistaken
[00:57:49] for conditions,
[00:57:50] so yeah, it's everywhere and it's
[00:57:52] super useful.
[00:57:53] It's super super useful.
[00:57:55] Yes, I'm very excited about it.
[00:57:57] I think it's gonna make for
[00:57:59] a much easier user experience without
[00:58:01] your users don't have to
[00:58:02] remember how your name, everything,
[00:58:04] they can just find it from the list.
[00:58:08] Yeah,
[00:58:09] that is awesome.
[00:58:11] Good stuff for today.
[00:58:13] So next week we're gonna be off for a
[00:58:16] week because of the fourth of
[00:58:18] July holiday here in the States.
[00:58:20] So we will be back in two weeks
[00:58:23] and then we'll have three shows in
[00:58:27] in July to
[00:58:27] end out the season.
[00:58:29] So thank you for joining
[00:58:31] and Kamille and Alli for sharing
[00:58:33] your amazing insights with the community
[00:58:35] and until then
[00:58:37] we will see you guys next time. Take care.