# EVERY Make.com Function: How Each One Works & Which You Should Use

## Метаданные

- **Канал:** Nick Saraev
- **YouTube:** https://www.youtube.com/watch?v=G-DoI1_zmFQ
- **Дата:** 29.03.2024
- **Длительность:** 1:35:47
- **Просмотры:** 23,941
- **Источник:** https://ekstraktznaniy.ru/video/12682

## Описание

Want to become *dangerous* in Make.com? It only takes an hour! In this video I'll walk you through every single Make.com function and give you practical examples of how to use them in your own workflows. We'll talk about whether they're useful or not, the right way to employ them, different data types, and more!

WATCH ME BUILD MY $300K/mo BUSINESS LIVE WITH DAILY VIDEOS ⤵️
https://www.youtube.com/@nicksaraevdaily

JOIN MY AUTOMATION COMMUNITY & GET YOUR FIRST CUSTOMER, GUARANTEED 👑
https://www.skool.com/makerschool/about?ref=e525fc95e7c346999dcec8e0e870e55d

WHAT TO WATCH NEXT 🍿
How I Hit $25K/Mo Selling Automation: https://youtube.com/watch?v=T7qAiuWDwLw
My $21K/Mo Make.com Proposal System: https://youtube.com/watch?v=UVLeX600irk
Generate Content Automatically With AI: https://youtube.com/watch?v=P2Y_DVW1TSQ

MY TOOLS, SOFTWARE DEALS & GEAR (some of these links give me kickbacks—thank you!)
🚀 INSTANTLY: https://instantly.ai/?via=nick-saraev
🧠 SMARTLEAD.AI: https://smartlead.ai/?via=n

## Транскрипт

### Segment 1 (00:00 - 05:00) []

what's going on everybody it's Nick now I've made around a million dollars over the course last 12 months with make. com I've both built automations for other people and then sold them and I've also used them for my own businesses to help generate Revenue Drive sales and that sort of deal and what I want to do over the course of the next hour maybe hour and a half depending a feisty we are uh is go through literally every single make. com function that I've picked up on my time on this platform not every make. com function is useful but knowing every make. com function will go a long way towards making you dangerous on the platform and that's what I want to do I want to show you practical examples of every single function Works uh so strap in and let's get into it okay so what I have here is I have our scenario Builder open I've named this scenario every make. com function how each one works and which one you should use and in order to make this as simple as humanly possible I'm just going to go and select the tools set variable value going to unlink this drag this over here and then this is just going to be our playground and it's where we're going to uh manipulate you know these make. com functions and so on and so forth I'm also going to zoom in a little bit just so everybody can see my screen make. com could be a little bit tough to see especially with all the sunlight out there um yeah and we'll sort of walk you through things end to end now if you click on a field and you open it up uh on the right hand side a little model is going to pop up the first thing you're going to see is a star and that just refers to this is like the variable picker that lets you see variables for modules uh before you but what I'm going to do in this video is I'm going to cover everything except for that so I'll cover the settings I'll cover the math functions the text binary functions the date and time functions for working with arrays and I'll even cover some custom and system variables now I'll be honest um the general functions and the math functions while they're useful they're probably not as useful as most of the other ones so uh just being cognizant of the fact that most people on YouTube will watch like there's like a linear relationship between the length of the video and how many people are remaining at the end of it that's obviously not going to be you but uh just to be cognizant of that I will start with the most commonly used functions the text and binary ones the ones that I personally think drive me the most revenue and simplify my life the most and then I'm actually going to work backwards so we'll do text and binary first then we'll do date and time then we'll do math then we'll do General and then finally we'll do custom and system variables so without further Ado let's get into easily the most powerful of the whole function Suite the text and binary functions so first things first is you have a bunch of different um vaguely rectangular things here I'll start with the simplest excuse me the simplest is length now length I think is pretty self-explanatory essentially uh make. com has a bunch of different data types one of the data types is string another data type is like number or int array another data type is object or collection length basically just tells you the length of a string or of an array and so if I type a very long string in here which is just a collection of characters well I should be very careful with my words when I say the word collection because that's also a make. com term it's uh technically an array of characters and then we run it um you'll see the output is bundle one playground 15 so the length of a very long string is equal to 15 this is an extremely useful function I use it all the time um specifically because it helps me perform like string operations if I'm attempting to get I don't know like a URL or something like that um I can check to see the length of that URL before proceeding or if I'm running something in open Ai and I'm having you know my system generate a certain let's say I'm generating a proposal or something like that I'm having to generate a certain string or snippet of text uh you know the way that a lot of apis and a lot of like proposal platforms crm's work is you know depending on the length of the text other elements in the page get moved around and I'm all about maximizing the customer experience I want things to look really nicely so you know sometimes I may count the length of a generation and then if the length isn't between a certain character limit and another character limit I just do it again and I sort of redo the flow um this helps me get like that nice looking sort of like paragraph wise layout a page uh super useful and I also use this in conjunction with a bunch of other functions which I'll show you right now um the next function is called lower is hopefully pretty self-explanatory again basically you can feed it any string and then by passing it into this lower function if we run this module it will convert that into the lowercase version of that so we fed in all uppercase hello and then we got out a lowercase hello and this is pretty useful when you are dealing with certain apis that have naming conventions where everything needs to be lowercase um you can also do this to format URLs like part of uh my work when I was developing like automated content sites was I'd have you know some URL or whatever and then at the end of the URL I'd have you know the name of a blog post and a lot of the time to make it as simple as possible I would just take the title of the blog post and then I would feed it into the URL uh but obviously you know the title is usually Capital case right or start case or whatever it's called um so in order to prevent that from I guess just like ruining the Aesthetics I would

### Segment 2 (05:00 - 10:00) [5:00]

always just pass that in the lowercase and then uh you know get something like this instead and I'll show you how to encode URLs in a second as well that's quite useful the next is capitalize this is pretty self-explanatory you know internet actually let's say you are um sending an email uh and you know sometimes the data in your CRM has like a lowercase proper noun so maybe it's Peter lowercase if you pass it through the capitalized function then you'll have your uppercase P Peter uh stuff like this is extremely simple and I use it all the time anytime I'm dealing with some type of like formal communication or you know I'm attempting to like maximize the quality of the perceived customer experience by being very uh you know correct and that sort of thing so in email Communications anytime I'm drawing from an API or whatever I will always just run it through capitalize or start case um this just helps me you know get that one in a 100 chance when the data isn't formatted properly or somebody on the team doesn't put it in right this fixes it so always good to implement stuff like that uh start case is another example of the capitalize function it's just instead of capitalizing the first letter of a whole string it'll capitalize every word so you know let's say I have a guy and his name is Peter Smith right if I am feeding this into some proposal or something like that I will use um start case and then feed in the first and the last name and this will just sort of like cover my own ass so that I never run into an issue where you just have like some poorly formatted uh you know introduction or whatnot okay now we get into some functions that a lot of people aren't very familiar with and I'll touch on them regardless but I want you to know that these are very rarely used asky is a good example so you know if I'm um if I am working with people in I don't know French or other languages where accents are more common a lot of the time unfortunately certain apis do not allow you to send uh characters that have accents or non-standard characters that you wouldn't necessarily find like a query keyboard and so asky is just a way to fix that and essentially uh if I were to feed in Clementine I don't actually know how to say that off but it has that Aon that little up Accent on the E and then if I were to feed it into this function asky and then run it essentially what's happening is it's just pulling out any character that's not standard or not part of the asky ASCII set now obviously I think in most cases you don't actually want to do this you just want to like remove the accent and So functionally speaking like in practice what you normally do is you'll feed an asky with a thing and then semicolon and then true and then what this will do is this will actually keep the letter it's just going to remove the accent and then turn that letter into a standard one so you know you'll find this in like older apis especially that are asky coded and they only you know accept asky characters um and if you're dealing with one that's sort of hit or miss you know sometimes APS of shitty documentation or that sort of BS uh you know just pass it through an asky function just to be sure so yeah that's sort of like data cleansing if you want to call it that okay now we get to one of my favorite functions of all time the replace function has tons of utility uh it's extremely versatile and can do so much with it so I'm going to spend a little bit of extra time on here but essentially this replace function you know if you've ever used uh find and replace in Google Sheets or something like that you're probably pretty familiar with this but it's just a way that you can take a string and then depending on whether that string has you know some other thing uh you can you know replace that with with your own string of your own choosing so if I wanted to replace I don't know here here's a great example A lot of the time we have like domain names um and then I don't know we want to isolate certain parts of the domain so let's say we know every single time the domain name is going to be Google but then there's some query and maybe there's some name at the end of it like Catarina uh a really quick and easy hack is just to replace the Google part and then you can just replace that with an empty string and I mean if you run this you're only going to get the Q equals Katarina you can also uh let's say we only wanted to like get the Katarina part we could just replace the whole question mark query and then you know the end of it is like we receive some URL parameter and maybe that's some URL parameter we're going to use in another part of our flow so you know a lot of utility there a lot of things that we can do man it's a sunny day today so yeah replace is very valuable in that case you can also do obviously simpler things um one of the primary use cases that I personally use for replace is you know I use a lot of proposal generation software like my whole the thing that I'm most interested in with make. com is always like developing very simple but like very high Roi like customer experiences like where somebody on my team will do 5 Seconds of work and it'll deliver an experience that the customer thinks took them like 10 hours right I love that sort of thing that's what gets me really excited up in the morning so you know one of the things that I do all the times I'm always like involved in some proposal generation or some asset generation or you know contract generation or whatever and unfortunately something that happens very often with uh proposal platforms is they don't allow you to send new lines in text and what this means is you might write something or generate something or have a template and then you'll pump it into an API like panado or quillow or

