Automated Document Generation in AppSheet (Concepts Compatible w/ Bots)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
all right well howdy everyone sorry about the delays we had some technical difficulties with the youtube live stream and it got started early so we wanted to make sure that you guys could have your full hour of content because let me tell you today is going to be such a good one if you couldn't tell i'm relaxing on the beach so if you uh but i do have all the chats open on youtube and in the zoom call um as always if you would like any questions uh please feel free to send us a chat or to go ahead and unmute if you're in the zoom call we'd love to hear from you and yeah without further ado let's get started uh like i said today is the webinar from appsheettraining.com we're crew tech my name is clark james i'll be your host i'm also here with mr stephen quarterback the president ceo of crew technologies and we have like i said a really really good one for you today it's going to be automated document generation um i would go into a little bit more depth but stefan told me that we have a lot to cover so without further ado the main concepts are going to be auto creating basic templates for your documents template customization as well as file location nuances so without further ado stefan if you want to go ahead and take over uh i'll let you go ahead and uh all right man sounds good thank you very much clark and yeah we hopefully we'll have a full episode today unless i just blaze through this thing um document gender automated document generation is a huge need inside of companies and it's one of the major um unique value propositions that app sheet brings so it's document generation capabilities are unparalleled in no code platforms from what i've seen so i'm very excited to show you guys sort of a medium implementation medium skill level implementation of these templates so that you can kind of get a grasp of how they work and some of the uniquenesses about them and things that kind of make them a little bit tricky and hopefully we'll walk through a few of those points and you should get a clear road map of how to build your own uh documents based on data inside of your applications so i'm going to go ahead and share my screen here all right and i am starting from total scratch today so i want you to see the whole process just because there's some you know i mentioned file nuances in the concepts there are some tricky things with where files and templates end up in your folder structure that i want to work through today and kind of help you navigate so i'm going to just create a blank spreadsheet for this app and this is going to be a simple order inventory order app i just called order app and i'm going to make a table called orders and we'll give that an id we'll give it a creator created date time make sure we get our nice metadata fields in there and why not put a status and that's all we're going to do for order and then we're going to make another table that is going to be a related table to orders so an order usually has a list of many items that are being ordered so this is a parent-child relationship between an order and order items orders being the parents being the parent an order item being the child and there's actually a third data table that we're going to create here but i'll i'll give you some more insight on that in a second oops okay so the id we want to know what order it was associated with so i'm going to say order id and then we'll give the same creator create a date and then we're going to have item and quantity and i'm going to put an amount column here but we are probably not going to have time to build it out all the way but i want you to kind of see that this is typically what that progression looks like in terms of uh data fields that we'll have in an order or this is similar to like inventory checkout or different types of uh you know stock related um app business applications so this is our order item this is the actual thing that's going to exist as part of our order and order we'll have many of these and an order item will also be related to just a regular item so these are things that are in hypothetical inventory right now so we'll give it we'll give an item a name and a price and let's go ahead and put some fake data in here so go with abc123 um apple two dollars all right and we're going to leave these blank because we're going to end up creating them uh actually yes we'll end up creating them uh from our app instead of with test data in here so something that's important is that our item is actually going to be tied in here item id so we have a relationship in this column back to the order and then we have a relationship in this column back to the item so an item will have many related order items and an order will have many related order items that dynamics when there are two parents that kind of share children this is called a mini to mini data relationship and it's a bit more complex and can be tricky to understand but hopefully you'll see why we use this and why it shows up a lot in document templates so i could uh start here with getting an app sheet add-on or i'm going to go actually back to the my apps page and i'm going to make a new app office of this data table and i'm going to pick data from my google drive and i've got my orders spreadsheet right there app sheet's going to analyze my table and try to build an app i don't have a lot of data in there so that's not going to be super helpful for app sheet it's going to try its best but we'll still have to do some configuration okay so this app is spun up and i'm going to start in the data tab and i'm going to bring in all my other data tables so apps you recognize that there are two other tables in my sheet so i'm just going to follow the quick actions here to add them in all right so i brought in my data tables and now i need to configure the column definition for each table to make sure app sheet's interpreting each field correctly so our order id is going to be our key field if you are unfamiliar with what a key and a label is um this is like a unique identifier or the i call it the social security number of an individual row and a table so it's something that is different than every other row and it's the thing that you always that the computer will search for people for the label is the human readable version of the name for a particular row doesn't always have to be unique but is usually unique i'm going to collapse my app on the right just to give us a little extra space here usually i don't show ids i like to hide them and because app sheet puts this initial value in called unique id which is just a random string of letters and numbers and it's really not valuable to users inside the app so i just hide it so long as it's properly set up there which it is and i'm going to set an initial value here for our creator column and i'm just going to use the user email formula this will enter the email address of whoever is logged into the app at that moment and created date time set to a date but i want that to be a date time so we get hours minutes and seconds along with that and the formula for that is now instead of today and status let's make this an enum column [Music] this allows us to make it a drop down and define some values so i've clicked into the order the column details here to type enum and i'm going to add some values here so pending complete and trashed probably completed keep it consistent and let's make it default to pending so default values you would put in the auto compute section under initial value that way whenever a new row is created it will put this value in uh but next that when you update it it doesn't recalculate if i put in the app formula it'll always try to change it to whatever i uh whatever that formula would suggest so and i like buttons so i'm going to make them be buttons instead of a drop down and we're going to require that status okay order is set up and before i set up order item i'm actually going to do item because in our data hierarchy we have order as a parent and item as a parent so i like to start from the top down again we have our id app sheets set it up automatically for us so the work is done i'm going to hide that column name is set great price is price that's looking excellent okay i'm going to require a name because that's something that every item should have now that i've got both of those set up i can properly configure the child so order id because i want it to reference back to the order itself i'm going to use the ref column type and it's going to ask me what table is this thing supposed to be related to i'm going to point it to the order table and i'm going to press done and then same thing for item id i want this to be a reference to the item table and we'll press done there quantity it's going to be a number field and then amount is actually going to be calculated uh which we will set that up later but this is going to end up being a price and then creator and text our creator and create a daytime creator is going to auto fill to the user email and then we wanted to do now instead of today because we want the minutes and seconds okay and if i was keeping the app clean instead of showing order id and item id which are nice from a data recognition standpoint if i'm going to see it in the spreadsheet i want to know that those are references but to the user they don't really care about that so i'm just going to call them order an item so i'm going to adjust the display name field and that changes how this column name appears across the app okay going to save that app she gave me a warning probably saying hey you can't search this column because it's hidden thank you app sheet appreciate the heads up so opening the app back up um and then actually taking a look over here at info and spec this is like a data diagram and it doesn't appear to have updated to show our data relationships yet so i was going to show you that but i guess not we'll just move on here um in fact let me refresh the page we're seeming to get a little bit of slowness on the load oh there's our spec okay so we see that data relationship that i was verbally describing earlier where an order can have many order items and an item can have many order items so we have two parents one child this is a many-to-many relationship between orders and items okay now let's put together a couple of views here we don't need a calendar view our order is of type card but i'm just going to make it a um a table view for now and i'm going to add our first order so it has pre-filled the name and the time i'm going to save that order and oops forgot to push that sync through let's do that again there it is okay so we have our first pending order and if i want to add some items to it it pre-filled the id which i need to hide by the way i can select an item i want an orange and i want three oranges and then i want also one tesla because why not okay so i've got two items in my order and we can kind of see that because of the related inline view here that was this field was actually auto-created whenever you build a relationship between tables the parent go to the column structure here so data and columns we can see a little blue pencil here indicating that this is a virtual column meaning it is a calculated field that only exists in the app and will not be shown in your underlying data source and there's a formula here that describes the table reference relationship between an order item and an order and it generates a list of all of the order items that were related to this order so app sheet does this automatically every time you build a reference the parent item gets a virtual column that contains a list of all the children and app sheet displays it as an inline view so we can find that out by pressing view here to see this in the full emulator and the tag down here view order item inline will take us directly to that view which is a system view it's a little bit hidden so i have to press show system views and now i'm editing the order item inline oh i closed it i'm going to just configure the column order here to be a little more logical i would like to see the item i would like to see the quantity and the amount that's all i really care about maybe i want to see quantity first excellent and we'll sort by the item id ascending and i'm going to save that okay so we've got our first order set up it has some order items and i would like to generate a pdf document of describing this order so that it could get emailed to the recipient maybe whenever the status changes from pending to completed so what i'll do is i'm going to go to behavior and under the workflow tab there are some suggested automations here that we could do but i'm going to just create a new workflow rule and i'm going to call it completed order pdf and it's asking me what is the target data i want this to be looking at to observe a change and i'm going to let it sit on the order table and it's asking what type of update event should i be watching for and right now it's set to all changes but i'm going to change it to updates only meaning i want to control it from a intentional user interaction as an update instead of any possible interaction as all changes and more than that i want it to only happen when the status changes to completed so i'm going to use a formula in the if this is true condition box and this is not a widely published expression but it is super valuable for workflows so and it i can only do this type of uh expression in a workflow or something that happens on the server side of app sheets logic so workflows and reports are where that occurs and it is i believe this row before and then the name of the column i want to be watching which is status does not equal this row after status so that means somebody changed the status during this operation but i also want to know that it changed to completed so i have to add another condition when we want to compare multiple conditions we have to use uh an and expression to test if multiple things are all true so the way that works is i'll put it at the beginning and everything inside of my parentheses i don't have to do this indenting and entering but it makes it a little bit easier to read so that's why i do it everything inside these parentheses has to be true and you separate each logical test or argument with a comma so i put a comma here and then i'm going to enter my second logical test which is status must equal completed i should be getting a green light here great app she tries to read it out to me it says all these statements are true one the value of this column is not equal to the value here and then status is equal to completed perfect so again this row dot status basically says this row before your sync or before your change was equal the status column of that row id is equal to or does not equal the row after the sync status column so the status value before and after the sync are different indicating that somebody changed intentionally the status column so there we go and then in the do this section my action that i want to perform is create order pdf closed it on me and i could email this to myself but i would like to show you guys uh actually now we'll we'll email it um we'll call it new order for the subject and i'm going to leave the body content default and i'm going to send this email to uh the user so i'm going to use my user email formula there okay i'm doing a lot of setup here if anybody has any questions about what i'm doing so far just let me know and i will uh i'd be happy to slow down or give you any uh contextual information on what i've done so far okay so we have our data structure set our column set we have some test data in here we have our workflow set up the condition trigger is set and we have the do this action of emailing somebody for our new order so just to test that i'm going to go in and change this from pending to completed i'm going to force the sync and there we go we have an email in our inbox and it just has the default details of my order which is fine but i want to expand on that and i would like to have a pdf attachment so i've scrolled down to the attachment content type attachment template attachment name and file store section of my email workflow this feature is also available in save file but we're gonna stick with the email oh just deleted everything that's okay refresh button okay so let's get this attachment template set up app sheet does this a solid and they have this create button and what this does is it creates a google doc template for us to customize with some basic material in it which is very helpful especially if you're new to the document template expression language which has all these double carrots which can be a little bit daunting or confusing as to what does what and why okay so i waited a few seconds after pressing the create button and app sheet returned a document id here this is an id for a google doc that it just created for me and if i press view it opens that document for me and shows me some cool stuff so completed order pdf gives me a title uh based on my workflow name it says hey here's the details from the order table gives me my three columns and then it also includes order item information in a nice little table assuming that i would like to see all my records printed out now a simple merge tag you know that's that's easily understandable as to what it does this is going to between these carrots it's going to execute this expression which you may or may not be familiar with but any column name inside square brackets means print the value of this column so that's going to print the creator value the create a date time value and the status value but then we come down to this table and we see some of those familiar things this is going to print the order id the item id and the quantity and the amount but we also see some other tags here start and end so this is app sheets expression syntax for saying hey i've got a list of things that i want you to run through and for each item in here i want you to print out the id order id and anything else between the start and end tags so this is really helpful for this particular use case where we're going to have multiple order items rather than having to guess how many and i would hard code all of these tags for two three four five or really there's no way to know how many the user would put in actually gives us this handy start expression so it's fun oh yeah jake your start expression doesn't specify a table it just goes straight to a column that is a good observation so i'm going to stretch this out a little bit mercy so that we can see a little bit better so in fact i will actually copy this out and put it over here and bold it up okay so the syntax for this starter is double carrots start colon and then after that it expects you to pass a list of keys so a list of ids of records in another table normally if we wanted to pass all the order items we would write it like this the name of the table order item and then the name of the column we wanted to return which would be id and if we wanted to filter that we could put it inside of a select expression or inside of a filter expression and all that does is return a list of ids so saying order item id is equivalent to coming over here to our orders table and saying i want everything in column b oh sorry whoops column a because these are the order ids order item table id column give me everything in this column which right now is only two values and so it would return just these numbers back to appsheet but appsheet recognizes it as a key column for another table and says okay you've given me the key for all these records i can go and search based on that key and return other row information so if you give me the key for this row i can give you anything else in the row so that being stated what we have here is the column related order items this column again i mentioned was a virtual column it only exists in app sheet only exist in app sheet so not in our spreadsheet related order items and this is a list column and it's a list of keys from the order item table so when we built that relationship between orders and order items app sheet created this and it lists all of the order items that are related to this rows order id so to step through that we're saying this order has an order id of 5a 95e944 that virtual column looks in the order item table and searches for everything that has an order id of the same value and then it returns the keys so we end up with these two values which is the same result as this expression here we would have to filter this to always get the same result but this column is technically equivalent to uh this plus a filter for the current order row and in fact you can treat this as if it is its own subtable in the app so you could say um this which would return a list of item ids from everything in this sub table of keys sub list of keys which we know this is the full sublist just these two items because they're related to the order id and so that formula would actually return abc123 and abc125 so that is just a little it's kind of tricky to understand we're used to seeing table and column notation list notation like this but these related columns that are list of keys can be treated as if they are their own table names so that is a fantastic question and this is a hurdle that a lot of people get stuck on especially with templates so i'm very glad you asked good thanks so we have the start expression here related order items and so for every key or every order item record print id order id item id quantity amount and then stop and then move to the next one and it will basically add a new line to this table and keep printing them out until it circles through or loops through all of the related order items and now let's continue our configuration here and do a quick test so we're back in behavior in the workflow tab opening our workflow stepping into that action and let's give it an attachment name and let's say um let's call it order underscore and i'm going to put a merge tag in here for let's grab a column with our crew tools here from our order um the created date time just copy that and it's set to attach and not archive we're going to leave it that way but i will turn this on in a minute so we can explore some of those file saving nuances alright so we've got our test here and let's set up our trigger again so i change it to trashed if i set it up properly it should not send me a new order all right i've got nothing now if i move it back to completed force the sync i should be getting a new order here in a few seconds there we go sometimes it takes a little bit longer when we do the document generation there we go it has to the workflow goes through a few extra steps behind the scenes so now we have the same email but we have a pdf attachment and it is the named with the naming convention that i set up for it and if we look at it it is a very plain filled out version of our table we see the two records that are related and we notice that it's giving us a lot of things that nobody understands what these mean nobody cares what the id is and it's showing us the raw order id and item id for our records now i would personally like it to look a little bit more like our related order items here with quantity item and amount and that's it so i'm going to delete a couple of columns and i'm going to rename this one to item and instead of showing the id here i'm going to show the item id now again that is going to print out this value abc123 abc125 which is not what i want so i'm going to use a d reference formula which is something you can do when you're printing out a reference column you can use a d reference to extract a value from that row that's identified by this reference point so for that item id i want to follow through this item id abc123 and i want to return its name so this is very similar to vlookup in a spreadsheet but it's a lot more simple to write you just put a period and then the name of the column which i think is named yes name and then close the brackets so reach through the key or i like to call the door reach to the door identified by the item id and pull out the name and why not stretch this out and do a little bit of formatting the margins here are really tight on this table so what i could do is i could right click on it and click table properties and i could add some cell padding so i'm just going to add 0.08 to my cell padding and i'm going to choose uh middle vertical alignment and we see that it set up um those columns nicely let's do that again and make sure that's stuck sometimes it looks like it only modified one of our columns great okay so that's a little bit more fresh looking should be more readable and why don't we try this again okay now that is going to uh generate here for a second while we're waiting on it i'm going to do our next change which is a simple change i'm going to say attach and archive so for my attachment archive option i'm saying attach and archive it and i'm going to use my default file store which is my google drive for this account i'm going to save that should have our new email here there we go and we'll look at our order oh that's looking a lot better apple tesla quantity three quantity one i'm enjoying that okay now i've turned on attach an archive and i will show you what this does go back to pending go back to completed to trigger our event again now i've left the attachment folder path and this says the relative folder path where attachments are saved it's only respected by some data sources which it is respected by google drive you can leave blank for the default behavior now i have my spreadsheet right here in my google drive so at the root level the top of my drive i have this spreadsheet and we have confirmation that this new order was created now where is it uh i'm going to save you some trouble and tell you that there's an app sheet folder in your your my drive inside of that folder is a data folder and inside of that is a list of your apps so i'm going to open the folder for my app and it has content and it has attachments and we see this kind of crazy thing that just happened i have a folder called 15 and a folder called order tin and i didn't make those actually made those for me so why and where did they come from so this path if you look at the top my drive to the app sheet folder to data to order demo 137 4619 this path of where this data should live gets defined in the info and properties area of my app so inside of app properties i have a some metadata about my app but i have this default app folder location we can see it starts at the root or the slash app sheet slash data slash order demo one three seven four six one nine let's say for this use case i don't want it to go there anymore i want it to go to a new folder that i'll make here at the root level of my drive called orders so i'm going to remap it at the info level here i'm going to say slash to indicate start at the root of my file storage system and then drop it in the orders folder now to address why my file got dropped into a series of folders before particularly inside of the attachments folder order underscore 10 15 and then we have this uh this document that's there any time when you are saving a file via app sheet app sheet interprets the slash let me get in here it interprets the slash mark as a new folder name and if you send it to a path so by default it's going to save in in the same directory that i defined in my app properties and then it's going to put it in the attachments folder and then it's going to put it inside a it's going to drop it right in but if the file name includes slashes then it's going to make a new folder it's going to try to search for that folder if it doesn't find a folder named that thing it's going to create one and then put the file inside there so what i want to do because i have a date in here and dates are usually formatted with slashes it was breaking it up and putting it in this series of folders that i did not originally intend so i'm going to define a custom folder path and hopefully i do this right let's just call it files or better yet receipts and the attachment name i'm going to change to i'm going to use the text formula oops and i'm going to format this date time differently so i'm going to format it as month month instead of slash i'm going to use a dash day day dash year year underscore hour hour minute minute second second quote and uh hopefully that works and i'm kind of tired of hitting this edit button so i'm just going to use the quick link down here for view i'm going to go to the order detail and i'm going to make status a quick edit column that way i can just change it really quick and re-trigger my order okay now let's go back into drive and see see if anything happens inside of this orders folder actually better yet let me watch my email for the file okay there we go all right so we see the file name here followed our custom formatting without slashes so hopefully we didn't break into different uh subfolders we have now have a receipts folder inside of our orders folder and an empty.txt i believe this happens just when appsheet creates a new root folder it throws an empty text file because there's some sort of requirement there for from google drive to actually create a folder you have to pass something into it so i'll open receipts and there we go we have our order landed right where we wanted uh but it has an adjustment in the file name order oh 10 50 11-19 and it kind of goes off into this weird series of numbers and underscores and stuff um i'll tell you what this is if we go back to our settings for our workflow in the behavior tab under workflow step into our action we go to the bottom there is a toggle here for disabled time stamp so it says if the timestamp suffix is not added which is what that was it didn't look much like a timestamp i think it was a unix time stamp if timestamp suffix is not added the attachment names may not be unique meaning you may not be able to find what file is what you could have things named the same things or things name the same that would be confusing so actually helps us in our ignorance here but if we recognize the risk and we say okay i need to make sure i'm naming things somewhat unique or putting them in unique locations because you can actually define automated file paths here or dynamic file paths so i'll concatenate a couple of things so i'm going to put this in the receipts folder slash and i'm concatenating in the creator which is an email address which isn't going to be pretty but i'll show you kind of how that works and then i'm going to disable the timestamp okay let's retrigger and we'll watch our email for that confirmation and it's probably taking a little extra time because we put in a new folder route and so it's doing a little bit more api work with the google drive api all right so we have our resulting order come to us via email let's check out our drive okay so now inside of orders and receipts we have a new folder for infoadaptetraining.com this is like automatically creating a folder for a new customer which is definitely something that a lot of businesses do when they're trying to structure their file storage so that's a nice automated step there now we have our order and it doesn't have that weird uh string of numbers in there this is the um 11 9 15. so it should be the time yep eleven nine i don't know why i didn't do the colons so it uh app sheet reinterprets certain uh characters that are not safe for file names so it recognizes colon as not being safe from the file name and replaced it so that's uh that's what that's all about there all right now to put the icing on the cake the cherry on top let's calculate our amount make this a more full experience go into data columns so this is more of the reason why we even added the item table is so that we can have attributes that we set in one table that become dynamic in another table or get used in calculations dynamically so really what we want to do is we want to multiply an item's price here by its quantity in the order item to get the amount so i will write a formula here and that d reference that i talked about before we're going to grab the item by its id we're going to go through that door and we're going to pull back its price and then we're going to multiply that price by this rows quantity and if i wanted to test that app she'll run that on every row and say hey you ordered three apples and an apple is two dollars whoops and so it sums up to six because we multiply it by the quantity and then you got one tesla and that's 30 grand great now that doesn't immediately change our data those amounts are still blank that's because this is a static column and it's not uh recalculated automatically it's only recalculated when we edit the row so now that i edit it the amount is six dollars also why am i showing the id here label should be order id actually label should be item we'll do item label i like that okay great let's save let's update the price for our tesla now we see it 30 000. and let's add another item let's get some oranges and this is going to be a big order and let's resend and we should be seeing a new file here shortly we got our new order 10 15 11 19 oh this is i'm glad this happened so our order time is not changing it's just it's a static column right in our order we've set the created date time once 11 19 and 15 seconds now because that's the case and we turned off the timestamp on our file the default behavior is to overwrite the previous file named the same thing so it generated a file with the same name but now we see it has updated data in it so that could be a surprise but it is also a valuable feature if you're trying to upsert documents over time as they as something goes through the fulfillment process if you're continually updating the values of something and you need documents every time but you don't want to retain the old ones if you name them all the same it will dynamically overwrite them in google drive in fact i wonder if we can see a document history here manage versions yeah actually the versions are retained so i wonder let me see it i can download it i guess can't see it automatically but yeah so that is uh we didn't make this beautiful or fancy that could be another uh webinar but that was an extensive walk through the mechanics of the creation and a lot of the nuances that trip people up and end up with three or four forum posts of where's my file why is it named funny i can't get my naming to work um how do i attach it how do i make the templates how do i use start expressions we covered a lot of those bases um so hope this enriched you and opened up some possibilities for you in terms of your automated document creation with app sheet all right clark back to you my man i'm going to kill my screen share here thanks stefan you are very welcome excellent all right well you should have my screen again hopefully uh zooms worked correctly uh stefan thanks so much that was very enlightening and i hope everybody got a lot out of it um well like i said before uh we are crew tech we are apptraining.com uh and we'd love to help you guys uh every week we're we're gonna be doing these webinars every week trying to at least uh it does help us a lot if you're able to subscribe uh to our youtube channel and to get your friends to also watch these videos uh it's it's how we're able to keep these things free uh trying to get content out for you guys make it uh super available for you um but if you'd like to subscribe to those webinars we do have that at appsheetraining.com webinar um training.com we do have uh several on-demand courses all of which are very very good ben worked really really hard on those uh and we do have something new i've said the last few weeks but app sheet iq uh this this tool is very very beneficial for for newer users with app sheet it's going to allow you to see all the things that you may need more work on and it's going to tell you hey you need to check out the ux design course in appsheettraining.com it's very very beneficial you can see it a little brief demo of it of on this laptop here and if you would like some expert advice or consulting on your apps that you already have built or that you need built please feel free to contact us we do offer development support for those things i have linked my email here feel free any questions about the webinar any questions about uh anything at all personal life you need some advice about relationships i'm all for it i'll try to i'll try to i'll try to help out as much as i can but yeah that should conclude the webinar if you have any questions uh now is your time to uh final time to ask my stephan or myself uh those for the live stream for just a a quickie they stay fun in the start expression if i want to refer to a column which has is called id it's key but i have three tables and all of their id columns are called id i'll have to use the select expression then right i'll have to say select table name id comma true and then it'll return everything specifically for that one table yes yes now if you have them as uh related lists in some parent table you know that's that's something you could use those related lists are already targeted to the table specifically but oftentimes when you do reports we didn't talk about reports specifically which are timed uh creations or triggers of workflows those you can choose to run in the context of a table or in there in the context of a row or the context of a whole table or the whole app which means you rely more on specifically telling app sheet what table and what rows i want to print this information for and then you can make you can put more start expressions you can put nested start expressions so take this table for every row do another start expression and all of its children print out then go to the next one and print out all of its children so that type of dynamic is definitely supported thanks all right sounds good i think that's all of our questions i said please feel free to reach out at this email posted here with any questions if you run across something later on but without further ado i'm going to go ahead and kill the stream hopefully i get everything out because i know there is a delay on youtube so thank you clark you did awesome appreciate you guys everybody have a good one thank you
Info
Channel: AppSheet Training
Views: 46,742
Rating: undefined out of 5
Keywords: AppSheet, Google Sheets, Custom UX, UX, PDF, Automation, Google Cloud, Email Automation, Document Generation
Id: dDyO9f9wEeo
Channel Id: undefined
Length: 62min 5sec (3725 seconds)
Published: Thu Oct 15 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.