How to Build Enterprise Workflows with App Maker (Cloud Next '18)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[MUSIC PLAYING] CHRISTIAN SCHALK: Anyway. I'll go ahead and introduce myself. My name is Christian Schalk. I'm a Google Cloud Developer Advocate. Going to be talking about how to build workflow type applications in App Maker. Quick show of hands, how many people here have already tried or worked with App Maker to some degree? OK. So we've got some familiar folks here. Hopefully what I show you today will give you a bit more insight on what you can do with App Maker. Here's another quick poll. How many people here are more management side, like IT decision maker as opposed to developer? OK. That's kind of what I expected as well. So I do have technical content in the demos and in the presentation. But I'll just keep that in mind, so it's not purely just a technical walkthrough or things like that. So a little bit about myself. I've been around for a couple of years now, working in a couple of different Silicon Valley companies, software engineering, product management, technical program management, and then, now, Cloud Developer Advocacy, basically focusing on Google App Maker these last few years. I was actually the first PM for App Maker when it was an internal 20% project. And it was actually a neat experiment. Our CIO at Google had wanted to see if we could build a technology that would allow people to essentially help themselves in building these smaller to medium size applications that wouldn't really fit, they wouldn't really work with traditional engineering resources behind them. So it just wasn't economically viable. And so with this product, App Maker was to essentially help mitigate or dampen shadow IT and get everything under the same technical umbrella, so to speak. And this product itself was also blessed by our privacy and security. So there was no issue of any random, weird stuff that any 20% Google or engineer could create on their own. So in that sense, that that's what led to the beginning of App Maker within our Corporate Engineering department. And I helped get us to the point where we could actually feel like we had a viable product. And we launched it internally a couple of years back. And then that began another journey as well as we worked our way towards doing our actual launch. So the goal of this session is just to walk through introducing App Maker for those of you who are a little bit new, explaining high level concepts of what are the goals behind it, and I think I touched on it already, and then just drop into a demonstration of how to build applications in App Maker. And so I have some stuff that I'll just build on the fly. And then I have a specific demo that I created recently that I'll share with the community. But the goal was for this particular demo-- or sample app, I guess-- was just to show how you could build a document workflow application without having to get so deep into the code. And so this will complement the existing document workflow example that we already have in the product. All right. So these are general topics I'll be discussing. Pretty straightforward, talking about a little bit of background. I will talk about some of the use cases that we've seen in various enterprises, starting with Google. And then as we have launched our trusted tester in early adopter programs, we watched a lot of our customers and partners building a number of different use cases as well. And so that all factored into the evolution of App Maker over time. And then I'll finish it off by building components of a workflow application right here on the fly. And I'm glad I have network connectivity as well, because that was a bit of an issue. So first of all, what is App Maker? So it sounds like people are generally pretty familiar with App Maker at a high level. The thing that really speaks to me is that it's an empowering technology. It's not just another tool for software engineers. But it's a tool that will empower a whole variety of different types of developers. And I say developers lightly. I mean professionals that have the need to build a variety of different applications. It essentially supports the notion of citizen developers such that they can help themselves. And so in this case-- like I said, it's not just another tool for software engineers. But it's more like a technology that can help a variety of different users and personas. So this little bell curve sums it up nicely in the sense that, sure, on one side, the technical side, there's full on, full stock developers. They can use App Maker. If they understand CSS, JavaScript, HTML, SQL, they can make App Maker do some awesome things. But on the more general, middle audience there, I've seen, I've encountered, I've worked with a number of different professionals. And they were business analysts. They were researchers. We had people in the educational areas. Where they have a day job, where they're working with data, but they happened to have this need to build some sort of application, whether it be a workflow or some sort of reporting or dashboard. That's where they find the most value in App Maker. And of course, as you get less and less technical, you can still do some things with App Maker. But it really depends. Having a little bit more or prior experience to maybe some-- Legacy Technologies, Lotus tends to come up. Or there's other various productivity tools out there that are somewhat familiar that people can learn how to use App Maker without too much pain. All right. So let's just take a quick look. I'm going to have to unlock my screen, so give me one second. All right. So this is just a real basic starting point. I actually created a new app based off of this starter app template. So these are known as templates, basically examples that you can get started with. And I did do some slight customizations. I changed the color of the header. That's pretty trivial. I mean, you can go in and do the CSS directly. But for this one, just to give you a feel for what it's like to work with App Maker, you typically have on the left side-- oops, is it a little bit cropped? Yeah, we are a little bit cropped. Unfortunately, as you can kind of see, there's data pages and scripts. And essentially, you build out your database under the data tier. You build out the UI, obviously, under pages and scripts for any custom code. So in this case, let me just go ahead and pop open the widget palette, drag and drop a button onto the screen. And I might want to generate a little bit of code. So this is a script generation wizard. And I just have a function there. And I can go here and double click on that. So this is really intro stuff here. And then I can go over to the property header on the right side and change it into doing a custom action. So in this case, I'll just call this function that I just created. And then to test it, I click on the preview button. And that sends it over to the server. And then we have this little button there, and I click on it, and it says hello. And it happens to grab my particular username. So that's just a really small teaser, but just to give you an idea of what you can do with App Maker. Let's go back to the slides. So also, I wanted to step back a little bit and talk about some of the use cases that we've seen in the real world and help set the context. So over the last year and a half, two years, we've been working with a number of companies and helping them with their various use cases. Some of them are more recent. I know of, for example, we had ATB, Veolia, join us on stage on Tuesday. Cleo's right there. We had a great time, basically, helping them work, help brainstorming, looking at their use cases. And they had a hackathon. These are the things that I really enjoy, going out and meeting the different customers and helping them be successful. But in general, I've seen a lot of familiar patterns, starting from our Google experience and then how that transcended over into the outside world. For the most part, the applications that I see that tend to be built are either dashboards or tracking applications and then a variety of workflows. So like a training workflow, I can think of one in particular where there was an initiative to build something from scratch using Cloud Platform. But it ended up being much more economically feasible to just build it in App Maker, since it was basically a straight forward workflow application. And then of course, document workflows. That's a very common pattern that we've seen so far. And so in order to get into a little bit more of the meaty stuff of App Maker, I'm just going to give a general, technical overview of App Maker. And I'll dive into the main, technical artifacts as well. So first up is the architecture. Albeit this is somewhat simplified, but at the top you have your editor that's being served to you through a browser. It's coming from Cloud Platform. And it's just what I showed you a second ago. You have your developer environment. It's all working within a browser. There's no SDK downloads or anything like that. The most, I would say, supported browser environment is Chrome. That's the majority of the Q&A. But other browsers do work with App Maker as well. And then from a server standpoint, when you actually click publish or preview, that basically takes your application, it bundles it up, sends it over the wire to the server, and that's running in the Apps Script environment. And once you're on the Apps Script environment, you have access to all of these different services, all the things where you can create docs, edit docs, fetch data from Sheets, send emails, et cetera. And so it's a very rich environment for the server. And this is where the real magic of how cool workflows can come into play. And then finally, since App Maker is more of a traditional database application, or web application, environment, there is the notion that you're going to have a primary database that you're working with. And so right now, we have Cloud SQL as the recommended default database. There are other ways to access data. And this is also an area that we're looking to continue to expand. So there will be other options as well. But for today, the Cloud SQL option does provide the most secure performant database that you can build for enterprise applications. And of course, you can also step out, even today, using just REST, APIs, JDBC. There's a JDBC connector within Apps Script that you can go out and talk to databases with my SQL natively. You do have to do a bit more scripting if you go down that path, where you create, essentially, your own data access objects, which starts to get into more coding. So I touched on those three main technical artifacts. I'll go into a little bit more detail, obviously, with these. So on the data side, your goal is to essentially use this declarative data modeling environment to build your model objects and then set up the queries that go against and fetch the data. The UI itself, as you saw, it's drag and drop. You essentially open up a widget palette, pull over whatever UI constructs, and then you can go to the Property Editor and set any properties as needed. You can set up events to trigger, such as when you click on things or when the actual UI element loads. You can set all that up to execute whatever you need to. And of course, the glue that makes more, I would say, sophisticated workflows possible, or customized behavior, is within the scripting. And scripting is like the magic that makes everything all work, as you would expect it. Now, you can get away with doing some very basic applications without any code at all. You could build a CRUD database application. So if you know what that term is, you can create, update, replace, delete, and even search without writing any code as well. So talking about models, this slide shows a typical transition where you're coming from a spreadsheet or a CSV file. You can then pull this into the App Maker model editor, have the structure of the spreadsheet be replicated into a data model. We have a nice wizard that will scan through the spreadsheet or the CSV file that you upload and give you all those fields for free. You can then, on your own, customize further and add additional fields and such. Another very important concept to know is data sources. Data sources, in short, our just queries that go against your models. And so whenever you create a new model, you'll have a default data source that does a select star and pulls all the data out. And it will typically have 100 records that it pulls out at a time. But then you can also customize these data sources to set up further filtering. And typically in a real application, you're going to have multiple data sources going against a particular data model. So that's an important concept to know. And relations, this is another very powerful feature with App Maker in the sense that you don't even need a relational database, but as long as you have your models, you can set up relations between those two models. And they pretty much follow standard-- relationships flow one-to-many, one-to-one, many-to-many. And you do it in a visual sense. So you just put them side by side, and you can set up the, quote, [INAUDIBLE].. I think that's a term that tends to be used sometimes. For this particular demo or application that I built, I'm not actually using relations. But you can see plenty of other examples of how to use it. All right. So let's go ahead and jump back into the demo. And for this one, I'm going to start building a data model. So just to set the stage-- actually, is there a way that I can-- I guess there's no way to decrease the demo screen a little bit so we can see the left side. Anyway. I could go-- OK. I'll just go ahead and keep plowing away here. So for the data model, over there on the top left, there's a little plus button. Click on that. And I'll go ahead and set up the-- oh, before I do that, let me just show you really quickly, this is going to be the source of my data model. And this is very typical, a workflow within a spreadsheet. So you've probably seen that. It's kind of a natural behavior to do that. So this in this case, it's like a document workflow implemented within a spreadsheet. So there's things like the document URL. Very important. When do you want this to be reviewed by-- has it already been reviewed and approved or not? And then, of course, who you want to actually review it. So this spreadsheet will serve as the starting point for our data model. So I go over here, I click on the Plus button. And I'll just accept the default Cloud SQL set up that I have for my particular domain. I can talk about that more depending on time. But basically, this is a step that you'll want to do if you want to set up Cloud SQL as the default. And then let's see. I'll name this ReviewRequest. And this is the little button that I'll click on to allow me to go out and search the Google Drive for the spreadsheet that I was just showing you. And it scans the spreadsheet. And I can see that that matches what I want to create my model from. And then based off of the data within the spreadsheet, it will essentially deduce what kinds of data types that we want. It will also generate the field names appropriately. So you can see string, number, date, Boolean. Those all look pretty good. So I'll click create. And then now we're in the data model editor. I can customize this further. So for example, maybe I want to make the doc URL field, I want it to be required. I could even change the-- this is a single specific feature, but I could change the type from varchar to text. It will give me a little bit more room to work with. So I'll just change the SQL type there on the fly. And there's even other stuff. I could set up regular expressions for validations and such, and even put in the error message right there. Let me do one more customization. I'll go into the priority. And this is the number. And for this, I'm going to go ahead and just limit it to four possible values. So I click to set the value here. It's a little list editor. And I'll just set it to one through four. And that's it. So my data model is good to go. I can actually build an application with that. Also, if I click on the data sources tab, I do have this default data source, which will serve as my interface to my data. If I wanted to customize the query, I could go into this little entry area here. I can change the number of records that are returned and so forth. Also automatically load data, whenever you view the page, it will automatically fire the query. So pretty straightforward stuff. Anything else I want to show? I think that's probably good enough for now. So I'll come back to the demo in a second. So just getting back to the slide-- so you saw in just a few minutes I was able to take a spreadsheet and turn it into an actual workable data model. Moving ahead, let's talk about the UI. So the UI is relatively straightforward. There's three main artifacts there. You're working predominantly with pages. Pages are essentially containers where you can put these UI elements. We refer to them as widgets. The widgets themselves have all properties. You can bind the widgets, like a text box, back to a data model field. And then it stays synchronized. So you don't have to write a data access code to actually do the synchronization. It's all handled for you. Page fragments are just reusable UI fragments, like header, menu, footer. And you can customize, you can build your own. And whenever you build your own page fragment, it will then show up on the widget palette. So then you can just drag and drop it onto your UIs. And then popups, that's another cool feature that's been-- it's relatively new, but it provides a whole bunch of different types of dialogues, ranging from a simple, empty dialog to a loading or a Snackbar, a little thing that will pop up and give you a message. So these are actually pretty fun to work with. And I'll show you how to-- it's pretty easy. Now from a design and data binding, there are some key things to know. As you can see, it's a Google material look and feel that's built in. But that's not to mean that you can't step away and do your own UI design. You can totally do that. You can just turn off the styling, and then you can go in and build your own CSS look and feel. What I see typically, though, is people are very happy with the material look and feel, but they just might tweak it a little bit or select some of the various different style variants. So we provide a number of styles that you can select on a widget-by-widget basis and have a button rendered in, like a circle or a fat button or whatever. And so that's just point and click at that point. And there is also a very helpful CSS editor, where you can type in some code and then it will do code completion, allow you to do some somewhat advanced CSS code without really having to really be a CSS expert. But it helps you along. And of course, the data binding feature, an extremely powerful feature that, as I mentioned, you can go through, data bind any types of elements or properties on various widgets and then have them connected back to your database. And it's not always just the data model field. It could be like an expression of concatenation of server side data that then gets sent down and connected to your front end UI. All right? So switching back to the demo, and all right-- so now I'm going to go to the UI. So again this is the UI that I use the starter app. There's not really much going on here. So for this one, I'm going to build a table that will allow me to track all of the document review requests. And so in this case, I'll just pop open that widget pallet, we'll drag it off the table, and it'll just define-- I'm going to set it to the same default data source. And I'm going to have a couple of things show up. Let's see. I don't need the comment-- reviewer approved. And it's probably good enough. Oh, maybe I will put back approved. And then I'll accept the default options for generating the table. And so now we're looking at a design time view of the table, which is basically a repeated row. In this case, we have just labels. But if I made it editable, I would actually have drop downs or date pickers and so forth. Now the other thing I want to do is add a button so that I can then launch a dialog to insert new data. So in this case, I'll just drag a button onto the screen here. And for this one, I might change it to say Add. And when I change it to Add, I can actually take advantage of the fact that Google material has these keywords that allows me to use an icon. And so by putting Add, it actually changes it to-- when I render it as an icon, it shows up with a little plus button. Likewise, there's other things like FabMini right here. So there's my button. And what I want the button to do is, when I click on it, I want it to launch the popup. So to do that, I go over to the Property Editor. I go to my unclick property and I just scroll down here. And you'll see that there's the option for a Show Popup. And then I have the CreateRequest, a dialog. I don't think I showed that yet. But basically, I have this popup here called CreateRequest. And it's just empty at the moment, but I'm going to fill that up now. I use the Popup Wizard here to select. And I just selected the empty popup to do that beforehand. And so now I'm going to drag a form into there. It's going to be an insert form. So this is where it gets fun. So I can drag the form, same as before, same data source. I specify that I want it to be insert. And I don't need all the fields. I just want the primary stuff there. The due date-- I don't need the approved-- the reviewer I need, and the comment. So that should all line up nicely. And that was part of the reason why I pre-built the dialog, such that it will fit nicely. So now I can go in and customize my form. As you can probably guess, pushing or making someone such that they have to enter in a URL is kind of a painful thing. So in this case, there is a nice little DrivePicker widget right here, which I'll just drag and drop right here onto the screen. And then again, I can change this-- the text-- to be an icon. And so I'm going to use the keyword Drive and then I turn the style variant over to icon. And now I have that nice drive. But also, as you can see, it kind of shifts everything down. So this is where you want to start to get into it more, I would say, flow, lay out types of features, where you can define different panels that have certain flow, I guess, associated with it. So in this case, I selected a horizontal panel. And then everything will just kind of snap together in a horizontal fashion. So I'm going to pop this up inside of that panel. And I'm going to take the doc URL and drop it right inside there. And now I just want to stretch it out so that it will not just fit to content, but I want it to fill parent. There it is. So then everything's shifted over nicely. Now to make the DrivePicker widget actually do something, I need to set some properties. So we have here the selected doc URL and that just means once I pop open the DrivePicker, I want it to actually send that in to my field, the doc URL field. And then for the other one, selected DocName, I go into here. And I just associate that with the doc name. So that's basically how data binding works. All right, so now these should work OK. I have priority ready to go. It's actually a dropdown, which will show me the four values. I have a DatePicker for the due date. The reviewer is one more thing I'm going to add to it. Let's just pop that up right there. I'm actually going to add a new widget, which is better than just a straight text box. So in this case, it's a UserPicker. And this will actually connect to a directory service that I have in my environment and it will create a directory model for me, as well. So I'll click Create. And as you can see over here, I now have this directory model. I have all these fields ready to go. All right. So if I go back to my dialog, and I can just change the prompt and I just need to set the value. So I data bind the value to be bound to the reviewer field, right? And now I can just toss the other one-- all right, so pretty straightforward stuff. And the final customization is that I want to make it such that when I click on the Submit, it will create the record, but it will also close the dialogue. So right now, the OnClick behavior is to create a new record or a new item, a pop open custom action, so then I can customize the behavior. So in this case, I will add a function that will get triggered once this first call is done to create the new record. And this is where I can use that client side API for the UI, so app.popups.creat erequest.visible-- there we go-- equals false. So that's just a simple way to close the pop up, all right-- so pretty basic stuff there. I can do the same thing for clear, but I'll just make sure I have enough time to finish everything up. So I'll click Preview, sends over to the server, and with a little luck, I got the behavior that I want. All right? So here's my empty table. I click on the Plus button. There's my dialog. I have my DrivePicker. That opens up a window here. And I'm going to just select the presentation that populated the doc URL, the doc name. And then here I can type in a few characters and that should pull up my name. So it looks good. I'm good to go. And then I can select Priority, and I'll just use the DatePicker and put it two days in advance. And then if my code works, it will close the dialog. And now I have created a new record in my database, essentially, to trigger this application to start a workflow. Now the next step is actually implementing the workflow part, which is actually a little bit more coding. But I'll get into that as I switch back to the slides. And in order to implement the workflow part of this, this is, as I mentioned, the scripting part. So at a high level, just to review, scripts are two flavors. One is the client side. It works in the browser, just straight JavaScript. This means that you can write your own JavaScript, you can import any kind of third-party JavaScript library, jQuery, whatever. And then there's also some APIS that App Maker provides, such as a data API to insert, update, deletes, all from your client, as well as UI manipulation, showing popups, dialogs, navigating to different pages. And then, of course, on the server, because it's running on App Script, you have access to all of those libraries. And that's really where you'll be able to implement the workflow in this case, like sending emails and such, right? So just to give you a really quick demo, if I switch back to the demo-- OK, cool-- so to get started with scripting, it's pretty straightforward. You click on the Plus button. In this case, I'll just create an example, say hello. And then maybe I click on another. And this time, I want to generate a server side script. And then, I could even rename them so I can kind of keep track. There we go. And I think this one was client side, yeah. And then if I wanted to, instead of calling this alert, I could actually just have it script.run.-- and there you can see serverSayHello. And that's actually the bit of code that would go from the client, call the server side script, serverSayHello, which is located in this little function here. And that would just return back to whatever was calling it. And so I won't go into too much more detail. In a very short sense, that's how you kind of get busy, how you can be productive with scripts and stuff like that. All right? So I'd like to switch back to the presentation. And we're going to kind of finish it off by talking about the overall workflow. Cool. So just to move on, one of the things that I did do for this particular talk was I wanted to create a relatively straightforward or easy to understand workflow application, like a document workflow. So if there's folks out there you might have already looked at the template application, the document approval workflow. And that's all good. It works fine. But it can be a little bit daunting if you're not so-- if you don't have so much experience on the coding side. And so what I wanted to do with this particular application in this talk is just kind explain, step back a little bit, and kind of take it apart. And so that's what I ended up doing. I built this relatively straightforward workflow, or a document workflow application, where it has those five different steps. I've already done the first three or so. We're right about step 4, where I want to have some scripting to-- once, I kick off the process to build a new request, it will then send an email to the reviewer. And then that person will then be able to follow through and either approve or reject the particular workflow. All right? Oh, here's another graphic, just explaining what's going on. And I'll actually walk through this application as it's working first. I'll give a quick demo of it working. And then I'll walk through the different components that make this possible. But as you can see, it's pretty straightforward. Sends off an email. The reviewer gets it, he can click on it and then he or she gets it. And then he can click on the link and be able to go to a approval page and either accept it or what. And then there's a couple data updates and then it goes back to the requester just letting him or her know that the work flow has been completed, so pretty straightforward. So I will show you how it works. So this is like the cooking show. I was debating whether I wanted to do it all from scratch. But it's a little bit too much to do from scratch in the time I have. So in this case, I'm just going to walk through the application, first off. So here's the application. As you can see, it's pretty similar to what I had before. I have a table. I have a little button there to kick off, to create a new record. I have the CreateRequest dialog. And I also have this approval page. And I'll get into a bit more of the details of how that works. But that's basically how the end user is going to go get the link and they'll go back to this approval page to either approve or deny or whatever. All right. So for this one, let's just kick it off here. I'll click Preview. And while it's loading on the server, I'm going to make sure that I don't have any e-mails here, because I'm going to be referring back to this email application. So I think I'm going to close down this window so I don't get confused. All right. So here's our workflow application. I'm going to pop it open. I have my little same UI that I created from scratch before. In the DrivePicker window, well, I'm just going to do a review of my presentation. And I'm going to set up the reviewer, again, as myself. I guess ideally I could have two different people, but you get the idea. So anyway, there's my data there. I can set up the due date as maybe two days and set up a priority as one, whatever. So I will click Submit. Now I have this record here. But at the same time, I will go back here. And I see that there's an email that popped in. And the email says, oh, greetings, reviewer. You have been requested to review the following document. And in this, there's the actual URL of the application itself, as well as the actual record key as a parameter, and then the actual page for the approval. So then I'll click on that and that will take me over to this page. And there was-- notice there was a quick little flicker where it pulled in the right record. I can explain that in a little bit more detail, but that's basically how I can locate it. And there's even some security settings that you can lock it down so only that person can see this record. But anyway, I will put in a comment, looking good. I'll click Approve, and that will go ahead and update the status of that particular record. And if I want, I could go back to the main page here. And now I can see that the approved is now signaling true. But more importantly, I can back to the email, and I should have a new email sitting there. So it says review complete. And then now I can see that the document here, which is my presentation, has been reviewed. And it's coming back as true, being approved, and it's looking good. Now, I deliberately kept this simple. I could have made a nice, rich HTML page. But for this, I just wanted to convey the basics of passing on some of these values in the e-mails. All right? So that's essentially the entire cycle of the workflow in a nutshell. Let me go back to the actual application to explain how it works. And so there's a couple of things that are triggered when a new-- that basically the workflow gets kicked off right when you create a new record. So on the events side of things, on the after creation of a new review request, there is this function here, Share Link Via Email. And I'm passing the actual reviewer's email. And I pass the doc URL, as well as the record key. And that's actually critical, because I want to make sure that I'm synchronized with that. So this is a server script. So I have it right here, Share Via Email, right at the top. Let me see if I can zoom in a little bit, see if that works for you guys. OK, cool. So this is the thing that gets called right when the record gets created. I generate, essentially, the URL that I want to pass to the end user or the reviewer. I'm using a little bit of App Script to get the actual URL. And then I tack on the provided key. I also attach on the approval page, so that gives them the ability to go back to that approval page that I've created. And then here we are at the approval page. So this is triggered. There's a very important step when it gets fired off, in that it will-- let me just pull up the events here-- there is this unattached event. So basically when the UI loads, it will call this parseRecordKeyParam. And so that's on the client. And that's this guy right here. And there's just a little bit of code here, just to grab the URL coming in from the request. And it double checks to make sure things are OK. And then, it actually loads the appropriate record. And it's doing this by grabbing the record key that's also been provided and then doing a load on the data source. Now you notice that there is this custom data source. I haven't showed that to you yet. But it's a different data source that allows me to fetch a specific record based off of the record ID. And so just to return to that, I have my data sources, and there it is right here. And this is where I have a little bit of scripting to essentially grab the record key and return that specific record. And there is a parameter that I've added, recordKey, which then allows me to stitch it all together. This gets into slightly more advanced. You have to read through what is the difference between QueryScript and QueryBuilder. In a nutshell, you can write your own scripting to return records from the data source, or you can just write straight, well, relatively similar SQL code to fetch your data. All right? And that's essentially it. And that will allow us to view the contents on this page. And then when someone clicks on Approve, for example, or Deny, it's basically calling this function here, finishApproval. And it sends either a finishApproval as true or false. So you can maybe see it off to the right side right here. And then that finishApproval is a client-side script, which is here. So we've got the widget, which is our connection to our data source so we can do data operations. And then we have the actual Boolean value for the approval. And so here, I'm just doing a quick update, changing the field. And then I'm doing a script run to email the response back to the reviewer, saying the review has been complete, or yeah, in this case, yeah, it is the reviewer complete. And that's pretty much it. So let's see if there's anything that I wanted to touch on. So yeah, it does take a little bit more coding to get that final finish the loop, so to speak. But that's pretty much it. I guess we can flip over into questions. I'm right about on time. So I wanted to make sure that you guys also have all these links. Feel free to take a picture, or you'll get the slides. There's a relatively simple code lab that is relatively new. If you have some newbies getting started, before subjecting them to the full on template experience for all these advanced templates, just doing that simple code lab which walks him through a basic data model and UI creation. And then of course, there's the other stuff that you can do. You can join the Forum. And of course, if anyone doesn't have App Maker, and you're looking to get App Maker, you just have to G Suite business or Enterprise and [INAUDIBLE], as well. Let's see. And then other docs and things like that you can jump into, as well. Thanks, everyone. Thanks for coming out early Thursday morning after Wednesday. Hope you had fun watching this early morning demo. So all right, thanks. [LOGO MUSIC PLAYING]
Info
Channel: Google Workspace
Views: 38,142
Rating: undefined out of 5
Keywords: type: Conference Talk (Full production);, pr_pr: Google Cloud Next, purpose: Educate
Id: 0B8Pao5vU_0
Channel Id: undefined
Length: 40min 55sec (2455 seconds)
Published: Fri Jul 27 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.