### Segment 3 (10:00 - 15:00) [10:00]

something like that and then you know on the back end it'll just strip all of the new lines and then it'll just give you this huge like wall of text which is really ugly and nobody really wants right so we can actually fix that using replace um let's say I feed in a text and it's like hi Peter I hope you're doing well I'd like to talk about XYZ right and we feed this text as it is into an API well a lot of the time the API just going to strip all those new lines what we can do in order to fix this actually let me see if make. com itself strips these new lines no make. com keeps the new lines but anyway what we can do in order to fix this is we can use a the text and binary function special keyword here and we can replace all new lines with like an actual hard-coded new line character and most apis will take this hardcoded new line character and then use it as a way to reconstruct um spaces or new lines in the string and so what I've done here is I've pasted in this text then we're going in replacing all the new lines and so if you think about it like there is a new line character sort of in between these two um the comma here and then the I on the next line so it's taking that it's cutting it and then it's replacing it with this back slash n it's doing the same one over here and then the end result if I run this again is now I have it in a format that you know these apis like where it's all just sort of in one line and then the new lines are just replaced with this you back slash end character and then because this is just like a universally agreed upon new line standard on the back end their API will reconstruct the new line sort of structure so very nice I use replace all the time probably one of my top five functions so that's replace let's talk a little bit about trim now if you guys have seen my previous videos you'll know that I very routinely will like scrape websites and then I have a bunch of like unformatted text um specifically if I'm doing I don't know something where I take a piece of uh I don't know I'm attempting to isolate or scrape like a URL or maybe like a person's name or whatever A lot of the time I'll end up with a bunch of white space to either side so that might be like I don't know like a bunch of spaces here then a name and then a bunch of other spaces over here and what you can do is if you just pass this through the trim function it'll just automatically remove all the white space before and after and so the way to use this and the reason why you might want to use this is just if the formatting is inconsistent sometimes there's no white space sometimes there's like one white space maybe 10% of the time passing a string through the trim function will just sort of cover your ass and make sure that you're okay so I use that pretty often as well okay sweet we're now on to Upper is basically like the opposite of lower which is uh you know I mean pretty appropriately named I think make. com did a good job here you know if we pass in something that's lowercase mostly and then we pass it into the upper function it will convert every single character into its uppercase form so that's hopefully pretty straightforward uh we also have substring is super cool I don't really use it as often as I would probably like especially these days because I've just replaced all of my usage of substring with replace but uh you can do some pretty cool things with substring let's say you're I don't know finding a list of URLs or something and you're attempting to isolate the domain name because you want to feed that domain name into some other service and maybe generate domain name variants for Like A Parasite SEO campaign you can do that really easily with the substring function uh let's say I'm just attempting to isolate the google. com part well what substring basically allows you to do is you feed in a string and then you can slice it based off of like the number of characters uh in the string you know it's easi for me to show you with an example but basically if you know I'm attempting to isolate this part the Google Doom part and I know that all the like you know every time an URL comes and has this https thing it's kind of ugly and maybe I don't want it uh I can just like strip that out and then only get the google. com part and the way that I do it is I go one two 3 four five 6 seven eight I go eight characters deep and then I go all the way to the end of the string and the way to do that is you just calculate the length of you know the thing that you're feeding in so we're using a length function to get the length of htps col backback google. com that'll be the end of our substring and then we are just counting the number of characters at the beginning and this is just allowing us to isolate the domain name that we're interested in which is you know google. com hypothetically so you can do SUB you can use substring pretty creatively to do stuff like that um you can also use it to isolate like uh query parameters like I was mentioning earlier um and you know a lot of the time you you'll be using this in practice when dealing with links and sort of processing things and URLs and that sort of deal so substring could be very valuable okay there's also uh index of and you can use index of in conjunction with substring to do some pretty cool but uh you know I had an example earlier and actually just to make this even simpler why don't I divide this into two parts we'll have we'll Define something called URL and this will be maybe let's make this a little more relevant you know your API goes here you're a pig O's okay that doesn't really let just go your api. comom and then uh you know you have like a bunch of query parameters and this is the UR all that we're sort of feeding in here and then

### Segment 4 (15:00 - 20:00) [15:00]

in the playground what we want to do is uh we want to get the index of you know if we oh I need to save this unfortunately and then access this again okay so we want to get the index of this URL and then we want to find the um question mark Q equals so we want to get like the or I guess what we could do is we could go yeah no we could do like com question mark equals whatever but basically we want to get the index of that question mark so we want to see how many characters into that string does it occur so it occurs 19 characters in and then maybe we want to grab the substring of index of so this is going to equal 19 characters in for that specific string and then I'm going to jump ahead a little bit here and just show you like a math function we'll do a plus and then we'll do I think question Q I think that's three um and then we're going to go all the way to like the length of the URL I think that's 12. URL and then we run this you know we can accomplish I don't think that worked let me just make sure that this index of URL question mark query parameter is working correctly so that equals 22 now we're getting the substring of URL from 22 and then onwards let me run this puppy uh we're getting it from the beginning right now up to 22 so that's not really what we want to do let's do length of URL now this may not work oh yeah there we go it did work um let's make this a two no three okay great pretty convoluted example but I think you guys get my point if we run this now then we receive only the query parameters that we're interested in and then what we can do with this uh using another function which I can show you in a second is we can separate them based off of uh you know based off of the presence of this a or what we could do is instead of three we could just cut right to the Q we could run this now we have question you know um whatever question mark Q equals actually let's do plus one here run this one more time we'll get qal XYZ and a equals BCD and now we could just split this based off of the presence of an amp percent and now we have you know basically an array with various parameters and you know if you wanted you could further split the substrings to eliminate the Q equals and the a equals um this would B basically help you isolate a bunch of URL parameters which you could then use in a later part of the flow or maybe use to recall an API or something like that so hopefully that wasn't too convoluted uh we're going to get into a couple of functions here that I really don't use very often um but you know I told you that I would cover every function so I'm going to talk about them the first is two binary is just a basically like a onetoone representation or a mapping of characters in uh in numbers and so the reason why I show this is because I just put the letter a in there lowercase a and then it um evaluated to 61 if I put you know the letter B in there it'll evaluate to 62 if I put the letter C in there it'll evaluate to 63 I think you know if I put the letter Z it'll be like 97 or 98 or something oh I guess it's 7A that's because it's an heximal anyway you're basically never ever going to use binary um there are some like Fringe cases in which you'll be evaluating I think uh like data that's coming in and then needs like there's some apis that will request data in binary and so you can just feed in whatever you want then send it in binary but you can just think of this as like a it's like translating from one alphabet to another right a is equal to 61 B is equal to 62 uh you know C is equal to 63 whatever all you're doing is you're feeding it your string and then it's translating it one for one into this big binary representation and then you can send it to an API which maybe like only accepts binary so in practice I probably used the two binary function like one time in the last year uh so it's probably not something that you're going to use very often I wouldn't really worry too much about it okay let's keep going um right before we do looks like my face is pretty white so let me just well that is correct my face is very white let's make this a little bit lower okay I think I fixed it um great so let's keep going let's do the two string function uh two string is pretty interesting I mean I wouldn't worry too much about type conversions and stuff like that but to keep things simple and to you know explain it in a way that everybody understands there are a bunch of different um uh like variable types there's like uh a Str string which is obviously just a collection of characters there's like a number and I think it's called num or maybe number in make. com but that's usually just like 1 2 3 4 and you know if something's a string it's kind of hard for you to like use the plus operator between two strings like what is you know hello plus how are you equal right like mathematically can you really perform mathematical operations on strings like that turns out you can but it's a little more complicated you know you can do one plus two that's pretty straightforward right um the reason why we have these different types is to make it very simple to like Define things that we can

### Segment 5 (20:00 - 25:00) [20:00]

