1/24/2023 – BuiltOnAir Live Podcast Full Show – S13-E03
Duration: 60 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.
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.
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:10 –
Following Articles Used in this Segment:
[Airtable Community] New API capabilities now in GA and upcoming API ke… – Airtable Community
[BuiltOnAir Community] Add Comment Shortcut
[BuiltOnAir Community] Personal Access Tokens WhoAmI
Automate Create – 00:31:14 –
Watch as we review and work through automations. Jen Rudd will showcasae how she creates bitlinks FROM Airtable, and automate reporting for clicks!
A Case for Interface – 00:42:02 –
Explore Interfaces with “Button Hacks in Interfaces”.
Alli will share a cool hack for how to use Buttons inside an Interface.
Scripting Time – 00:51:47 –
Explore Scripting with “Using JSON for Current View”.
Kamille will demonstrate how to use the Scripting Block to generate the current view as JSON.
Full Segment Details
Segment: Round The Bases
Start Time: 00:03:10
Roundup of what’s happening in the Airtable communities – Airtable, BuiltOnAir, Reddit, Facebook, YouTube, and Twitter.
Following Articles Used in this Segment:
[Airtable Community] New API capabilities now in GA and upcoming API ke… – Airtable Community
[BuiltOnAir Community] Add Comment Shortcut
[BuiltOnAir Community] Personal Access Tokens WhoAmI
Segment: Automate Create
Start Time: 00:31:14
Airtable Automations – Creating Bitlinks From Airtable
Watch as we review and work through automations. Jen Rudd will showcasae how she creates bitlinks FROM Airtable, and automate reporting for clicks!
Segment: A Case for Interface
Start Time: 00:42:02
Button Hacks in Interfaces
Explore Interfaces with “Button Hacks in Interfaces”.
Alli will share a cool hack for how to use Buttons inside an Interface.
Segment: Scripting Time
Start Time: 00:51:47
Scripting Time: Using JSON for Current View
Explore Scripting with “Using JSON for Current View”.
Kamille will demonstrate how to use the Scripting Block to generate the current view as JSON.
Full Transcription
The full transcription for the show can be found here:
[00:01:40] I'm not happy with, we're going live here. [00:01:43] Welcome to the BuiltOnAir podcast, [00:01:46] season 13, episode three. [00:01:48] Good to be with you this Tuesday morning, [00:01:51] we've got a full house today myself, [00:01:54] Kamille, Alli and special guest Jen. [00:01:57] Welcome, Jen, [00:01:59] Thanks for having me. [00:02:00] Good to have you back. [00:02:01] Jen's has been on a few times in the [00:02:03] past. Always good to have you on [00:02:05] and Jen's is going to be sharing some cool [00:02:07] stuff with us later in the show. [00:02:10] So I walk through what we're [00:02:12] gonna be talking about today as always, [00:02:14] it's roughly an hour long show [00:02:15] where we go through [00:02:17] different segments and help [00:02:18] you stay up to date on Airtable. [00:02:20] We always start with [00:02:21] our Round the Bases and talk [00:02:22] about what's going on, [00:02:24] what's new [00:02:25] and what people are talking about [00:02:27] and then a spotlight on On2Air [00:02:30] our primary sponsor and then we will have [00:02:33] Jen walk through automations [00:02:35] and how she uses bit links [00:02:38] within Airtable and [00:02:39] reporting and cool stuff on that front [00:02:43] and then we will have Alli show us some [00:02:47] hacks in interfaces [00:02:49] and how to use buttons to [00:02:51] make your interfaces even [00:02:54] better. [00:02:55] And then a quick shout out to [00:02:56] how to join our community [00:02:58] and then finally Kamille [00:02:59] will walk through some scripting [00:03:02] and using JSON for all of your fields and [00:03:05] whatnot. So cool stuff there. [00:03:07] Alright. Starting off with Round the Bases [00:03:11] a few things happening. [00:03:14] Not a ton still kind of quiet [00:03:16] I think with the new year [00:03:17] but there was a big [00:03:18] announcement from Airtable [00:03:21] from Fred at Airtable [00:03:23] and it's finally happened [00:03:25] they've been talking about [00:03:28] this change coming but [00:03:29] they put a date for api keys to expire. [00:03:33] So essentially one year from now the end [00:03:36] of next January you [00:03:38] the api keys that we've used [00:03:41] for any kind of integrations [00:03:44] those will no longer exist [00:03:46] and they're being replaced [00:03:48] with either OAuth or [00:03:49] personal access tokens. [00:03:52] So thoughts on that announcement? [00:03:56] I'm sure I'm gonna be [00:03:58] annoyed when I have to [00:04:01] replace things but overall [00:04:03] I think it's supposed to [00:04:05] let you have finer control [00:04:06] over each implementations access rights. [00:04:10] So right now you have one api key for [00:04:13] your whole account. And so [00:04:15] I have access to all of my [00:04:17] clients bases including my [00:04:18] bases well if I need to [00:04:20] implement like build them a portal [00:04:22] or something, [00:04:23] I don't wanna put my api key in [00:04:25] there because then they like [00:04:27] just use my portfolio [00:04:28] for whatever because they [00:04:30] have access to it. So [00:04:32] it's a good idea [00:04:33] and I'm sure I'll be annoyed [00:04:34] a year from now [00:04:36] so maybe explain somebody [00:04:38] wanna explain what the OAuth is [00:04:40] versus the personal [00:04:41] access tokens, [00:04:44] I can fumble it. [00:04:46] I've done the personal access tokens, [00:04:49] I have not used OAuth yet [00:04:51] either but it's [00:04:53] from my understanding [00:04:55] so there are certain platforms that [00:04:58] already have authentication that you [00:05:01] could tap into. So the most common one I [00:05:03] use personally is sign in [00:05:05] with your google account. [00:05:06] So instead of making a brand [00:05:08] new account for Airtable [00:05:09] with my user name and password [00:05:11] I just say I'm already [00:05:13] logged into google, [00:05:14] use that as my authentication [00:05:16] and then sign me in [00:05:18] OAuth is a service that allows you [00:05:20] to sort of bridge the gap [00:05:21] between and you know a [00:05:22] top level authenticator [00:05:24] and then whatever your app [00:05:26] or service is I think. [00:05:30] Yeah. Yeah. Yeah. So yeah [00:05:33] the big difference is [00:05:35] you can put scope around both [00:05:38] OAuth and personal access tokens [00:05:41] where you can lock it down [00:05:43] to one base or even now [00:05:44] the cool thing is you can actually [00:05:46] lock it to a work space so if you have a [00:05:48] workspace you can only give access [00:05:51] to that workspace [00:05:53] whereas before you only [00:05:55] have one key and it gave access [00:05:57] to everything that you had access to. [00:06:00] So from a security standpoint [00:06:02] it's good the main difference from OAuth [00:06:04] is yeah, it's more user driven [00:06:06] interface driven, [00:06:08] you have to just click the [00:06:09] button to give them access [00:06:11] instead of pasting in a key. [00:06:13] So the personal access [00:06:15] tokens are really pretty much [00:06:17] kind of like the api keys [00:06:19] but with more granular [00:06:20] control but they kind of work [00:06:22] the same way where you'd have to [00:06:24] copy it and paste [00:06:25] it in [00:06:26] but you can create multiple. [00:06:28] So that's another good thing [00:06:29] so you can have a key [00:06:30] for each third party service [00:06:32] that you wanted to use [00:06:33] except you're not supposed [00:06:35] to use personal access tokens [00:06:37] for third party integrations [00:06:38] they're supposed to [00:06:39] implement OAuth. [00:06:40] So that's something [00:06:42] we're working on at On2Air to get that [00:06:45] working. [00:06:47] A couple of things I don't like [00:06:49] about how they implemented OAuth [00:06:50] there's a couple of things [00:06:52] that I've given them feedback. [00:06:54] That would be nice. [00:06:56] But yeah, in general, [00:06:58] it's definitely kind of more the industry [00:07:02] standard way of of dealing [00:07:04] with access to your service. [00:07:09] So, but that doesn't mean [00:07:11] if you're using Zapier [00:07:13] or Make or On2Air within [00:07:15] the next year there, [00:07:17] you will have to reconnect [00:07:19] your account to Airtable [00:07:21] because those keys will stop working. [00:07:23] So at some point we'll be reaching out to [00:07:25] our customers, letting them know [00:07:27] that they'll need to be [00:07:29] upgrading or updating [00:07:30] their their access. [00:07:32] So that will be a pain. [00:07:33] Like you mentioned throughout the year, [00:07:37] you don't tell them all at once. [00:07:39] You tell them staggered, right? [00:07:41] Yeah. And the main thing, [00:07:43] some people are asking, [00:07:45] I think Kuovonne asked [00:07:47] in here to kind of clarify [00:07:49] you know, is it okay to use [00:07:52] a personal access [00:07:53] token for your third party [00:07:55] now. So, so don't jump the gun. [00:07:58] I would say if you're using [00:08:00] Zapier or Make don't [00:08:02] just create a personal access token [00:08:04] and put that in there because [00:08:05] they're going [00:08:06] to implement OAuth. [00:08:07] I know they mention Zapier [00:08:09] is already working on it, [00:08:11] I assume make will by [00:08:12] the end of the year as well. [00:08:14] And so you're gonna have to [00:08:15] switch over to OAuth anyway. [00:08:17] So it doesn't make sense to [00:08:19] to do a personal access [00:08:20] token unless you want that [00:08:22] granular control [00:08:23] before they make the change. [00:08:25] But you know, I would say hold off [00:08:29] if you're using a major service until [00:08:32] they have OAuth ready. [00:08:36] So that's my thoughts there. [00:08:40] There's some good [00:08:42] you know, so people are asking [00:08:44] about softer and glide [00:08:46] and stacker. Yeah, [00:08:47] all of those [00:08:48] are likely gonna be, you know, [00:08:50] using OAuth by the end of the year. So, [00:08:53] but the hopeful good news [00:08:56] is that as an end user of Airtable, [00:08:59] you should just be able to click [00:09:02] on your 10 emails, [00:09:03] one from glide and one from [00:09:05] Zapier and one from Integromat [00:09:06] and whatever services [00:09:08] that you're using and [00:09:08] just sort of click a link [00:09:10] and it'll say, do you want to use, [00:09:13] you know, do you want to bind Airtable to [00:09:15] whatever it is that you're clicking [00:09:17] on? Yes. And then you should be able [00:09:19] to go on your merry way that I don't [00:09:20] anticipate and users having a whole lot of [00:09:24] process that they have to do other [00:09:26] than just sort of signing in again. [00:09:29] If it it's the developers who are going [00:09:32] to have the headache [00:09:33] if they have external third party [00:09:36] applications like Dan. [00:09:38] Yeah. The thing that's tough is [00:09:41] with OAuth for security reasons, [00:09:43] the token actually expires. [00:09:46] So there's a set time [00:09:47] when that token will expire. [00:09:49] And so the developer on the back end [00:09:51] has to be making sure that they're [00:09:53] refreshing it to get a new, [00:09:55] that's not something the user [00:09:57] has to worry about but [00:09:58] it does make it more complicated [00:10:01] on as the developer [00:10:02] to be constantly making [00:10:03] sure that you've got the recent one [00:10:06] and you refresh it before it expires [00:10:08] otherwise you have to go back [00:10:10] to the user to get them [00:10:11] to re re authenticate. [00:10:14] So that can be annoying as a developer. [00:10:18] But something we deal with [00:10:20] we integrate with google drive [00:10:22] and box and dropbox [00:10:23] and those all use OAuth [00:10:25] and it's the same same thing there. [00:10:30] So fun stuff but yeah that's [00:10:33] that's a pretty big change. [00:10:35] The cool thing, [00:10:37] well the other thing though [00:10:39] to worry about if you [00:10:40] you know this concept of [00:10:41] scoping and giving access [00:10:43] you can also give read only access [00:10:46] or write access so [00:10:47] that's big. [00:10:48] The thing you got to make sure of [00:10:49] if you're already using a service [00:10:51] like Zapier or On2Air or whatever, [00:10:56] you need to make sure when you set up this [00:10:59] OAuth that you're giving [00:11:01] the same permissions [00:11:02] that they needed to to do whatever [00:11:04] you're doing because it might break [00:11:06] your automations [00:11:08] or your integrations if you [00:11:09] give a smaller scope than what they [00:11:12] were relying on before or or access to a [00:11:14] base that they were connecting to [00:11:16] you got to make sure [00:11:18] that you give them access [00:11:19] to that base in that scope. [00:11:21] Otherwise you might break [00:11:23] your your integrations. [00:11:25] That makes sense. [00:11:27] Yeah. So so it's good overall [00:11:31] I wish the thing that [00:11:33] any Airtable developers, [00:11:36] there's a use case that I would love to [00:11:39] implement for our forms is the ability [00:11:41] for like an admin to to give access [00:11:45] to like On2Air to like one base or a base [00:11:50] and then and then have like a secondary [00:11:54] OAuth process where [00:11:55] they don't they where you define [00:11:58] what you're asking for, [00:12:00] what base you're asking [00:12:01] for. [00:12:02] They don't have that concept [00:12:04] basically when when you ask [00:12:05] somebody for access, [00:12:06] they have to decide what base [00:12:08] they're giving access to. [00:12:10] But there's a use case [00:12:11] where an admin wants to say, [00:12:13] I want to set up connection [00:12:15] for all of my users to [00:12:16] this one base and then any of my users, [00:12:20] they don't need to say, [00:12:21] you know, specify the base, [00:12:23] they just say yes, you know, [00:12:25] I'll let you connect to [00:12:26] that base as me. [00:12:28] So that's what I really want them [00:12:30] to implement with their OAuth. [00:12:34] That's the next step. [00:12:37] Yeah. Right. Right. Yeah. [00:12:40] Because like the end users, like a form, [00:12:44] you know, if an end user doesn't [00:12:46] know what they don't have access [00:12:48] to the base or [00:12:48] they do but they don't, [00:12:50] you know really get in there. [00:12:51] They don't know what what [00:12:52] base they need to give access to [00:12:54] and if they don't give access to [00:12:56] the right base [00:12:57] then that integration might not work so [00:13:00] that I might jump on their call. [00:13:03] That's actually the other thing [00:13:04] I was gonna [00:13:05] mention, there is a call coming up with [00:13:10] the developers of Airtable, [00:13:13] I believe this, thursday, right? [00:13:18] On thursday [00:13:20] I believe it is, it's another [00:13:23] don't have it, you're not looking forward [00:13:25] to talking to the Airtable [00:13:27] developers. Yeah, there it is. [00:13:29] Yeah, Thursday, [00:13:32] so that might be one question, [00:13:34] I don't know if I'll [00:13:36] be able to jump on but it [00:13:38] will be interesting to see [00:13:40] if they give any insights there. [00:13:43] Alright, moving on. [00:13:45] Going to the BuiltOnAir [00:13:48] community a couple things, [00:13:51] so I love the BuiltOnAir community, [00:13:53] there's lots of sleuthers in there that [00:13:55] are always finding new things [00:13:58] that come out from Airtable that Airtable [00:14:01] doesn't announce in their own community. [00:14:04] So here's one from Rebecca notice that [00:14:06] if you right click on a cell, [00:14:08] there's this new option to add a comment. [00:14:12] But it's still just at the record level. [00:14:16] This this isn't a field specific [00:14:18] even though you right click on a field. [00:14:21] So it's just kind of a shortcut to [00:14:24] get to the the record menu [00:14:27] but that's something new that just [00:14:30] appears to have come out. [00:14:32] Yeah, I think your records what you call [00:14:34] it would be nice if we could [00:14:36] comment on an individual record [00:14:39] because there's [00:14:39] there have been many [00:14:41] a time where there will be [00:14:42] 100 fields in a base, [00:14:44] and I'm saying why [00:14:46] is this why is this equal [00:14:48] 10 instead of 12? [00:14:49] And having to scroll through [00:14:52] the sometimes very similarly [00:14:54] named fields [00:14:55] it's difficult oftentimes [00:14:58] to pinpoint exactly what someone's [00:15:00] commenting about. So [00:15:02] being able to like directly reference [00:15:05] the field even if it just copied the name [00:15:08] of the field for you [00:15:09] and just put it in the comment. [00:15:11] That would be a good half [00:15:12] step. It'd be nice because now we can [00:15:17] we have copy sell URL [00:15:18] which is supposed to [00:15:20] take you to exactly the field. [00:15:22] So we already know that Airtable [00:15:25] has the capability [00:15:26] to like zoom into exactly [00:15:28] the record and cell you're referring to. [00:15:31] So the comment feature would be nice if [00:15:34] it could directly reference it. [00:15:37] Yeah because the comments are on [00:15:39] the attachments too and you can see which [00:15:40] attachment they commented on [00:15:43] but it's still not individual cells. [00:15:47] Yeah. And do those comments [00:15:49] I was thinking about that [00:15:50] those comments on the [00:15:51] attachment do not they don't show up [00:15:54] in the activity stream do they? [00:15:56] They do they show up in the comment [00:15:58] section now that they separated out. [00:16:00] It does show up in the comment section. [00:16:02] So I have a client that uses like the [00:16:03] interfaces and then they have like [00:16:05] internal conversations [00:16:07] on the on the record. [00:16:07] Let the clients interact [00:16:09] on the attachments [00:16:10] so they can just see those [00:16:12] attachment comments. Interesting. [00:16:15] Yeah so they do already have [00:16:18] one concept of a cell level [00:16:20] comments on the [00:16:21] attachments. [00:16:23] As long as it could get confusing though. [00:16:25] Like where did I put that comment? [00:16:27] Was it on this cell or this cell [00:16:29] or this record? Could get confusing. [00:16:33] So they would definitely need a good [00:16:37] ui to to show all of them. [00:16:39] That's half the battle [00:16:40] for any feature request [00:16:41] is what is it going to look like? [00:16:43] And how do I package this as a button? [00:16:45] Because if it's a 10 step process no [00:16:47] one's gonna want to do it. Yeah [00:16:51] I am rather happy. [00:16:54] I like the I don't know if we [00:16:56] were you might have this [00:16:57] as something to go over [00:16:58] as well but how they separated out [00:17:00] revision history and comments [00:17:02] in the expanded [00:17:03] record. [00:17:06] Yeah it wasn't Okay. [00:17:08] Yeah that's a really a good change [00:17:09] I think because they get [00:17:10] lost so easily. Yeah [00:17:14] I wish it would [00:17:15] it would default all activity [00:17:17] versus comments because [00:17:18] sometimes you come in [00:17:19] there's a bunch of activity [00:17:20] but there's like no comments. [00:17:22] So sometimes it's like [00:17:23] I go to the activity first [00:17:24] but I can see where people [00:17:26] would want the comments [00:17:26] first. Yeah a lot of bases are only me. [00:17:29] So there are no comments because I know [00:17:32] what all the records are [00:17:34] but I need to look at the activity. [00:17:36] Yeah. [00:17:37] Yeah. [00:17:39] So nice little easter egg there [00:17:43] one more from the BuiltOnAir [00:17:46] community. [00:17:47] This one's more developer centric [00:17:50] Florian brought this up. [00:17:53] So there's this concept of [00:17:55] so this is kind of similar to [00:17:58] the OAuth once you have [00:17:59] either an OAuth or a personal access token [00:18:03] there's this endpoint that you can call, [00:18:07] that's who am I [00:18:08] to figure out what [00:18:09] user is you're connected as. [00:18:12] So sometimes as a developer [00:18:14] you have a connection [00:18:15] and you just want to get information [00:18:18] about the user [00:18:19] in most use cases the who am [00:18:20] I gives more information [00:18:22] than just the I. D. [00:18:24] It would tell you the user's name, [00:18:26] email, you know account information. [00:18:29] Airtables is pretty pretty weak in that [00:18:32] regard. [00:18:33] But they do have this concept of scopes [00:18:36] of which is what I talked about of [00:18:38] like access to certain bases [00:18:41] or read only or edit access [00:18:44] and you're supposed to be able to [00:18:47] get that scope information from it but it [00:18:50] looks like it does not work for OAuth. [00:18:55] But it worked let me see [00:19:00] it works for OAuth [00:19:02] but not personal access tokens. [00:19:05] So it doesn't give you that [00:19:07] information which I think is a bug. [00:19:09] I think they confirmed [00:19:10] it's a bug on Airtable's side. So [00:19:12] if you're doing any api development, [00:19:15] be aware that that scopes does not show up [00:19:18] for the personal access tokens as of now. [00:19:23] But that's important because [00:19:25] you need to know like [00:19:26] okay does this did they only [00:19:28] give me read only access to it [00:19:30] so you need to know that as a developer. [00:19:36] Alright, last one. [00:19:38] This just came out this morning. [00:19:41] If you have I got an email [00:19:44] from Softr [00:19:45] Actually this is the one [00:19:48] so Softr, huge platform, [00:19:51] probably one of the biggest third party, [00:19:54] if not the biggest third party app [00:19:56] that's primarily built on top of Airtable. [00:19:58] Although they've branched out from [00:20:00] Airtable now but started as Airtable. [00:20:03] Looks like they're changing their [00:20:05] pricing [00:20:06] so they're they're increasing [00:20:09] their pricing [00:20:10] but they're also moving to keeping [00:20:14] track of how many [00:20:15] So now they're separating out [00:20:18] visitors from internal users to [00:20:20] external users [00:20:21] and I don't know this for sure. [00:20:23] My assumption is internal users [00:20:25] means people that can actually [00:20:27] like modify the app. [00:20:29] So kind of more admin type [00:20:30] users [00:20:32] and then external users [00:20:33] are you know people [00:20:35] that can just edit or interact with [00:20:37] the data, log in to the to the admin [00:20:39] panel or not the admin panel but the [00:20:42] portal. So these are like portal users. [00:20:46] So I believe before they did not [00:20:49] you know put a cap on how many login users [00:20:53] you could have. I think those were [00:20:55] kind of considered same as visitors [00:20:58] So I don't know if any [00:21:00] of you are power Softr users? [00:21:02] Used to have a membership [00:21:04] limits. So memberships were [00:21:06] the external users [00:21:08] you can log in and edit. [00:21:09] I think those tiers are the same. [00:21:11] The visitors might be something new, [00:21:14] but they did have a cap. [00:21:15] So you had like there was an $80 [00:21:18] tier that allowed you [00:21:20] to have logged in users [00:21:22] that didn't have access to edit the app [00:21:25] looks like they have more internal [00:21:26] users now too, from what it looks like [00:21:29] you have more ability to go in and change [00:21:30] it, but it could be not sure exactly. [00:21:33] I saw the email, I just didn't see all the [00:21:36] changes and I was like [00:21:38] oh that sucks. Especially [00:21:40] we're going to roll out new features [00:21:42] to people who get on [00:21:43] the new plans which is [00:21:44] kind of interesting. [00:21:46] Yeah. Yeah. [00:21:49] Yeah. Actually I guess collaborators, [00:21:52] collaborators might be, [00:21:54] so they have collaborators [00:21:56] and internal users [00:21:58] and external users. That seems like [00:22:00] an awful lot of differentiation. [00:22:03] Yeah. [00:22:06] So yeah, I'm not sure that's what Jacob's [00:22:10] asking the differentiate. [00:22:13] Yeah, I don't think [00:22:14] the email made it clear, [00:22:18] I would say because you can have [00:22:20] multiple people [00:22:21] that have access to the account, [00:22:22] like you said to modify internally. [00:22:25] Like if I logged into my Softr account [00:22:27] and I'm actually editing the app right? [00:22:30] I could have a team of people that are [00:22:32] editing that same app. [00:22:33] I'm assuming that's what internal [00:22:35] or collaborators means. [00:22:37] That's very similar to [00:22:39] stackers pricing as well. [00:22:42] They also have odd terminology [00:22:45] around [00:22:46] but [00:22:47] yeah. [00:22:49] Yeah, [00:22:51] so [00:22:52] and it looks like, I don't know [00:22:55] if they had caps on records [00:22:57] per dynamic block. [00:22:58] So there's caps there [00:23:04] Thought they had record caps in general [00:23:06] but not [00:23:07] per block. [00:23:10] That's like a list element. [00:23:13] Well [00:23:14] the problem is, yeah, [00:23:16] the problem is too like [00:23:18] the number like when you have a [00:23:20] editor access on Softr [00:23:22] to different fields, [00:23:23] like no matter what you show in [00:23:25] that block, if you show five fields [00:23:28] and that block, [00:23:29] it will open all the records [00:23:30] in that base that that user can edit [00:23:32] when you click on the edit button [00:23:34] regardless of how it's being displayed. [00:23:36] Which is why you [00:23:37] a lot is because there's just like [00:23:39] all the information. So I don't know if [00:23:40] they're trying to add that functionality [00:23:43] where you're just showing those four or [00:23:44] five fields and that block, [00:23:46] which is why they're differentiating [00:23:48] the pricing or [00:23:49] like the differentiating the number [00:23:51] of fields in the block, but right now it's [00:23:52] like everything when you open [00:23:55] the record to edit. [00:23:57] Yeah. [00:23:58] Yeah, [00:24:00] I'm looking forward to. [00:24:02] I know on their roadmap [00:24:04] is action buttons and that's [00:24:05] something I'm really looking forward to [00:24:07] because I think that will clean up the [00:24:09] editing experience a lot [00:24:11] like you could click a button to like, [00:24:13] you know, update this record [00:24:15] and it opens up in like a model [00:24:17] with just the field [00:24:18] that you need to touch [00:24:19] which would be great, [00:24:22] interesting. Yeah. Yeah, [00:24:25] it's amazing Softr [00:24:28] that I've just been amazed how big [00:24:31] they've grown [00:24:32] and they've raised millions and [00:24:34] it'll be interesting to see. [00:24:35] It will be interesting to see [00:24:37] where they go. [00:24:37] They've already now added [00:24:40] google sheets and [00:24:41] you know, that's where I see [00:24:43] like these platform [00:24:44] s as they add more and more [00:24:45] different data sources. Like [00:24:48] you can't, you can't be the same app [00:24:51] that supports all these [00:24:52] different endpoints, [00:24:53] like it becomes a very different product. [00:24:56] Be interesting to see how it evolves. [00:25:02] All right, that concludes, [00:25:04] not much else going on in the community, [00:25:08] relatively quiet. [00:25:09] There is rumblings, [00:25:10] I'm not gonna announce anything, [00:25:11] but if you're in the BuiltOnAir community, [00:25:13] you've maybe seen rumblings of [00:25:14] maybe something out there. [00:25:16] So next week we're going to have a special [00:25:18] announcement, we'll have a guest [00:25:20] come on [00:25:20] and talk about some other things that [00:25:22] are community related. [00:25:24] So stay tuned for next week for, [00:25:26] for some big news there, [00:25:27] but you've maybe seen some, [00:25:29] some inklings of stuff coming [00:25:32] down the pipeline. [00:25:33] I've seen some mentions of it [00:25:35] in the public like BuiltOnAir channel. [00:25:38] So there is something going on. [00:25:40] We'll announce it next week. [00:25:43] Okay with that. We'll move on to [00:25:45] On2Air ourprimary sponsor. [00:25:47] It's an all in one toolkit [00:25:49] to run your business on Airtable. [00:25:51] It's a suite of apps that help [00:25:53] you do more with [00:25:54] your Airtable environment. [00:25:55] So if you're running your business [00:25:57] on Airtable, you definitely need to check [00:25:58] out On2Air. [00:25:59] We have a cool case study [00:26:02] featuring Jen Rudd [00:26:03] and how she uses On2Air forms [00:26:05] with one of your clients. [00:26:07] So thank you for doing [00:26:08] that Jen. [00:26:10] But today we're gonna talk about [00:26:13] last week we, I gave a sneak peek. [00:26:16] I don't know if you saw Jen, [00:26:17] I know you're anxiously awaiting. [00:26:22] I've been promising it for a bit. [00:26:25] There's just, it's, it's a big big, [00:26:28] big undertaking and [00:26:29] and just working out the final kinks [00:26:32] and bugs but it's there. [00:26:33] You see it [00:26:34] we're going we're going live soon. [00:26:36] But I'm not going to show that [00:26:38] I showed it last week [00:26:39] on last week's video, [00:26:40] but another thing that will be [00:26:42] coming when we launch [00:26:44] with this is one very common use case. [00:26:47] I'll go to the base that I have set up [00:26:50] is kind of a a parent child relationship [00:26:53] now On2Air where we've kind of [00:26:56] pioneered that parent child relationship [00:26:59] within linked fields. [00:27:00] We had that from the get go. [00:27:02] That was one of our main use cases. [00:27:04] When we built our initial integration [00:27:06] with jot form [00:27:07] is being able to have a parent field [00:27:10] drop down field, and then a child field [00:27:12] that was derived based off of [00:27:15] what you selected in the parent. [00:27:16] So typical use cases cars, [00:27:18] so you have your make [00:27:20] and then once you choose your [00:27:21] make then that determines your model. [00:27:24] So we've always had that, [00:27:26] you know kind of mindset [00:27:28] but it was only working [00:27:30] with linked records [00:27:31] but sometimes you want that [00:27:33] functionality with just [00:27:35] single drop down fields [00:27:36] just like here. So [00:27:38] it's pretty common. [00:27:39] I see this in a lot of places where you [00:27:41] might have a status field [00:27:43] and this has three options [00:27:45] but sometimes you want a [00:27:46] sub status and so it's common [00:27:48] to kind of set this up [00:27:50] and you have all of your [00:27:51] options here. But really these three [00:27:54] are only relevant [00:27:56] if the status is planning [00:27:58] and then these two are only relevant [00:28:00] if it's live [00:28:01] and then these are relevant if [00:28:02] it's completed [00:28:03] and you just kind of deal with the fact [00:28:05] that you just kinda need [00:28:06] to know that you shouldn't select [00:28:09] you know an option that isn't relevant to [00:28:12] the parent. And so that's okay [00:28:14] you just kind of deal with [00:28:16] this excess noise and [00:28:17] hope that that you don't get bad data [00:28:20] in there but we wanted to make that a [00:28:22] little bit easier. [00:28:23] And so we actually built [00:28:25] into our select fields [00:28:27] this new feature that's coming out soon [00:28:30] of a parent mapping that works with [00:28:33] and your parent doesn't have [00:28:35] to be a dropdown field. [00:28:37] It can actually be a [00:28:38] text field or a formula field. [00:28:40] And so how that works is [00:28:42] you can enable this [00:28:43] parent mapping and then you just [00:28:46] select what your parent field [00:28:48] is going to be. [00:28:49] So if in the simple use case of [00:28:51] two drop down fields [00:28:53] I select my so you do this [00:28:54] on the child field. [00:28:56] So the sub status field [00:28:57] in this case and you set up and you [00:29:00] say my parent is the status field. [00:29:02] And then we're gonna map [00:29:04] all of the parent fields [00:29:06] and what fields should [00:29:08] display on the child fields. [00:29:10] So you simply select one [00:29:12] value from the parent. [00:29:13] And then this shows all those [00:29:15] child fields [00:29:16] and you say for this parent of [00:29:18] planning I only want to make [00:29:20] these options available. [00:29:22] And then for this live one [00:29:23] I'm just gonna select these. [00:29:25] And then for completed [00:29:26] I'll select these three [00:29:28] and then you're done [00:29:29] and not you have all your mapping [00:29:31] for each of the different parent [00:29:33] and child relationships. [00:29:35] And then you can also [00:29:36] specify if there's no match. [00:29:38] Do you want to display [00:29:40] all of the fields all of the [00:29:41] fields in the in the child no options? [00:29:45] So you can kind of play with that. [00:29:48] And then now once you view [00:29:51] the field like default [00:29:54] since I said display no [00:29:56] options. If there's no [00:29:58] match don't show anything [00:30:00] a sub status until I saw on the [00:30:04] so now when I select planning now my [00:30:07] option changes to just those planning [00:30:10] options that I configured in the in the [00:30:12] mapping. [00:30:13] And then if I change this to [00:30:15] something else. [00:30:16] Now it changes to just those [00:30:18] options. So very quick way [00:30:21] to set up a parent child [00:30:23] relationship between those. [00:30:25] Now if your parent is like a text field [00:30:28] you can actually simply can't show [00:30:30] that here because [00:30:31] I don't have a text field [00:30:33] But you can actually define [00:30:35] what your parent mapping value. [00:30:37] So if they type in something [00:30:40] then you can then set up [00:30:41] what your select fields [00:30:43] are. So you can actually build [00:30:45] some some advanced [00:30:46] use cases where if they [00:30:47] type this or if this is contained [00:30:50] within the field [00:30:52] so maybe you have an email [00:30:54] field and if their email is this [00:30:56] then these are the options [00:30:58] you want to display [00:30:58] things like that. So cool stuff [00:31:00] you can build with our [00:31:02] with our parent mapping [00:31:03] that is coming soon [00:31:04] that it's you're a sneak peek. [00:31:09] Alright moving on. [00:31:12] What's that? [00:31:15] That's awesome. [00:31:16] Yeah. [00:31:18] Thank you. [00:31:19] Yeah that's a cool feature. [00:31:22] Alright Jen we're moving on to [00:31:25] your automation [00:31:26] section, your screen showing, [00:31:30] take it away. [00:31:32] So before we get started [00:31:34] I just want to talk a little bit [00:31:36] about where is my [00:31:37] cursor? [00:31:38] Of two screens, it's a computer. [00:31:40] So air tips is launching. [00:31:42] Its first course. Air tips is [00:31:44] to help consultants [00:31:45] and clients get a better [00:31:46] experience and building out Airtable. [00:31:49] So for consultants I am creating the [00:31:51] client attraction playbook [00:31:52] which will be a course [00:31:53] that's coming out on the sixth [00:31:55] and that's to help consultants [00:31:57] learn how to better engage [00:31:58] with clients how to [00:31:59] find the right clients for them [00:32:01] and how to figure out [00:32:02] how to match the needs of [00:32:03] the clients with their skill set. [00:32:05] So if you're interested it's airtips.io [00:32:08] And the first course is launching [00:32:10] but there'll also be some client [00:32:11] education which I hope will also help [00:32:13] the consultants because the clients are [00:32:15] better educated when they're engaging. [00:32:17] So you can join the community. It's a [00:32:18] slack community similar to BuiltOnAir [00:32:21] and again the course is launching on the [00:32:23] sixth, very excited about it. [00:32:25] That's my plug for the day [00:32:27] and then so as a consultant [00:32:29] a lot of times they get [00:32:31] really weird or not weird but [00:32:33] requests for clients [00:32:34] to figure out how to automate [00:32:35] processes that take a lot of time. [00:32:37] So for a client of mine [00:32:39] in the entertainment [00:32:39] industry, their big name, [00:32:41] you see them at the bottom [00:32:43] of the credits of movies [00:32:44] and so forth. [00:32:45] They have a lot of marketing [00:32:46] that they're doing and they're [00:32:48] using bit links to check the [00:32:49] effectiveness of their marketing. [00:32:51] So what I did is I created a [00:32:54] bit link generator directly [00:32:56] and Airtable so that [00:32:58] it connects to their bit link account. [00:33:00] They have a paid account and they can [00:33:01] customize the link, [00:33:03] both the front half with their [00:33:05] their little snippet U.R. L. [00:33:07] And then also customize the back half. [00:33:09] So what I did was I replicated this [00:33:12] in my own base. And so basically the first [00:33:15] thing that we do is we name [00:33:16] the bit link [00:33:17] or what the initiative is going to be. [00:33:19] So this is just a test [00:33:20] and then in google analytics [00:33:22] sometimes you want to track [00:33:23] where the link is. So we use UTMs. [00:33:26] I don't know what that means in English [00:33:28] but you basically add [00:33:30] an extension to the end [00:33:31] of the link to track where that [00:33:33] link is being placed. [00:33:34] So like here we have facebook [00:33:36] twitter and linkedin. [00:33:37] Also when you're creating [00:33:38] in bitly if you're trying to [00:33:40] use the same URL and [00:33:41] you're trying to create different [00:33:42] bit links off of it, it won't work. [00:33:44] Which is why we use source [00:33:45] and channel and things like that [00:33:48] to append a link to [00:33:49] make it more trackable. [00:33:50] And then also so you can create [00:33:52] customized links based [00:33:53] on the the channel that you're using [00:33:55] or the source and so forth. [00:33:57] So here we're picking facebook, [00:33:59] I added the original languages [00:34:01] of BuiltOnAir. [00:34:02] I'm going to add some tags [00:34:09] and then I'm gonna add a description [00:34:11] so we're gonna add BuiltOnAir community [00:34:16] and I can spell. [00:34:19] And then I'm also going [00:34:20] to put a back half. [00:34:22] So basically a bit link usually have [00:34:23] like bit.li forward slash [00:34:26] string of letters [00:34:27] which doesn't really work for [00:34:29] people especially if you're not [00:34:31] it's not a clickable link [00:34:32] if it's like something [00:34:33] you're putting in print and so forth. [00:34:35] So sometimes you want to customize the [00:34:36] links so it's branded [00:34:38] and also it's just [00:34:39] easier to type out in case people [00:34:41] can't click on something. [00:34:43] So we're gonna call this builds on air. [00:34:46] And basically what I did was [00:34:48] immediately I set up a [00:34:49] paid account and I have [00:34:50] links dot [00:34:52] air tips dot io as the custom front half [00:34:55] of my bit link. So basically every you're [00:34:57] all that I create the front half [00:34:59] is the links dot air tips [00:35:01] dot Io which is just [00:35:02] a sub domain of my domain. [00:35:04] And then I add the back half in Airtable. [00:35:08] And then so I'm gonna get fit link, [00:35:11] you're gonna see all my [00:35:13] junk on the back end [00:35:14] to make sure it's running correctly. [00:35:16] And you will see that it created [00:35:19] that custom bit link in bitly [00:35:23] and so now that the client doesn't [00:35:25] have to go into bitly, add the tags, [00:35:26] all the things and then come back [00:35:28] in here and keep a tracking of it. [00:35:30] Then the next thing that we did is [00:35:33] I created a reporting table. [00:35:35] So I think Ben possibly Scott [00:35:37] has shown that you can [00:35:38] run an automation on a [00:35:40] consistent basis like once a day [00:35:42] to create a report basically. [00:35:43] So the automation is that [00:35:46] every week at a certain time [00:35:48] I want to go into that table [00:35:49] and see find any bit links for their live, [00:35:52] I'm gonna find them all. [00:35:54] And also another note [00:35:55] for bitly, bitly only tracks [00:35:57] links for 60 days. [00:35:59] So at the end of 60 days, [00:36:01] if you keep going past [00:36:02] 60 days eventually it will go [00:36:04] to zero [00:36:04] if people aren't clicking after 60 days, [00:36:07] so it only tracks for 60 days. [00:36:09] So what we've done around that [00:36:11] is we've created different [00:36:12] buckets and Airtable [00:36:13] is we have like 60 days, [00:36:15] 120 days. [00:36:16] And then the automation will say okay if [00:36:18] we're you know day 61 instead of [00:36:20] putting the information [00:36:22] from the click report [00:36:23] into [00:36:24] day 6 60 day bucket, [00:36:26] we put it in a you know, [00:36:28] 120 day bucket so we can see [00:36:30] over every 60 days [00:36:31] to see the effectiveness [00:36:33] over time. And then we kind [00:36:35] of like bottom out [00:36:36] at a year just because a lot of [00:36:37] the links for that particular client [00:36:39] are in print and so forth. [00:36:40] So they're they're longer lasting links. [00:36:42] So that was just something [00:36:44] that you can't change [00:36:46] even in enterprise in bitly [00:36:48] it ends up 90 days [00:36:49] as the most you can get [00:36:51] history for a link click. [00:36:53] So you kind of just check [00:36:54] the last 60 days each time [00:36:56] Sidebar, so and then we basically [00:36:59] I create a record in the reporting table [00:37:02] where I just link all of those bit links [00:37:04] that are live within the last 60 days. [00:37:06] And then because the automation [00:37:09] then picks up okay [00:37:10] if anything is added to that [00:37:12] report then it will run the script [00:37:15] to get the bit that bitly tracking. [00:37:17] So basically like I created a link [00:37:19] yesterday [00:37:20] and then this morning it found that [00:37:22] there was one click on it. [00:37:23] So this updates every morning [00:37:25] for me Monday through [00:37:26] Friday. How many clicks each link got, [00:37:29] so now the team doesn't have to leave [00:37:31] Airtable to create new links, [00:37:33] it gets created in bitly and then the [00:37:34] information comes back here [00:37:36] and then they have automated reporting, [00:37:38] so [00:37:39] that was fun. [00:37:41] We also do the same thing [00:37:42] for male chimps, so [00:37:45] awesome, [00:37:48] cool! So you've done [00:37:50] some scripting and automation [00:37:53] sounds like you're you're a full blown [00:37:58] programmer now. Yeah, [00:38:00] it's funny as I learned javascript [00:38:03] in college and like 2000 and then I like [00:38:05] didn't use it for like 10 years, [00:38:07] so it's very [00:38:08] it's like having the dust off and [00:38:10] also like learning the nuances [00:38:12] of Airtable scripting [00:38:13] and like now I'm trying [00:38:14] to create a vegalight [00:38:15] report and I'm just, [00:38:16] it's sometimes you're like oh this [00:38:17] is so cool [00:38:18] and like look at the cool things [00:38:20] I do sometimes they're like stupid, [00:38:21] why is this happening? [00:38:23] Why is this not working? [00:38:24] But this is this is like [00:38:25] really fun, like it took a while [00:38:27] to figure out how [00:38:28] to structure the script and [00:38:29] stuff like that, [00:38:30] but like now that like [00:38:31] we have it we can take it from base to [00:38:32] base and add it to different initiatives [00:38:34] and so forth. So it's really cool that [00:38:36] like once you unlock the system, [00:38:38] it's really cool like what you can do a [00:38:40] scripting, it's just kind of like [00:38:41] beating your head [00:38:42] against the wall for a while [00:38:43] before you get the answer. [00:38:47] Yeah, absolutely. [00:38:49] I think I missed in your automation. [00:38:53] I didn't see a scripting step to to pull [00:38:56] the, the metrics. [00:38:59] Oh, let me just go ahead and like, [00:39:00] yeah, it's like a daily one. [00:39:03] So here's a new one, right? [00:39:05] Let me click on it [00:39:06] first. [00:39:07] I'm trying to look at two screens [00:39:09] and do the same thing at the same time. [00:39:13] Where is the [00:39:15] custom [00:39:18] I'm gonna click on this one [00:39:19] which is the new one. Right? [00:39:23] And so you can see [00:39:24] the etm up here. So [00:39:26] Dan on the back end of his website [00:39:28] will see that there's the etm [00:39:29] for facebook, right? [00:39:31] And so then I'm going [00:39:33] to jury rig this and just [00:39:35] pretend [00:39:37] this one ran [00:39:39] and then I'm gonna run the script [00:39:43] test action [00:39:47] and there you go. [00:39:49] You can see the one click output [00:39:51] and I learned how to, [00:39:53] because the clicks come back as an array. [00:39:55] I figured out how to [00:39:57] turn those numbers, those [00:39:59] information from an array [00:40:01] to an actual number [00:40:03] and then some those which I was [00:40:05] very proud of. [00:40:06] I'm still figuring that one out, [00:40:08] which I'm sure it's very [00:40:09] elementary to most people, [00:40:10] but it was super fun [00:40:11] to like figure that out. [00:40:12] Like Okay, now I got the payload [00:40:14] here is the information that comes out. [00:40:16] How do I transform this into like [00:40:18] what I actually need [00:40:19] like this is great that [00:40:20] there's like 15555. [00:40:22] What did that turn into? [00:40:23] Like an actual number in the output [00:40:26] in Airtable. [00:40:27] That's all coding is it's just [00:40:30] I have a problem [00:40:32] and then a long pause [00:40:35] and then oh I could maybe do this [00:40:37] and then another long pause. [00:40:39] Maybe if I do it this way [00:40:41] and then there you go. That's coding. [00:40:43] It's problem solving. [00:40:45] Yeah, that was like with mail chimp, [00:40:48] I spent like an [00:40:49] inordinate amount of time trying [00:40:51] to figure out how to get [00:40:53] the number of clicks [00:40:54] across all the links in an email. [00:40:56] And I was like kept [00:40:58] fighting the same report [00:40:59] over and over again. [00:41:00] And then finally like, [00:41:02] oh if I go back up step two [00:41:03] campaigns, the data is there [00:41:05] and I can grab it there [00:41:06] and get the numbers. [00:41:07] So like because it was like [00:41:09] it would just give you like [00:41:10] all the clicks, [00:41:11] not the unique clicks. [00:41:12] So you had to go to the campaign [00:41:14] report to get unique [00:41:14] clicks. Whereas like the individual [00:41:17] like campaigns like it was just, [00:41:19] it was pulling the information [00:41:21] incorrectly [00:41:21] so sometimes you have to like maybe [00:41:23] this isn't the right path. [00:41:24] Is there another path [00:41:25] that would give me that answer [00:41:26] to and it's reading documentation [00:41:28] and trying to figure out [00:41:30] the logic behind it [00:41:33] or the illogical mess [00:41:36] awesome, thank you for sharing that [00:41:39] Jen and coming on and [00:41:41] and promoting airtips.io [00:41:42] february six for that one [00:41:45] is geared towards consultants right? [00:41:47] Your first one [00:41:50] awesome. We will be checking it out. [00:41:54] Thank you. Okay moving on [00:41:58] next we've got Interfaces with Alli [00:42:02] share your screen ready to go awesome. [00:42:07] Alright so this is just a cool little [00:42:11] hack that I've landed on. [00:42:14] And actually one of my friends [00:42:16] came up with half of [00:42:18] this so shout out to Jalen. [00:42:20] So on here I've put together [00:42:23] a very very simple [00:42:24] interface that I've got two pages on [00:42:27] and both of these pages are just [00:42:29] kind of subsets of the same records. [00:42:31] Right? So I've got vehicle maintenance [00:42:34] which I've got like people submit [00:42:37] certain maintenance issues [00:42:39] on these vehicles saying [00:42:41] like oh the motor seized [00:42:43] up completely. For example on [00:42:48] a vehicle [00:42:49] but I want to separate those out [00:42:52] into different interface pages. [00:42:53] But the thing that's really annoying is [00:42:57] If I'm on this cv116 [00:42:59] and then I flip back to my just vehicle [00:43:02] details page. Now I'm back up on [00:43:05] CV166 instead of on [00:43:07] the one that I was before. [00:43:09] So I've put together like a little hack [00:43:12] that I've adjusted over time and I'm [00:43:15] only gonna do kind of half of it [00:43:17] right now for the sake of time. [00:43:19] But so essentially what I'm gonna [00:43:22] start by doing is I'm [00:43:24] gonna copy the U.R. L. [00:43:26] For each one of my interface pages [00:43:29] and just starting with this one here [00:43:32] If I'm flipping through if I [00:43:33] pay attention to what the U. R.L. [00:43:35] Looks like, [00:43:36] you can see that the record I. D. [00:43:38] Changes at the end as I'm clicking on [00:43:40] different vehicles. [00:43:42] So I want to copy this U. R. L. [00:43:46] I'm gonna go into my base [00:43:50] and I'm gonna add a formula field [00:43:54] and I'm gonna add [00:43:55] this one is just gonna be [00:43:57] that was vehicle details, [00:43:58] right? Vehicle details [00:44:02] awesome. [00:44:05] And I'm just gonna get rid of that [00:44:07] last part of the U. R. L. [00:44:08] Because that I want to replace [00:44:11] dynamically slashed [00:44:12] formulaically with my [00:44:14] record I. D. From the base itself. [00:44:18] And so now I have links [00:44:20] that will lead me to [00:44:21] that particular page for each of [00:44:23] these records. I'm gonna repeat [00:44:26] that same thing for my other page here. [00:44:29] Just copy that link [00:44:32] and duplicate this [00:44:35] side. Note. Cool keyboard shortcut. [00:44:37] If you hold option on a Mac or I think [00:44:39] Alt on a Pc [00:44:41] and move this field over. [00:44:43] It duplicates it wherever you want. [00:44:45] So that's a little thing I use often. [00:44:48] Amazingly I've never done that before. [00:44:54] I love it. It works really well. [00:44:56] Except for it's moving slowly right now. [00:44:59] Also P. S. I haven't mentioned [00:45:01] but my internet is spotty. [00:45:03] So I'm on a hot spot [00:45:04] right now so hopefully [00:45:07] everything looks like it's working. [00:45:11] So essentially I'm doing that [00:45:13] same exact thing but with the um U.R. L. [00:45:16] For the vehicle maintenance page [00:45:18] I'm gonna delete this extra field [00:45:22] and now I'm gonna take it one step [00:45:24] further because I could just kind of stop [00:45:26] there and then use my [00:45:28] the built in Airtable [00:45:31] element of the button field here. [00:45:34] To kind of simulate my navigation. [00:45:37] However I don't love all the [00:45:38] I wish I had more options [00:45:40] for colors so I am going [00:45:41] to go back into the base [00:45:44] and I'm gonna add a couple [00:45:46] sets of buttons here. [00:45:47] Now the bummer about this is [00:45:48] that it does add a lot of extra fields [00:45:50] but it's well worth it because it looks [00:45:52] really cool on the other end. [00:45:55] So what [00:45:56] I'm gonna do is I'm just gonna [00:46:03] again [00:46:04] I'm sorry here. [00:46:06] Yeah the the no with your original field [00:46:09] that you just made one for vehicle [00:46:11] maintenance and one for vehicle details. [00:46:14] Couldn't those have started as buttons? [00:46:18] They could have. However [00:46:19] I'm gonna I will explain why [00:46:21] I didn't do it that way. [00:46:22] I'm [00:46:23] I see [00:46:26] I've got there's a method to this madness. [00:46:30] So I'm just gonna reference [00:46:33] that formula that I made here [00:46:36] with my [00:46:39] vehicle details button [00:46:41] but here I'm gonna make this [00:46:44] one say inactive [00:46:47] and here's where things get really cool. [00:46:50] I get it as soon as you did that I [00:46:52] understand why [00:46:55] and then I'm gonna make a [00:46:57] duplicate of that [00:46:58] and also say this one's gonna be the [00:46:59] active one. So instead of my solid red [00:47:02] I'm gonna change this to just white [00:47:04] background with the red text [00:47:08] and then I'm going to repeat [00:47:10] the same thing but for my [00:47:12] vehicle maintenance [00:47:14] and I'm just gonna go [00:47:16] down the rainbow here [00:47:18] and then let's just change this to [00:47:22] like that [00:47:26] maintenance [00:47:33] and [00:47:34] finally [00:47:35] flip this just to [00:47:38] a white background [00:47:40] And then this one is active. [00:47:45] Alright so now that [00:47:46] I have my buttons here, [00:47:48] I'm gonna go back into my interface [00:47:52] and to add my buttons down [00:47:56] at the bottom here. [00:47:58] So I'm on my vehicle details page. [00:48:02] So I want to use the [00:48:03] vehicle details active button [00:48:06] as this button here [00:48:08] and then this is I can't read what [00:48:11] that says [00:48:12] but hopefully that says inactive. [00:48:14] Oops. Yeah [00:48:17] awesome. [00:48:19] And now if I go to vehicle maintenance [00:48:22] I'm gonna do the opposite [00:48:26] so this is now my active page [00:48:29] and then I wanna use [00:48:31] vehicle details inactive [00:48:35] and then finally I'm going to [00:48:38] go up here and say [00:48:40] I wanna hide this in the [00:48:42] navigation. [00:48:45] So that way I don't have those [00:48:47] navigable pages at the top [00:48:49] because they just [00:48:50] throw off all the work that I just did [00:48:52] and make them make it not worth it. [00:48:54] But now when I publish this [00:48:57] becomes my new navigation [00:48:59] and so if I go down and [00:49:00] I'm on C. V. 166 and I click back [00:49:04] to vehicle details. [00:49:06] Now I'm still on CV 166 [00:49:07] and I can see that I'm on vehicle details [00:49:10] because now this button is white [00:49:13] so as I flip between these [00:49:16] and if I had more sets of buttons [00:49:18] it would look even cooler. [00:49:21] But this I like so much more [00:49:22] than the navigation [00:49:24] the Airtable comes with [00:49:25] because I can scroll all the way down [00:49:27] if I'm looking at this vehicle, [00:49:28] I want to stay on that vehicle [00:49:31] throughout all my sets of interface pages. [00:49:36] Lots of cool little things [00:49:38] that you can kind of expand on with that [00:49:41] but [00:49:43] yeah, [00:49:44] so you and a friend just [00:49:46] hanging out Friday night [00:49:48] thinking about interfaces and [00:49:49] buttons and came up with this? [00:49:52] Yeah, like all the kids. [00:49:55] Right. Yeah, absolutely, [00:49:57] yeah it was really cool [00:49:59] and yeah you could like Kamille [00:50:01] said I could have just started [00:50:03] with a button [00:50:04] but then the reason I didn't, [00:50:05] the reason I started with these formulas [00:50:07] is because now I only have to update [00:50:08] these formulas, these two fields [00:50:11] as opposed to all four [00:50:12] of these or whatever. [00:50:14] If I need to change U R L. [00:50:17] So I do a similar implementation [00:50:19] but it's only [00:50:20] I only need one button and so I [00:50:22] just put the U R l formula [00:50:24] in the button but this is a more advanced [00:50:27] implementation where you are [00:50:29] replacing the entirety [00:50:31] of the navigation bar and [00:50:32] well it does add more fields, [00:50:34] it does give you all of the [00:50:35] options that you know, [00:50:36] you otherwise wouldn't have had, [00:50:39] you know, [00:50:40] here's another request for the button [00:50:42] elements in interfaces [00:50:44] to have more colors. Just [00:50:46] we wouldn't have to do a lot [00:50:49] of this nonsense. [00:50:50] Exactly if they only had the same [00:50:53] color options like I hate [00:50:56] how limited they are. But [00:50:59] yeah, that's, [00:51:01] that's about it. [00:51:03] That's cool, [00:51:04] basically creating a new menu system [00:51:08] because if you did the other one [00:51:10] it would just take you [00:51:12] to the top so it doesn't [00:51:13] stay on the record. Right, [00:51:15] so that's awesome. Exactly, [00:51:18] cool. Thank you Alli for showing [00:51:22] that hack that will come in handy. [00:51:25] Alright. One quick plug for [00:51:27] our BuiltOnAir community. [00:51:28] If you haven't joined, [00:51:29] please join us at builtonair.com/join [00:51:33] get in. We have a very active [00:51:35] slack community and [00:51:36] we'd love to have you join us. [00:51:38] Our goal for this year is to [00:51:39] reach 2000 members. [00:51:41] So please join us and [00:51:43] tell your friends our final segment [00:51:45] will be from Kamille. [00:51:47] Talking about some guy named Jason, [00:51:51] Can you guys see my screen? [00:51:55] I have talked about before, the [00:51:58] strange process I've decided upon [00:52:01] that feeds both of my websites, [00:52:03] my personal portfolio [00:52:04] and my business website [00:52:06] which involves using aesthetic [00:52:07] site generator called Jekyll [00:52:10] in order to do that [00:52:11] as opposed to using something [00:52:13] like WordPress or we talked [00:52:15] about Softr earlier [00:52:17] or my best friend Glide [00:52:18] which would feed data automatically [00:52:21] from an Airtable base [00:52:22] or some other source. [00:52:24] I am for some reason committed [00:52:26] to using aesthetics, that generator, [00:52:29] meaning I have to effectively [00:52:32] download data from Airtable [00:52:35] into a file in my [00:52:38] sort of configuration for the site [00:52:41] and have it regenerate [00:52:42] and then I upload all [00:52:44] those files back to my website [00:52:46] using an FTP process. I don't necessarily [00:52:49] recommend doing what I do [00:52:51] but I just think it's fun [00:52:52] and neat. And in order to [00:52:54] do that [00:52:54] the process has changed [00:52:57] a couple of different times [00:53:00] over the course [00:53:01] of me, [00:53:03] you know, making this decision [00:53:05] to run my site like a madman. [00:53:06] But one way or another [00:53:09] I get my information about my website [00:53:13] into a JSON file. So JSON is a method [00:53:18] of organizing data in a way [00:53:20] that's pretty predictable. [00:53:22] If you're familiar [00:53:23] with javascript, you should [00:53:25] be somewhat familiar with the structure [00:53:28] it is In my case an array of objects [00:53:32] and then each of the keys within [00:53:35] my object are linking back to a field in [00:53:39] Airtable with the exception [00:53:41] of I. D. And name. [00:53:42] Those are the two sort of [00:53:44] default properties for [00:53:45] any record in Airtable. [00:53:47] It looks pretty standard for [00:53:50] what you might expect to [00:53:53] get out of an Airtable [00:53:55] download a file into a JSON format, [00:53:59] including a bunch of stuff [00:54:02] that I don't actually need, [00:54:03] like the color of each [00:54:05] of these select options. [00:54:05] I don't actually use that information [00:54:09] but I have it just in case. The oddities [00:54:12] of [00:54:13] my method of making a website [00:54:16] in this manner [00:54:17] is that because Airtable is no [00:54:19] longer allowing permanent [00:54:22] public really accessible [00:54:24] attachment links [00:54:26] using their attachment fields. [00:54:27] I've had to transition into [00:54:29] using google drive. [00:54:32] Well in order to get google drive images [00:54:35] to show up the way I want them. [00:54:38] I'm going to [00:54:39] load really quickly. [00:54:42] I have a gallery of images on my website. [00:54:46] Each gallery image has its own [00:54:52] text if you hover over [00:54:53] and also has the same caption below. [00:54:56] There's a particular [00:54:57] order that these are supposed [00:54:58] to show up [00:54:59] and all of that needs to be controlled [00:55:01] somehow. And so getting back [00:55:04] into the nonsense, [00:55:06] I've had to do a somewhat custom [00:55:08] implementation of exporting [00:55:11] my information out of Airtable. [00:55:14] Hopefully that all makes sense. So [00:55:18] I'm using Airtable's sync source [00:55:22] for google drive. [00:55:24] There's a folder that has [00:55:26] all of my google drive files [00:55:28] that are relevant to my portfolio. [00:55:31] I have selected, I've linked [00:55:33] each of the files [00:55:34] to the appropriate project. [00:55:36] And then for each file [00:55:39] I've given it a caption. Then I have [00:55:43] for each file it has [00:55:47] a [00:55:50] a field that outputs in JSON [00:55:54] format the source of the image. [00:55:57] So the U. R. L. That I could go [00:56:00] to just look at the image [00:56:01] itself and then the [00:56:03] caption of the image which again [00:56:05] is its own little text field [00:56:06] and then whether [00:56:07] or not that image should be the [00:56:09] thumbnail for the project. [00:56:11] So I want to control [00:56:13] which image is the one that [00:56:14] if you're only looking at one image, [00:56:17] what image is that? [00:56:19] And then I have a roll up field [00:56:22] at my project level [00:56:23] that puts this all into [00:56:25] one list, [00:56:27] then [00:56:28] there are several services that do this. [00:56:32] I used a previous service, [00:56:35] I think I've shown on the podcast before, [00:56:37] it's actually still in this base, [00:56:39] but right now I'm using a script [00:56:42] that I made that. [00:56:43] Again, it's not necessarily [00:56:45] for production purposes, [00:56:48] but because I need not just [00:56:50] the law list of projects in [00:56:52] JSON format, they're organized by service. [00:56:56] So if I go back to my website, [00:56:58] you'll see urban design, teaching, [00:57:00] Airtable, podcasting, etcetera. [00:57:02] Each of those is a record [00:57:04] in my services table [00:57:05] and each project is linked to the [00:57:08] appropriate service. [00:57:09] So I need more than one JSON [00:57:12] export out of here. [00:57:13] So what I've done for the scripting app [00:57:17] is made use of the cursor. [00:57:20] So I can say look at whatever table [00:57:23] I'm currently looking at in this case, [00:57:26] it's project, then look at whatever view [00:57:28] I'm currently looking at in this case [00:57:30] it's showcase and then get all of the [00:57:35] records in that view. Unfortunately, [00:57:41] in [00:57:42] custom extension coding, [00:57:45] I would be able to say, [00:57:47] get any fields that are [00:57:48] currently shown in the view [00:57:50] In scripting. [00:57:51] I have to say get all of the fields in [00:57:54] the table or specify each field myself. [00:57:57] So lazily I just get all of the table [00:58:00] fields. And then [00:58:03] I'm doing a loop [00:58:05] to export the record that I all [00:58:07] of the records in this view [00:58:10] into the format that [00:58:11] I want. With a little bit of [00:58:15] customized logic in there. [00:58:18] So I know what fields [00:58:20] I'm looking at [00:58:22] and what fields I don't want [00:58:24] I don't even want to bother [00:58:26] with attachment fields [00:58:27] and I happen to know that I've named [00:58:30] all of those fields. Either files or [00:58:32] thumbnails. I also could have done [00:58:36] a filter to just remove any fields that [00:58:39] had the type of multiple attachment links [00:58:42] I believe is what they're called [00:58:43] underneath. [00:58:46] So I'm saying get all of the [00:58:51] get all of the fields for whatever [00:58:53] table I'm currently looking at [00:58:55] except for any [00:58:56] of the attachment ones [00:58:58] and then export out the name [00:59:03] of the field plus the whatever [00:59:08] value it is for that field [00:59:10] and put it into the format [00:59:12] of JSON and I'm also [00:59:14] tacking on the record I. D. [00:59:16] And the record name [00:59:18] that's this bit at the front. [00:59:20] Get the id of the record, [00:59:22] get the name of the record [00:59:24] and then get all of [00:59:25] the other fields of the record [00:59:26] except for attachments [00:59:28] and then put them in the [00:59:29] same format. [00:59:30] Then I'm doing a lot of nonsense [00:59:34] to get it from an object to JSON format. [00:59:38] They're very similar but not, [00:59:41] not quite the same. [00:59:43] And then nothing really [00:59:45] happens that I see other than [00:59:47] it just spits everything out [00:59:49] into this really long [00:59:50] piece of text. But I just double click it [00:59:53] copy and paste it back into this file. [00:59:56] Projects that JSON and then [00:59:59] this is specific to Jekyll. [01:00:01] But I say Jekyll build, [01:00:02] it assembles my entire [01:00:04] website again and then I push it back [01:00:06] to my website using GIT hub. [01:00:08] That is a very long and silly process [01:00:10] and it doesn't need to be that way, [01:00:12] but it works and I have the pride [01:00:14] in knowing that [01:00:15] I've built this monstrosity [01:00:17] twice with my bare hands [01:00:19] and that's why I've done it [01:00:22] something to be said for that. [01:00:25] Yeah, both of my websites [01:00:28] are built this way. [01:00:29] So my company website [01:00:31] that has all of my, [01:00:32] you know, the stuff that I sell is [01:00:35] built the exact same way [01:00:37] but I've talked about before [01:00:41] wanting to look at is what is a better [01:00:45] overall solution. [01:00:46] And although I really like glide, [01:00:49] I would need a higher [01:00:51] tier that I feel necessary to pay for [01:00:54] to incorporate the login system I use [01:00:58] for my company website [01:01:00] called out setup. [01:01:01] I need to have custom javascript in [01:01:03] order for people to use this login [01:01:06] form thing that comes up on my website. [01:01:09] And so I am testing [01:01:12] another service called we web [01:01:14] which is far more complicated [01:01:16] but it allows me to get [01:01:17] much closer to the style [01:01:19] that I've decided upon [01:01:21] for both of my websites. [01:01:22] You'll notice that the general vibe [01:01:25] of these two websites thus far look [01:01:28] almost identical and that's what [01:01:31] I wanted out of a website builder. [01:01:32] If I were to ever go back [01:01:34] into what normal people do. [01:01:38] So some somewhere down the line [01:01:40] for this season, [01:01:42] you may see me talk about we [01:01:43] web some more as I get further into it. [01:01:46] Cool. [01:01:49] All right, thank you [01:01:50] for sharing that Kamille [01:01:51] and working with Yeah, JSON is very, [01:01:56] very standard use case. [01:01:58] It's pretty much everywhere [01:02:00] in the coding and [01:02:02] scripting environment. [01:02:03] So getting familiar with that [01:02:05] and I think Garrett Garrett [01:02:06] who's watching mentioned [01:02:08] the the integration with google drive, [01:02:09] that's a nice way to [01:02:11] get around the [01:02:14] the attachment expiring issue is [01:02:16] putting them up on google drive [01:02:19] and so that's a [01:02:19] good, good work around that you've got [01:02:22] there, yep. Even for the attachment size [01:02:24] limit, the I think it's like two gigabytes [01:02:26] or something you get at lower tiers [01:02:27] on Airtable. But if you have like [01:02:29] video files for instance that could get [01:02:31] eaten up really quickly. [01:02:33] So just storing them somewhere [01:02:35] else and then linking to [01:02:37] them. It's just you know, [01:02:39] it's pretty helpful [01:02:40] once you get it in place. [01:02:42] Yeah, awesome. [01:02:45] Very cool. [01:02:46] Well that concludes today's show. [01:02:48] Thank you all for coming, [01:02:50] Jen, thank you for joining us, [01:02:52] excited to hear more [01:02:53] of what you've got going on. [01:02:55] We'll have you back in the future. [01:02:58] Thank you. [01:02:59] All right. We will see everybody [01:03:01] next week on next week's [01:03:02] episode of the BuiltOnAir podcast. [01:03:04] Take care. [01:03:05] Thank you.