and can't do with numbers and strings so like you can do one plus two but you can't do like a plus e for instance right um make. com is actually pretty liberal with this and so they actually let you get away with way more than you'd be able to in like any programming language which is good because the purpose of make. com is to like help you make a bunch of freaking money not to you know nerd out over academic theory of strings and ins and floats and all that but uh but you know two string is basically just a way that if you get a number let's say you get like 17. whatever and then maybe you want to use this as like use this in like a proposal or something or like you know there's no real mathematical function or purpose to have this 17. 349 348 uh you want to use this in like another value that maybe formats it better or something like that then you just convert it to a string or there are going to be some instances in which you have special operators stuff like I don't know null or whatnot that you are sending um and maybe you want to like convert them to a string for whatever reason you can use that the two string operator to turn the null from this like special variable into like an actual oh I don't think I can actually do that that's unfortunate um maybe two maybe true is a better example of that you can convert like this Boolean operator this true from you know like a Boolean item into like a string instead and then maybe you could do I don't know like upper or something to it if you wanted to convert this for some API that hypothetically we want to take capital letters and if you're working with an API it would only take capital letters you should uh you should stop your subscription immediately them okay so that's two string encode URL and decode URL you know I very rarely use these but um essentially you know how in URLs there are like if I were to put a space here and then I would go like ASDS ASDF I would past it somewhere else um you know if you pay close attention you'll see that you know that space that I added between here has now been converted into this like percentage sign 20 the reason for that is because URLs like they're sort of a universal standard where URLs do not accept like spaces and they do not accept certain characters because this would make it I think like insecure when you are accessing a resource on the web or whatever uh because some of these characters like reserve characters that use in like programming and stuff like that so you don't really want to allow anybody to like do programming stuff here right like Drop tables or whatnot it's a programming sort of joke and I'm very lame so I'm not going to do that again uh but you know encoding a URL basically just allows you to get a bunch of text that you want to put into a URL format like edit a whatever and then um it'll replace all of the characters that are not really accessible or allowable in URLs with these Ampersand numbers so Ampersand 20 is a space I think aand 26 is like an ampersand you know there a bunch of different characters essentially that you can encode uh in url and so what you're probably noticing is like a big function of all of these string functions or one of the main use cases a lot of these string functions just converting from like one encoding format or one language or one alphabet to another uh and you know that's a lot about what programming on the web nowadays honestly is you just have an API that only accepts one format or one language and then you're using another API which outputs things in another one and your job is just to connect the two you know it's just to convert things from one format into another make. com is the glue that allows you to do that so decode URL is pretty simple same sort of idea you know if I have like a big function like hello how are you and then I pump that in it'll just take that and then replace it with the spaces or the characters that you know um people are more used to seeing in strings and so you might use this pretty often if you are doing some type of like scraping where you are identifying a bunch of URLs on a page and you know sometimes you'll see all sorts of characters and they're all encoded and they have like hashtags between them number sign 20s uh what you can do is you can pull that and then you know like feed that into some type of artificial intelligence thing to maybe recreate or maybe rephrase a slug and then you could use that as like the slug of a Blog poster or whatnot lots of stuff you could do with encoding and decoding URLs although in practice to be honest I don't really use it that often okay so on that note where we're doing encoding or changing from one language to another um something that I think everybody that wants to make a large amount of money with make. com in the future should get in the habit of learning is a little bit of basic HTML but you know if you're unfamiliar with it HTML is just like a it's just like another language where you can basically enclose elements within these um uh right or left greater than symbols so maybe like B and then the presence or absence of these modifies how the text is rendered on the browser so for instance like you know lower B greater hello and then lower back SLB greater this uh basically just bolds the word hello for you know if I uh bolded the hell and then left the O out it would render as like a bolded H and then like a non bolded o and so you

### Segment 6 (25:00 - 30:00) [25:00]

know a lot of the time this is a very special language and because it's like Universal hypertex markup language is used on the web like this is how all of these web elements are being marked up basically if we go onto the back end of these you know if we view the page Source you'll see it's just all H well maybe not all HTML this is mostly JavaScript is a bad example but you know if you look closely you just have a bunch of HTML here that's sort of like marked up and whatnot um because this is so Universal uh there are many instances in which like apis or services do not want to allow you to use HTML in them because it's a security risk or because of some other formatting reason and so this function Escape HTML just lets you um basically remove HTML and then replace it with like something that is equivalent that is also understood to be regeneratable so I just fed in this like uh you know hell o right here and then what it did is it replaced the um less than symbols with and LT that sends for less than and then semi colon which I think just means character over and then there's a b and then there's an and greater than semicolon that just means that character is over as well then we wrote hell then it was less than back SLB and greater than o I think the O stands for oh actually no the O is just in my string never mind so yeah you're probably not going to use that super often but I figured I might as well cover it now you will probably use oh sorry there's a one more called Escape markdown is just sort of like um an alternative HTML you can think of it as where instead of doing these um you know left and right greater than symbols you are instead using hashtags and so um you know in HTML there is an H1 and an H2 and an H3 and these are like headings and you know in the past they corresponded to the size of the heading so like H1 would be like your biggest heading H2 might be like a subheading H3 sub subheading right well Mark down allowes you to do the equivalent thing in fewer characters just by using a hashtag so maybe instead of you know that H1 thing we just replace it with this number sign and then a space and then it says header you'll know if you've watched my videos in AI that anytime I'm prompting Ai and trying to get it to like output some article or some content I will always prompt it in markdown and I'll say use markdown ATX format um because that way I can like preserve a bunch of information uh related to headings and subheadings and that sort of thing and so you know if for whatever reason the API or the service that you're connecting with does not accept uh markdown then you can escape the markdown and it'll just replace it again with its own sort of character set uh and then you can regenerate that on the back end okay great that stuff's super annoying so let's get to the cool strip HTML I think I showed everybody here um or all of my longtime Watchers in a previous video how easy it is a scrape a website with make all you do is you go to the HTML or HTTP request module and then you put in the URL of your site so in my case I'm doing left click. a right if I just run this puppy and then I click and then check out the data you'll see that I just scraped the entire website I have all of the HTML the it all it took was like a couple of buttons this is everything that is present on my website just in HTML format but HTML is really long and you know a lot of the time I'm feeding content like this into Ai and I don't really want to spend a ton in tokens I mean you know how much does this cost this is 62420 right uh instead what you can do is you can take the output of that and then you can escape the HTML so I'm just going to add one more variable set variable here and then I'm going to feed in this strip HTML I'm going to run and we'll show you the difference between before and after before the HTML coming out of the HTTP makeer request module is huge and it's massive and you know there's some words here that I think we understand right process optimization but it's wrapped in all these tags but if I look at this strip HTML um output then you'll see that there's no HTML here at all it is just pure text and this is now so much shorter this is something that you can easily feed into AI save yourself a ton of money while doing it um and then you know maybe have it tell you something about the website so I use uh strip HTML quite often there's also a designated module called HTML to text and you can use this module it does the exact same thing as strip HTML I think it's maybe has some slight differences in how much how it evaluates line breaks or some like that but really not that big of a deal um but this is a whole another module so you're basically consuming an additional op to run this and if this is something you're doing hundreds or thousands of times a day obviously you want to minimize the consumption of these Ops wherever possible you want to run more profitable flows try and use the uh strip HTML module instead okay great so that's that let's keep moving on what other functions do we have to work with um contains is something I use all the time if you have an array um let me create an array here we're going to talk about this in a second but a very quick and easy way to make an array is just to like split a string based off the presence of a comma or you know some D limiter character and so what I'm doing here is I'm creating

### Segment 7 (30:00 - 35:00) [30:00]

an array with three elements John George and Paul and then I'm just splitting I'm splitting based off the presence of this comma sort of a hack but anyway if I were to run this module I fed it in as a string and the output is I get like a little array data type that's why it says array in the in you know sort of light gray text there uh and then I can like access indexed elements of this array I'll cover that in a sec but essentially so what I'm doing is I'm going to feed in this array and then I'm just going to check to see whether this array contains George if I run this you'll see that the output is a Boolean it's a true or a false and so now that it's a true or false now I can do a bunch of cool with it you know I'm going to cover if statements later but you know the if statement I can feed in like if true then do something else and by feeding in contains like this and then using contains as opposed to like I don't know like a filter I could feed in like every item in here I could iterate through this whole thing and then like filter it one by one I'm saving a boatload of operations it's the sort of like a smarter way to do checks to see if an element is visible and then use that as some other part of your flow so I use contains all the time you're probably can use it as well I think I just showed you how the split function works but essentially you feed in a string then you feed in some delimiter and then you um can divide that string into an array with however many elements are delimited delimiter is just a separator so in this case I'm going to use this vertical line as a separator and I've uh I've put it sort of my format the split is you add the string and then you add the sep the quickest way to consistently isolate an element of an array or URL or something like that based off the presence of a delimiter okay that about covers the most important parts of string next up there are a bunch of what I'd consider unimportant functions uh I probably never use these even once in like a real function for a client or for my own businesses but I'll cover it just for brevity uh just for completeness sake the md5 function is basically like an encryption scheme you know how earlier I showed you the two binary function and then a was equal to 61 B was equal to 62 C was equal to 63 and so on md5 is basically it's a similar idea it's just a way to like encrypt a string like let's say this is my password and I if you feed this string into this md5 function and run it the result will be this long non-human interpretable thing um but you know you can regenerate the original string easily by applying like the inverse md5 function and I don't know if they have like an inverse md5 but let me see md5 to string online let's see if they have this you know let's say I stumble upon this thing in the web and then I decrypt this the result is this is my password so essentially you can think of this as like another alphabet that I'm converting all of my letters into it's a little bit more complicated than that because you're performing some mathematical functions that relate I think to the length of the array and all that or length of the string and all that but uh yeah just a very simple and easy way to think of it and your you're probably never going to use this and if you find yourself using make. com for like cryptographic encryption decryption stuff you're probably not using make. com the right way make. com should be extremely simple a lot of the time it's like strings arrays and dates uh you're usually like modifying some external data source that like other team members have access to not passwords there are also variants of the md5 so you know the same idea applies for Shaw one sha 256 sh 512 these are just increasingly complicated uh ways of encrypting and decrypting data so md5 is like the simplest sha 20 or 512 might be the most um complicated and if you run this through Shaw 512 for instance you'll see the string is a lot longer and you know mathematically it's a lot more secure essentially if you want to like encrypt and decrypt there's also base 64 which is just another conversion method just like to Binary where instead of converting it to Binary you're converting it to uh what's called base 64 you know a lot of people may or may not be confused by stuff like this but I'll be honest you really don't need to know this sort of in order to make it very with make. com I didn't know any of this stuff I was not necessarily

### Segment 8 (35:00 - 40:00) [35:00]

very proficient computer programmer when I started this I watched a bunch of like online YouTube tutorials and I like I knew what HTML was I knew what markdown was but I wasn't good at using them I never really built anything of value uh but even though I lacked that knowledge I was still able to go very far with this so if what I'm saying doesn't really make sense to you or if you're thinking ah man when the hell am I going to use this don't worry too much about it just uh keep on trucking along you'll probably find Value in other sections okay great that is string text and binary functions next up I want to run you guys through the second most important feature of make. com which is the mathematical functions so let's get into it now mathematical functions are pretty interesting because they're I think there are a couple of hand me- downs from like programming or integrat or kind of more like nerdy um academic features of make. com which you know most people don't really use in practice but I'll walk you through them regardless uh the first is there's this Pi variable now I think a lot of most people here probably know what pi means Pi is just like the mathematical relationship between the radius of a circle and I think it's circumference or something like that yeah I think it's radius to circumference um if it's not then sorry area to radius Jesus man it's been a while since I've hit up math um anyway 3. 14159 whatever it's this long string uh a long number you're probably never going to use this in practice unless you're working specifically with like some math package or math Library um I have certainly never used this before and if you find yourself again doing math and make. com more than just like simple addition or summation or averages or something you're probably using it wrong so any you can do some cool with it but yeah probably not for monetary purposes the next uh variable here is random and this is probably like my most commonly used math thing ever uh random allows you to generate numbers between zero and one I believe inclusive and you're probably like well zero and one like that's sort of annoying why the hell do I care about zero and one can't I like just set you know a minimum and a maximum have it generate a random number that way um yeah I think ideally you would but you can do it really simply by just multiplying this random number by some you know number so in my case five so now instead of generating 0 to one I'm generating 0 to 5 um you're also probably thinking well like why does this matter 3. 3 58 when am I ever going to need to like generate a number with 16 decimal points and have that be relevant well you don't really need to the math Library includes a very convenient function called round when now you can just like generate a an integer randomly so now it's generating four now it's ating one right and now you're probably thinking well when the hell is that useful man let me tell you uh one of the most common features in project management is like randomized assignment or like randomized load distribution to different members on the team and you can accomplish this really quickly if I go back to my previous array generator string and I add two more names let's say let's add a couple of female names in there okay so John Erica Paul nixer so if I then generate actually let me just run this and show you guys so if I have like a team roster with five people John Erica Paul Nick and Sarah and then I want to randomly assign work to one of them what I can do is I can and I'm jumping ahead a little bit I'm using the get function here but I can feed in an array and then the index of the person that I want to select from that array and if I randomize that index then basically every time I run this I'm going to be generating a randomly assigned person so now I'm you know I'm picking Paul this next time I'm picking Paul again Paul's pretty lucky okay maybe there's something wrong with my thing okay yeah there's probably something wrong here um let me see get playground no that should work my god did we seriously just generate Paul four times wow this just the likelihood of that is very low I think that's like 0. 2 raised to the three yeah that's like 8% anyway um yeah so yeah the way that this works is it's basically just round or not round robin it's just randomly picking people's names um and then I think I needed to add another person here which is probably why it's not working uh on that run but any who the point that I'm making is you can use this very simply to randomize things that you might need some element of Randomness too like selecting a person on the team to assign a certain task to or whatever now obviously there are different ways to do this sort of Rand uh random assignment you can also do round robin assignment which is just when you go one after the other after the other but this is just one that I use quite often I'll also use this to um generate content a lot of the time so like you know when you're generating content you want to vary the formatting of the content and stuff like that so you know if you're using templates you might want to randomly select templates uh you know that template 15% of the time that template 30% 40% of the time to provide the illusion of your content being random maybe on some you have like two paragraphs then an image on others you have like three bullet points and then like an exclamation or a table on the next section you might have like a bunch of images and then you might have like some quotes uh you can randomly select the likelihood that every one of those are going to pop up by using this random function and then using that in

### Segment 9 (40:00 - 45:00) [40:00]

conjunction with get and then feeding the output of that to some other thing so I do all of those quite often and uh yeah I mean random and round are probably like my two most commonly used math functions as a result of that okay let's walk through a couple of these other ones uh average is pretty straightforward you basically just calculate the numerical average of a few numbers you can feed these in one at a time so I've fed in three and eight the average of this unless I'm silly should be like 5 and a half yeah um or you can also feed in an array so you could theoretically if you had some big number array you could feed it in here and then just calculate the average of that um this is similar to a bunch of other functions let me skip ahead here um like sum does the same thing so you just add up three and eight there's no real point to use sum when you could just use addition I think that addition uh the addition operator here is just a lot more straightforward so i' encourage you guys to stick with that Max just helps you identify the highest number in Array so max of 3 8 and 10 obviously is 10 the Min of 38 and 10 if we replace this would be three um you can feed in arrays to basically all of these mathematical functions will be the same I'm just using individual numbers here to be simple and quick um and then yeah I believe that's it for yeah those so let's cover seal and floor now um just like round sorry uh lets you take let's say we have like 1. 9 just like round allows you to feed in 1. 9 and then as an output get two seal and floor allow you to pull a number up or down to a hole um quite easily but there's some Nuance here and I think it can be pretty difficult for some people to understand if they don't sort of have that like intuitive um programmer sort of brain at this point anyway basically seal will return the smallest whole number well integer I should say but the smallest integer that is greater than or equal to a number and if we just parse this in language and to show you of examples like if I have 1. 9 the smallest whole number greater than 1. 9 is going to be two right um it's not going to be three because three is not the smallest whole number the next one up is two it's also not going to be like one or anything because I'm looking for a number that's greater than this but likewise if I were to feed in 1. 1 it would this number would still evaluate I should say to two because two is the smallest whole number greater than 1. 1 doesn't matter how close we are to the floor uh this function is Seal so it's grabbing like the next number up essentially so if you think of it I wish I had my tablet here but I'm in Prague and I I'm a little Limited in terms of stuff but uh you know if you think about this like a number line where they're like uh little notches on this board and it's 0 1 two 3 basically anywhere you are on the number line if you do the seal function you'll just go to like the next big Notch right uh floor does the opposite so the floor of 1. 1 is going to be one right the floor of 1. 1999999 n is also going to be one because you know on that number line if I'm all the way over to the right really close to two doesn't matter right the nearest notch on the left side is one so it's going to pull you back so that's how those work um and you know I don't really use seal and floor very often I usually just use round uh but some people use seal and floor all the time I think I used floor in my content generator aside from that I really don't use it okay great now we have two very useful functions which I wanted to cover in conjunction there's parse number and then there's format number and I use these all the time one of my big use cases is you know I deal with money so I'm sending out proposal requests I'm sending out contracts I'm sending out like stripe invoices whatever and I want to be able to format money what do I mean by that well um let's say I have a number and that number is this long ass number I'm charging a lot of money here um you know this number isn't very pretty right well maybe I'll make this a little simpler that way it's not going to be let's say I'm charging I don't know 120,000 for something if I were to in my beautifully worded proposal just stick this number in with no formatting I think it would look kind of stupid um and so what this allows you to do is essentially I feel like I'm about to sneeze this allows you to essentially apply some formatting to a number um based off like pretty common conventions now I'm in Europe right now so the convention is like a DOT and then the thousands but you can change the um hundreds and the thousands separator pretty easily by um putting a semicolon and then putting the number of decimal points you want your resulting number to have which I want zero and then to put a decimal separator which in my case is a period and then a thousand comma and if I run this now uh what I'm going to get is 120,000 with like that nice beautiful comma in the middle which is a lot more human interpretable human readable and let's say I wanted to turn that into like a dollar figure I just add a dollar sign ahead of it and then I'd run this module so I've converted like 120 just a number that maybe I resulted from like a mathematical calculation or whatever into nicely formatted string with like the Thousand separator uh put in the right place so I use format

### Segment 10 (45:00 - 50:00) [45:00]

number all the time and you know it just really makes numbers interpretable if I run this with a bunch of extra zeros notice how it's now converted that to 1. 2 billion and it's just you instantly know because you could see the three commas the inverse of this is parse number a lot of the time uh if you are scraping or something like that they'll be numbers and the numbers will be like or whatever right maybe there's a dollar sign there too or something and maybe you want to do something to it you want to like multiply the number by two or maybe add some I don't know you're doing some project management and part of your project management flow involves getting a PDF with like the request for proposal and then taking the budget and then multiplying it by 1. 5 to like give yourself some internal room well you can feed in that number and then you can format like you know if I look here I fed in dollar sign one like this terribly formatted number which makes no sense and then the output of this was I got this nicely formatted number and then what you can do is you can now run mathematical operations on this so I can now do a multiply by two or maybe 1. 5 or something like that and then I can run it and now I can get the other number and then what I do is let's just make this a little less dumb okay great so this is my 1. 5 billion or whatever multiply by 1. 5 right so I'm going to run this input was 1. 5 billion the output is 2. 3 billion and now what I can do is I can feed this into a format number module add a dollar sign add uh zero decimal points and then add my separator and then run it again and I've basically taken in a number or a string I've turned it into a number then performed some mathematical operations on then I've reconverted into a string and then maybe I can send that back or use it in like some other function so these are very important and that's that for math functions we are now going to move on to the third most commonly used function category which are our date and time functions I use all the date and time uh essentially there are two different ways to represent dates in programming and you know make. com more specifically the first is a time stamp is just like uh well let me run it and show you Tim stamp is the number of seconds from January the 1st 1970 which you know if this is the first time that you've done anything like this you're probably like why the hell are we picking the number of seconds from January 1st 1970 the reason why is because basically just a bunch of computer guys got together and just agreed hey we do need like a standardized way to count from some date in order to like make all our computers work let's just Pi January the 1st 1970 okay everybody shook hands and this is the format that we now use called Unix timestamps and essentially um the reason why we use this is because it just makes it really easy to back calculate dates and like that I mean number of seconds if you just multiply or divide seconds by 60 now you have number of minutes and if you divide that by six you have number of hours divide that by 24 you have days divide that by 365. 25 I think you have number of years right so it's just very easy from a mathematical perspective just to hard wire this in and then use this as uh sort of a frame of reference and so know there are two sort of ways to represent it the first is that time stamp and then the second is um a very long sort of agreed upon date time format um which you know make just refers to a date but essentially what it's doing is it's taking the time stamp and then it's just applying a bunch of functions to it to render like a date and time in human readable format like March 29th 2024 at 4:42 a. m. so pretty cool that way um like in my experience I most commonly use the date and time format and make through using the Now function but there are always going to be some apis that are sort of pesky and sort of annoying that are going to request that you use time stamps so just get to understand what both are and like I didn't even know this until maybe like three months ago and I'd made tons of money with makeup until that point in time so isn't super critical just make sure that you at least understand the difference between the two so uh why does this matter well if you have a function that can easily take a Tim stamp or you know evaluate the current date and then if that date is an easily understood format that any API sort of gets intuitively you can just pass this now and it'll just automatically know you're referring to like today you don't have to do any conversions you have to do anything you can do a lot of cool with it like if I want to add I don't know let's say I want to set a due date I have a task coming into my project manager CRM and I just want to set a standard due date in one week well underneath here you see the functions there are tons of add seconds add minutes add hours ad days add months add years and essentially what I can do is I can use the add days function to take today's date and then just add seven days to it then if I run this I now have April the 5th 2024 at 4:44 a. m. what I can do then is I can use this in my API call or in my integration maybe I'm creating a new project and clickup then I can automatically set the due date exactly to seven days after the task is created or the task arrives this allows so much freedom and flexibility in the way that you set due dates you can store like a big project tracker with the deliverable and then the amount of time it takes and then you can just pull from that and then use that to replace you know um you know the ad days um day variable so a lot of freedom that you

### Segment 11 (50:00 - 55:00) [50:00]

have there um all of these other features work the exact same as ad days add seconds add minutes add hours add days add months years so I'm not going to you know beat that horse to death but I hope it's pretty self-explanatory like the value of being able to do this getting some current date modifying it based off of like you know it's just a preset library of functions that work on like a known dat data type and because the vast majority of apis accept this data type you can go really far with this okay so that's now uh and that's the ad feature what if you wanted to set the day set the date set month set year a common feature request when I'm working with people is especially agencies is they have set billing dates they'll have like April the 15th April the 30th April the 28th whatever like they have a some type of date and time where their invoices go out or when a subscription needs to be made so let's hypothetically say we get a new client today then we need to set the next invoice date at April the 15th right today's March 29th April the 15th is what like 17 days away I can't just say now and then add days and then do 17 because what if tomorrow a new request comes in well now it'll be April the 16th that you know we're setting the invoice date to right sort of silly um that's what the set function Suite does for you if instead I wanted to set the date to well actually let me just show you how this works let me first evaluate the now if we just evaluate now on its own it's March 29th right if we set the date of now and we say 15 what it's going to do is it's going to keep every other feature the same every other element of my date so the month will be the same the year even the time will be the same but the date will be different so now we've set this to March the 15th we fed in March 29th as a result we've gotten March 15th and so what I can do is I can now use this in conjunction with my ADD months feature and then I can add one month to March the 15th and then I can get April the 15th and so in this way I can consistently always get the next month's payment period whether it's 45 days away 32 days away 17 days away doesn't matter it's just always going to be um uh you know the exact like next billing period that the client or maybe me uh wants you can also do this for your own payroll right if you're trying to like sum up a list of time entries or something like that to calculate your own payroll you can set like the 15th the 30th you can back calculate that and then you can like set a or queue up a payment to be made on April the 15th exactly as opposed to you know other dates or whatnot and this sort of thing saves tons of time um CFOs in particular love this sort of thing because they spend anywhere from like five to 10 hours per week just queuing up payments and you can just do all that automatically and then just set them up so that the only thing a person needs to do is once every two weeks just look over all the payments give them a thumbs up and then go from there pretty neat there are a couple of other functions down here like format date and parse state which I use quite often basically remember how I said there was this uh this format where you know it's like in human readable format um and if I just use the Now function that I run it it'll be like this nicely uh beautified March 29 2024 44 a. m. well if I go back to this date picker and I Mouse over format date what you'll see is in red there's like the actual machine interpretation of that and that's 2016 or I mean in my case it would be different but here it says 2016-12-28 T um then there's the hour then colon then the minute then the colon and the seconds and it looks like there's even like the milliseconds as well so that's sort of like the machine format that make. com will pick up and then parse for you automatically uh but what that basically means is if we feed in now which renders to that red thing sort of like behind the scenes or under the hood and then we want to convert it into some other daytime format so maybe instead of being rendered as like March whatever we want it just to be I'm in Prague now so maybe some like weird European format uh we want it to be like month day year year uh we can feed that in and then we can convert a date object into a string and so we just fed in that like Long March 29th thing which you know I think looks a lot sexier but we've converted into this date time format month date year year um and this is really useful because you would not believe the number of apis that only accept dates formatted in very particular ways alternatively you can be scraping data sources or PDFs or assets or something like that maybe emails and then you know there's just some autogenerated thing in a specific format which means something different to you because you're in a different part of the world or whatever um and what you can do is you can take that and you can parse it um using the parse date module which is the exact opposite of the format date module where maybe you know I have some date and that's like 2903 2024 and then I feed in some date and time tokens here so uh this would be date dates SL Monon month year year and basically it's just reading this date and then it's saying okay what is

### Segment 12 (55:00 - 60:00) [55:00]

this 29 oh this is the date okay what is the 03 oh that's the month y y why oh that's the year year if you run that it'll then convert that back into like your beautiful date format object which you can now do things like add days you know three to run this puppy again now we have April the 1 and then maybe if you wanted to you can then format the day back into this God awful format um you know if you just like hate life and enjoy murdering babies or something so yeah that's the date and time function super useful I use them all the time last but not least there's a sort of calendar picker which allows you to set specific dates so you wanted to Fe in like March the 5th for whatever reason uh you could do that and you could also change the time and that sort of thing uh in practice I rarely ever use that the most commonly used date functions are format date parse date and then adding a couple things and I'll almost always use now instead of a time stamp as I mention because the vast majority of services only accept um or prefer now and there are a couple of Fringe cases where they want the time stamp okay and that takes me to arrays now arrays are super useful data types to understand uh what I'm going to do over the course of the next few minutes just walk you through sort of like the re rationality behind arrays and um how they differ from objects and make. com essentially an array in make um is sort of like this it's like you have item one item two an item three and I'm putting these square brackets here because that's how most programming languages like represent an array but basically if you feed this into um like a parse Json module uh I think we need to wrap this with I don't actually know if this going to work but let's just do array and do this if you feed this into a parse Json module then the output is going to be our nicely formatted like index item one index item two index item three and then in future variables you can like access the sub elements of that array like you do one two 3 four that sort of thing um so you know arrays are used primarily to iterate through things in make which is quite useful as I'm sure you can imagine and that's what all of these array functions do they take you know something that is formatted in this way where you have like a bundle and then you have an array and then there are multiple items in the array and then they just do something to it so what I'm going to do here is I'm going to use this parsejson module as the input uh for our array functions and then I'm just going to walk you through a bunch of different things that you can do with it so the first function is join is the sister to split essentially where split turned a string into an array join turns an array into a string and so instead of splitting based off some D limiter you can join now I said item one item two item three or something like that but when I run it through the join function the output is going to be a string that's item one comma item two comma item three um I use join reasonably often um but not super commonly length is basically the exact same thing as the string version of length it just allows you to get the length of an array as opposed to the length of a string so if we feed in this array even though you know the string version of that might have like 20 characters the array version of that only has three characters and so you know it'll sort of pick up whatever data type you're feeding it in if it's a string then it'll calculate the length in characters if it's an array items um next up we have keys now Keys is pretty interesting um in order to understand this you need to know what like an object is so let me cover really quickly what an object is in make. com um objects are interchangeable with Collections and if you guys look at this uh and then we Zoom way in when I outputed my parsejson module it said bundle one and then it said collection um the reason why it's a collection is because I have this like comma array and then I have a colon so an object is basically something that follows this format I'm just going to open up a new module here and let me just Auto align these CU it's stting to look ugly let's just call this object an object is just something that has a bunch of key Val value pairs so this would be key1 and this would be value one uh and then if I run this the output is going to be an object with a key and then a value and you see it's sort of like nested whereas arrays are just like item item or value value objects is SL to find a key and then a value and you can obviously swap Swip and Swip you can swap and switch and add multiple data types together so you could have like an array of objects you could have an object that contains an array for instance uh but anyway the reason why I show this is because there's a function called keys allows you to evaluate just the keys of the object we can extract just whatever the keys are um so I have to run this all together in order to get access to the variable here but you see how we put we're going to feed in um object and then I'm just going to put a right bracket there if we run this now basically what I've done is I've only EXT I've created uh I've turned my object into an array and that array contains one item and that's just the name of the key okay we got a couple of other functions here there uh there's slice is pretty straightforward you basically feed in an array and then

### Segment 13 (60:00 - 65:00) [1:00:00]

uh you can index elements of that array this is the spiritual sister to substring uh for the string functions so if I had an array which I think let me see good God I'm consuming tons of Ops whatever I'm doing it for the gr man um if I feed in this array which is item one item two item three I can slice it and then only um you know like I can basically cut it at two and then only show number three if that makes sense so that's what I've done here I've sliced it at the number two and I'm only showing number three um make. com like string indexing or sorry array indexing it's kind of weird and kind of annoying sometimes you do zero indexing which is where you start an array by counting the first element is the zeroth element and then the second element is the first element and then some other functions start at one two three kind of like normally intuitively um unfortunately there's just no really quick and easy way to understand this um maybe if there's enough demand I can like tabulate like a list of functions that are zero index and one index but just run it once before they start using it in an actual flow and it should be okay so anyway I've cut this three element array at the two Mark and then it's only showed the third element if I cut at the one mark it'll show the second and the third element so now I have item two and item number three and yeah you know you'll use slice from time to time but I don't really use it that often I'd much prefer the ability to just like pick and choose the elements that I want um which I cannot wait to talk about the get function oh man I use the get function all the time but any that slice merge allows you to combine two arrays um you can also just feed in the same array multiple times if you want to make duplicates so I'll do that here uh you basically just separate them by semicolons so I fed in the same array twice here and the end result is I'll have an array with six items item one two three I don't really use merge that often uh to be honest you don't really need most of these array functions but anyway uh contains is again the spiritual sister to the contains function in the string Library where you basically just feed in uh you know like a big array of values so I'm going to go back here and feed in my array and then I'm going to say hey does this contain item two if it contains the value of item two then I want you to return a true if instead you know we're looking for item 555 you know it's going to return false and we can use this in logical flows later on which makes it very valuable there are a couple of other ones here um there's remove so you could remove a specific thing from an array so if I'm feeding in my array and then I want to remove the item two then I'm only going to have item three and item one uh I will never use remove I just don't really see a purpose to like continuously perform operations on the array I'd much rather just grab the elements that I want but perhaps there are some cases in which you may and then there's also add um the only situation in which I ever use add is basically you can grab an array and you can just add an element to it so the only situation which I'll ever realistically use an array uh sorry add first I'll show you how it works so add array item four so I'm going to add like a fourth item basically to this array and you know obviously it starts at the end when you add a new item but the only real situation which I'll use this is I'll use the empty array keyword and then I'll just use it to create a quickly a quick array so it's a sort of like my split hack where I split a string into like you know it's constituents based off some delimiter I'll use the empty array and then I'll just add items so I can like create my own three um item array by just saying add mty array item one item two item three and if I just run this the end result is the same thing as my little split hack so one thing that I want to make very clear is you can do the same thing like 20 different ways in make. com and in programming more generally and in life even more generally um but with make. com you know my best or my number one recommendation is just find the way that works for you and then just learn that really good inside and out and then just use that over and over and over again you know the perfect programming practices or whatever they don't really apply here since we're concerned about making money and we just want to be able to like wireframe something as quickly as possible a lot of the time that just involves you know using flows that you understand and know the next function is probably my most commonly used array function and maybe one of my most commonly used functions in general after get um add sorry after get uh split uh switch and then another one that I'll cover soon but the map function allows you to feed in a big array and then basically filter based off the presence of something or then only extract certain elements probably the best way for me to show you this is if I go back to this big parse Json thing where I have array item one item two item three actually let's see this one okay you see I have object key1 value one so let's hypothetically say that I'm running um some type of social app where I have profiles right so my object is now called profiles the name is Nick they'll also be the hair color and the hair color is you guested brown no I'm a blondie at heart um and then let's say I have a couple different entries one is Sam her hair color is blonde one is um Petra and her hair

### Segment 14 (65:00 - 70:00) [1:05:00]

color is black so I have my Json object here and if I run this assuming it's formatted correctly the output is an object with a key of profiles and then a value which is an array and inside of that array are three items one with name Nick hair color brown another with name Sam hair color blonde and last with name Petra hair color black so bear with me here hopefully that makes sense now that we're uh well established in our example let me just isolate this specific subflow and then delete the rest of this now that we have our example what I'm going to do is I'm going to feed in profiles and I'm just going to run through a couple of things let's say I don't really care about the hair color or whatever or no let's say I don't care about the names I just want to get a list of all of the different hair colors that are available to me well in order to do that all you do is you feed in the top level array so in my case profiles and then you feed in the name of the attribute or the key that you're interested in so I'm interested in hair colors only if I run this I will basically remove all of the other information in the object and then convert it into an array which just enumerates over all of the various hair colors that I have um so this is very useful if you just want to get a sense of all of the different options that maybe an object or an array contains um more importantly there are ways to filter using map to select only elements that you're interested in so for instance if I wanted only to select hair color okay let's say instead of hair colors I only wanted to return names right so if I run this right now um I'm going to receive uh Nick salmon Petra but let's say I only wanted to receive or output names whose hair color is equal to Brown well now I'm only getting Nick and so you can use map to basically save you 99% of operational costs I want to say operational I mean like the operation set of things by feeding in the arrays that you'd otherwise feed into like a filter and then just using map to like um do all of the filtering up front in like one shot uh it's a super quick and easy hack one that I use all the time and that's why map is one of my most commonly used functions I'd highly recommend if that little brief demo that I showed you didn't make any sense actually read through the map documentation it's not bad um I think in order to understand it you just need to understand that like you know when you see something like a variable called hair color like that's underneath the name of it says raw and then it's hair color that's like uh that's like its actual variable name and you can use that variable name in this function and many others in order to like access that key so pretty handy highly recommend um we have a bunch of like sorting ones which I will almost never use the shuffle basically if you feed in an array of item one item two item three it'll just randomize the order so it'll be item three item two item one uh sort just allows you to sort based off of usually alphabetical order or date and time um you have a bunch of uh variables here that you can add so you know if you wanted to sort our array of profiles let's say and you wanted to do it by name you could do so alphabetically and the output of that would be an array where the name starts alphabetically with n p and then s because n is before p and p is before s in the uh you know in the dictionary so yeah you can sort things in practice what this usually looks like a sorting based off dates if you're making an API call and a bunch of information is coming in and I don't know it's just not like well formatted or something like that or the sorry not formatted but the information isn't um sorted by dates you can usually just use make. com to sort for you uh but you know the vast majority of the time apis will do the Sorting much better than you could so I would just uh I would just go with the data from the API I got a fantastic little cup of orange juice here one of the things I love about Prague is just how fresh all of the uh the juices and stuff are I think they probably have some like top down EU regulation but man that tastes good okay now we're going to talk a little bit about reverse is just where you'll feed in an array and then you'll convert that array or we're not going to convert it you're just going to like basically flip it so that instead of item one item two item three it's item three item two item one again there are very few use cases in which you'll use this you can also use the sort function with um the parameter descending or as sending to basically reverse however some however something is sorted so reverse doesn't really serve a functional purpose first and last are just ways that you can quickly get the first item in a r or the last element so you know how earlier I split um you know htps google. com and then I split it based off the presence of this if we ran this then we'd get an array with two elements let's put this in the middle here an array with two elements one is htps one's Google well you can also just use the last function to select like the last thing in that array which is Google um so just is the same way doing um you know what we did previously with the get now I much prefer get but I'll

### Segment 15 (70:00 - 75:00) [1:10:00]

talk about that in a sec okay and then we have flatten and then distinct D duplicate to collection to array so flatten um it's kind of weird but there are going to be some instances where you have an array and then inside of that array you're going to have um like another array so let me just show you guys what this might look like in practice if we render our Json and we check the profiles what you'll see is there are three items and then there's a sub array containing item one item two so basically we have an array with an array this is sort of annoying and a lot of apis will unfortunately do this um but a quick and easy hack to basically turn that into just like a on level array uh basically to flatten the array is to feed it through this flatten function and so if we feed in our wonderful profiles array here and then flatten it when we run it then what we're going to do is we're going to pull out those items and then instead of it being an array nested within an array everything is going to be on the high level now on the top level now this is tangentially useful this is more of a programming thing but you will find that some apis for whatever reason Nest things like 30 different subarrays deep and flattening is just a way to bring it all up to the top level and then maybe feed it through map so like a design pattern that people will normally do is you'll have like some array some nested array here you'll flatten the nested array and then you'll map it to pull out you know I don't know keys that only have a certain value or something that's how that works um distinct is just a way distinct and D duplicate like in practice are very similar there's a minor Nuance between them but just treat them as the same for the purposes this video a d duplicate just helps you remove duplicates so if you had an array so let's do empty array oh sorry I can't actually do that I need to use this keyword if um we create an array with item one item two item three and just to walk you through what's happening here I'm defining an empty array then I'm adding item one item two item three to it and then I'm D duplicating it what we're going to do is we're going to remove any items with the same value and so there were two item ones now there's only one item one and distinct does virtually the same thing uh it just allows you a little bit more latitude if you are um if you're using like an array of objects instead of an array of values but it simply allows you to filter based off of whether a name field is the same or a hair color that sort of thing so that's pretty cool and then we get to two functions which I literally never used in my whole life which there are actually a fair number of make. com videos out there on the internet about which I find hilarious because they're so divorced from you know actual functional Effectiveness uh to collection and to array um you you're basically virtually never going to use this but to collection converts an array into a collection to array converts a collection into array so remember ear earlier how we defined uh an empty array and then we said add and then we did like item one item two item three now we have an array with three items item one item two item three what you can do is you can use this function called two collection and then you can um basically convert this into uh sorry it's uh what's the term uh you're okay actually let me just run this and see what happens okay yeah this doesn't work because we don't have uh key value pairs let me try item one let me try run on this yeah I know it's still empty um I guess what I'm trying to say is uh this is so functional like this these two functions are so useless for lack of a better word that you will virtually never ever actually use them in practice you if you have um uh if you have an array that contains objects and so if we have um actually this is probably a good example if we have an array that contains objects which we have here so if we run this is uh profiles and then the type is array and it contains three objects which again make. com also calls collections remember there's that like uh semantic uh disambiguous or ambiguity there uh but essentially we have an array with three objects or three collections name Nick hair color brown name Sam hair color blonde we can convert this whole thing into just like a top level collection with names and then um I don't really know what the value would be here in this case not really sure but let's just try putting both of these here and then running okay so what we've done now is we've instead of um remember how we flattened something and then we pulled the name the keys and the values out basically before we had an array of profiles and

### Segment 16 (75:00 - 80:00) [1:15:00]

nested inside of sorry we had an object and then inside of that object was an array of profiles and then inside of every profile was you know it's like an object with name Nick hairc color brown what we can do is we can redefine that object using the two collection where instead of having like the name Nick hair color brown we've now just pulled out the key and we made that the name and then we can make the value something else so um I tried making the value hair color I don't really think that works maybe I do this then I run it yeah okay cool uh what we've done now is we've redefined this object and we basically turned it from the sort of nested structure into just this collection with three keys uh Nick Sam and Petra and then the corresponding values we pulled out of our array using this like indexing scheme uh as you can tell I virtually never used this and you're probably never going to use this as well I'm just covering this for due diligence purposes but I think that to be completely honest this is something that yeah like you you're probably never even going to look at and if you never look at it you're still going to be fully capable of making a ton of money there's the inverse which is to array which is basically where you convert a collection into array of key value collections um just because of how silly this thing is I'm not going to beat it to death but if you have let's just redo this so you have um profile name let's just say it's like a value called Nick right if we run this oops did not want to add that module if we run this puppy uh we now have like a an object with one key profile name and one value Nick if we feed that into this array and then we run it empty is not a valid collection that's weird oh sorry should have done profile name oh sorry actually this isn't going to work either I need to do one level up we'll do object and then we'll do profile name neck there we go yeah as you could see I uh do not really ever use these functions and that's why I'm quite poor at them anyway what we've basically done is we've taken our um object which is just profile name Nick and then we've converted it into to an array and the array has a sub object which now has a key of profile name and then a value of Nick and it actually uses this key value pair like syntax which again is sort of silly you're never going to use it any who hopefully you uh did the smart thing and you skipped the last five minutes of explanations on those two and we can move on all right that takes us to General functions which are pretty simple I think intuitively to understand but it's more of like um uh just covering all of our bases here you probably already used a lot of these functions um I think you already intuitively understand probably what like if statements and else statements are like uh but we're going to cover them regardless and I need to make sure to plug in my battery before I like blow up my computer or something so just give me a second to take care of that okay now that we're not going to blow up let's run through some general functions now the first is you have an execution ID that just refers to the ID of this specific execution um if I run this now you'll see that it generated 93 BF if I run this again you'll see that it generated 5e 8A 4B if we go back to the history you'll see that there is a Details page for each of these and then if we click on both of them you'll see that the URLs contain the IDS that we just generated so the URL the first run um you know 93 bf9 and the UR of the second run 58 A4 uh this is just a way that you can very quickly and easily isolate a specific execution in practice how this works is when you are developing flows that a lot of other people on your team use and you know you want to maintain them and make sure that they never really mukup um what you do is you basically grab the um like let's say I'm updating a CRM or something like that what I'll do is I'll also add a comment at the end of that with uh um with a link to the specific execution I think it's logs I think that's it but anyway um you know in my case this is my US1 make. com account because I'm on the US server this is the ID of my account specific scenario this is the logs page and then this goes to the ex ution ID so you know I'll usually like wrap this in some type of tag and then I'll say like execution ID and then if it outputs HTML or reads HTML I now have like a button that anybody on the team can quickly click to get to that specific execution uh which can be quite valuable there obviously some very simple mathematical operators here like this is these are brackets and so you can use brackets to group Expressions together you know like 5 plus 2 um times three let me do this correctly time three that equals something different than 5 + 2 * 3 right and brackets just allow you to isolate

### Segment 17 (80:00 - 85:00) [1:20:00]

um various mathematical Expressions mey you're mostly using that with the math Library so don't worry too much about it um I'll cover gets now uh remember how earlier I split a string and the example that I did was based off of a URL and I was attempting to basically just isolate the domain well if I split based off the presence of these two backslashes the end result of that is I'm going to have an array with two items one with htps and another with google. com get is just a very quick and easy way of selecting which item in the array you want so if I selected item two and then I ran this puppy um it equals google. com if I select item number one it's going to equal https and just to show you guys what's going on at the hood using split right when I do this I get my array and then I just use get to select the element that I'm interested in now remember there's also the first and the last function so I can split this uh and then I can just grab well I guess in my case I'd be interested in the last and this will do the same thing but if you think about it like wouldn't you rather use a function that allows you to quickly change whatever element you want and not just be restricted the first to last I definitely would some people will call this less maintainable or less readable but say lovey I much prefer just like the get uh feature for everything so I'll usually use get um in probably like every scenario it's just that ubiquitous and useful there are a couple of additional functions here which you'll understand if you come from a computer programming background and if not I won't walk you to through them too heavily but there's if um and an if statement is basically like if true then return the first element if false then return the second element and so the examples here are pretty simple it's if one is equal to one which is a true statement right that's obviously going to evaluate to true then return a otherwise if it's false return B and then the example um evaluation here is a because 1 plus 1 equals 1 is true now 1 equals to two is false right so if you were to do the same thing with past this is the expression then we're obviously going to return B so this is one of the instances in which I think like the make. com documentation is actually great uh if one is equal to one maybe return like Peter and then you know if not return like Wick or something I don't know um one is one equals one is true so we're going to return Peter now in practice you're not really going to be doing logical operators like this instead you're going to be using um another function called if empty usually what you're doing is you are like calling an API and then you're seeing whether an element exists and if the element exists then you're going to do something if the element doesn't exist you're not you're going to do something else and so uh you can do that with just the if statement but um the ifmt is just like an optimized version of that let's say I'm setting a variable let me delete this and use the set variable remove this and then I'll just call this like API variable and we'll just uh let's just do first name and so what we're doing is we are basically calling an API for the first name variable and then it's returning the Val the value Nick what we can do is if I close this and reconnect this because I uh just added a new variable what we can do is if we go to our general functions and then write if empty um we can make a design pattern where basically we could say if first name is empty then I want you to output something else so maybe you know we have like a placeholder name or something for a proposal or whatnot we're calling an API to like get a name and then we use the name to populate our proposal um if first name is empty then add placeholder and if it's not empty then we just want to do whatever first name is so if I run this in practice because I've added a variable here called Nick and I've actually like you know added the value the output is going to be Nick but let's just say it's empty for whatever reason I get nothing if I run this now then the output is going to be placeholder essentially what this means is it's just like a on line and very easy and interpretable flow where I can just Define um hey you know in the off chance that this is empty I want you to do something else so quite useful in that way next up we have uh probably my other most commonly used function which is called switch uh switch is basically the exact same thing as an if statement it's just multiplying the if statement a bunch of times for different outcomes I want you to think of this as like a giant input to Output map you know if the input is one thing then I want you to Output another thing if the input is this thing then I want you to Output that thing if the input is this other thing I want you to outut this other thing right if the input is a I want you to outut one if the input is B I want you to outut two it's just a very simple map that you can build um to simplify your life and another reason why I really like this is it eliminates the use of routers and make. com are really annoying let's say you want to generate like a proposal but you I don't know have like 10 different proposals that you can generate depending on whether it's like uh service one service two service three whatever you know in make. com what most people do is they will add a router to your flow and then they will add like 10 different routes they'll say you know if first name or

### Segment 18 (85:00 - 90:00) [1:25:00]

let's say service name is equal to I don't know like website or something then we'll do one flow and then if service is equal to oops that's ugly I don't know like SEO or something then it'll be some other flow and we'll say website and then SEO another reason why I hate routers and routers just suck and you should try and get away from them whenever possible is because um if you think about it you just duplicated your work and we have two routes here I would imagine if we had 10 now we've multiplied our work by 10 let's say in the future you want to go through your route and then you want to make an edit to one tiny little thing well now you need to make that same edit to this route the other routes that route and so on and so forth and so what switches allow you to do our switches are basically just routers just uh included in a variable instead of you know in on sort of like a module level if that makes sense um so what I'm doing here is let's say I have a service name instead of first name and my service name is called website and then because I just added a new variable I have to reselect this and basically if an input is website I wanted to Output some I don't know maybe some email or something like some long proposal hello maybe an email hello we can't wait to help you with your okay sorry I actually up there um if the input is website the output would be hello we can't wait to help you with your website or something uh and then if the input is SEO then we'd say thanks for submitting an SEO request we're excited to help you build a great SEO campaign let's just hypothetically say okay and let me run you through the syntax here um basically way that it works is what you do in a switch is just like an if statement you have some expression and if that expression evaluates to Value one then you output Result One if the expression evaluates to Value two then you'll output result two it's basically a series of uh value result pairs basically and then the very first element you do is just always your input so in my case I've said switch my input depending on whether the uh it's equal to website or it's equal to SEO if it's website I want you to Output hello we can't wait to help you with your website and if it's SEO we want you to Output thanks for submitting an SEO request so if I run this you know my input was website so my output should be hello we can't help it away you we can't wait to help you with your website right but if this was SEO now and I ran it the output is now thanks for submitting an SEO request we're excited to help you build a great SEO campaign and so we basically accomplish the same thing that you'd accomplish with a router we've just done it in a single variable and we've done a lot faster honestly so highly recommend you guys use switches wherever possible now if you guys add a final semicolon uh you can use you can basically create like an else route and then you can say I'm not going to rate the screw you I don't want anything to do with you um and what this means is this is basically like if nothing else matches so if I don't know we want uh social media or something uh then the else route will be evaluated so this just a good way to like catch every single possible input and then treat it in some way so yeah very uh very powerful stuff I'd encourage you guys if you know you want get the highest Roi out of this go through the map documentation and then go through the switch documentation as well use it in your flows and just really understand it because those are probably like the biggest operation Savers and the biggest maintainability Savers as well okay and then there are two other functions one called omit and the other called pick um these are silly there's no real reason to use them they're just like sort of hand-me-downs from integromat which is the predecessor to make. com after before they got all purple uh pick is just get just written in a different way uh and it's where you can get things based off of their their keys but um you know like you can also get things based off their keys so I don't really see the point of it anyway if you have an object and the object has like key value pairs like key1 value one key2 value two what you can do is you can pick only the keys that have the name that you are interested in so if I go back to this parse Json and then I make my own object again and then I have key1 value one and then I also have key2 and then value two actually wait a second I don't need to do that what am I talking about I'm all over the place here uh and I don't need that either okay so if I create this object what I get is I get an object with two keys key one value uh key2 and then if I feed this into my playground and then I say hey I want you to pick from this object which is 23. object I want you to pick only key one well the output is

### Segment 19 (90:00 - 95:00) [1:30:00]

going to be an object with only the key1 value in pair likewise if I want you to Omit key1 now the output is only going to be key2 value two pair so he'll basically never use this and I wouldn't really worry about understanding it too much but it's worth at least you know covering there are a bunch of logical operators here which I think are self-explanatory equals is how you get like you know a equals B then do c right that's how you get the evaluation or expression part of the if statement um there is a bunch of other ones there's unequal to there's like greater than less than um over here on the math function side of things but I think most of these are self-explanatory the ones that you might not understand are and or and you'll just never use and or but essentially and um is just a way so if the variable on the left of end and right of end are both true so if their expression that evaluate to true then this will output true but if one of them are different so if this is false let's say then the end operator will evaluate to false this is sort of a hand-me-down from programming and I think it's just make. com trying to cover its bases and be academic and all that stuff or uh is the same as end it's just it evaluates to true if either of the two are true so it's like a or b right versus A and B where both need to be the same and you know you can use these in if statements um but I don't really think that I think that you can do everything that you would be able to do with and or with equals if you just convert things to numbers or you know if empties because you know in reality most of the time you're just calling an API looking for something okay that's that on the general function side of things the last thing that I want to cover are the custom and system variables and I'll do this a very light touch because to be completely honest you very rarely going to use these I should not as well that not everybody will have access to the custom and system variables um I have access to I think because I'm on a specific plan you may not have access to it if you're on like the starter plan or whatever the simplest one is but any uh they can be pretty useful but really the only variable that you're actually going to use here are operations consumed operations left because those are ones that are important essentially remember earlier how I had an execution ID and then I tried to you know I like put down some URL and then I wrapped it in like an a um href equals to like make a link well you can do that really simply by going down to scenario URL and then just going slash execution ID um I think scenario URL logs maybe execution ID and that's just the same thing and that way instead of having to hard code a scenario URL you can just do it dynamically so you know you can copy and paste this or export it as a blueprint it'll just work elsewhere um custom system variables are basically like meta variables they don't do anything for you specifically for this thing um they're just like meta organizational or scenario information you can get data consumed which just tells you the bandwidth um execution started ATS the start time the stop time you know if like the start time is a little longer or something like that you can um I don't know use that in some flow to like autod detect or tell you that there's an issue if there's a problem it's an incomplete execution you can also add that to some Q so you could theoretically have like a watcher and then if it's an incomplete execution if this is equal to true then you could have an additional thing somewhere where you like log that and say hey this is an incomplete execution you should check in on it there's some team variables team ID te name you're never really going to use this in practice and then some organization variables and really the only valuable one here is operations left uh this will show you the number of Ops left at the end of every scenario run uh and the really cool part about this is you can trigger another workflow with this like you could say if operations left is less than 500 or something then send slack message to somebody so you'll use slack module and then you will check to see if this passes the filter and then if it does then maybe you send a slack message to the opsy on your team being like hey man your operations are running low just double check and this is what you want click this button if you want to buy more The Reason by the way why I buy more Ops instead of like setup auto buy or something like that is because make. com does a really weird thing where for whatever reason they charge you more when you enable auto purchase than they do when you uh buy things manually I guess they're charging you for the ease of use or some but I think it's kind of like a dark deceptive practice I'd much rather they get away from it um regardless this is just a way that I like keep my pride intact and I'm like I'm not going to pay more for you know automatic automating uh the purchase of my Ops and uh you know I usually just buy a really big plan and then I'll like send a request or something like that if I get really low instead saves us you know 20 30% or more so yeah that's that okay guys thanks so much for watching this video if you have any questions on specific functions uh if you know you're still here first of all congratulations but if you have any questions on specific functions or maybe you want me to like record a whole video on just like the map or the get feel free to drop it down below um the documentation to make. com can be pretty sparse and can be pretty confusing especially due to the ambiguity and how they Define objects collections arrays that sort of thing so um you know I've tried to take all of that unnecessarily verbose academic language and convert that into something that you know just casual viewers will understand but if I

### Segment 20 (95:00 - 95:00) [1:35:00]

failed in that in any way shape or form just let me know and maybe I can re-record a specific part otherwise I really appreciate you guys making it this far uh to longtime viewers you'll notice that I'm probably in a different place my background is quite off uh and you know I haven't recorded a video in for absolutely forever that's cuz I've moved to Prague to work with a company whose founder and team I respect very much I'm now sort of like their full-time operations guy um and it's going extremely well we're doing a very exciting turnaround time so part of that was because of the YouTube videos that I'm posted consistently as well as some of the partnership contracts that I've been pushing to my clients uh and it was just such a good opportunity I couldn't say no so I'm here in Prague really enjoying my time and uh yeah I'm looking forward to now that I have like a reasonable setup and everything recording some more videos consistently any who like comment subscribe do all that fun YouTube stuff I'll catch you later thanks so much
