The App Maker editor and user apps will be shut down on January 19, 2021. New application creation is disabled. Learn more

Frequently asked questions

General and administration

App function (widgets, pages, and navigation)

Cloud SQL



Security and sharing



General and administration

Does my organization have access to App Maker?

App Maker is available only to certain G Suite editions. If you're not certain what edition you have, contact your G Suite admin. The admin can go from the Admin console Home page to Billing and get the G Suite edition from Subscriptions.

App Maker availability
G Suite BusinessYes
G Suite EnterpriseYes
G Suite EducationYes
G Suite BasicNo
G Suite for NonprofitsNo
Personal Google AccountNo

Where do I manage App Maker settings?

Sign in as a G Suite admin and go to the App Maker settings page in the Admin Console.

How do I get to App Maker?

Go to The App Maker icon isn't shown when you click Apps in Chrome, Drive, Gmail, or other G Suite service UIs. You can open App Maker projects from Drive if you own them or they are shared with you.

Permission popups show up when my users open my app. How do I turn them off?

Have your G Suite admin whitelist your app. Each app must be whitelisted individually.

Does App Maker have version control?

Not exactly. You can deploy multiple versions of your app at once, such as a Test deployment and a Production deployment. For example, develop your app and publish it to Test until it is ready to be published to Production. You can also roll back your app to a historical state (a revision). However, App Maker doesn't support branching—you can only edit one version, the latest one.

To get a list of available revisions, click Settings Revisions. Learn more about revisions.

App function (widgets, pages, and navigation)

How do I set a default value for a dropdown menu or radio group?

  1. In the canvas, select the widget.
  2. In the property editor, click Events.
  3. Click the onAttach text box then click Custom action.
  4. Paste the following code into the code editor, replacing "My default value" with the actual value:

    widget.value = "My default value";
  5. Click Done.

Cloud SQL

Does App Maker come with Cloud SQL? Is there a free version of Cloud SQL?

You must have a Google Cloud subscription to use Cloud SQL. There is no free version of Cloud SQL to use with App Maker, but you can use other external data options.

Your G Suite admin can set up a default Cloud SQL instance that your App Maker apps can use.

Why do I have to set up a default Cloud SQL instance before I can set up a custom Cloud SQL instance?

The default Cloud SQL instance is a convenience feature. With a default instance set up, each App Maker developer doesn't have to set up their own Cloud SQL instance. Organizations typically use a default instance while developers prototype and test an app, then switch the app to a custom instance when the app is ready for deployment as a production app.

What size should I use for the default Cloud SQL instance?

Organizations usually start with the smallest instance and then increase the size as more users and developers use App Maker.


Can I manage a Google Sheet through App Maker?

Yes. For an example, open the Spreadsheet sample app.

Can I automatically add the app user's name or date data when they create a record?

Yes. Many records include data related to the user and when the record is created. Rather than asking your users to input this information, you can add a server script for the model's onBeforeCreate event that automatically retrieves the information.

The following script gets the user's email and saves it to the "user" field. It also gets the date and saves it to the "date" field.

record.user = Session.getActiveUser().getEmail(); = new Date();


What language do App Maker scripts use?

You can write server and client scripts in JavaScript. Server scripts run on Apps Script, which supports app integration with other G Suite services.

Does App Maker support JavaScript ES6?

ES6 is supported only for client scripts, not server scripts. We recommend that you use ES5 everywhere for consistency. If you use ES6 syntax in a client script, you'll get warnings while you work on your app but the script will execute when you publish the app.

Are there any limitations on scripts?

Calls to Apps Script services are limited by daily quotas and execution time limits that depend on your edition of G Suite. If you exceed the quotas or time limits, your app throws an exception with an error message. For details, go to Quotas for Google services.

Enter the script or function name in the search bar. The results show clickable links to the scripts and events that match.

How do I report an error when a server script operation is unsuccessful?

If you’re running a server function from a client script (with, use withSuccessHandler and withFailureHandler to handle the server-side response.

For example, you could create an app that lets the user calculate their salary by clicking a button, "View Salary". You want only a user and their manager to get the user's salary. You'd write a server script to get the user's salary that also checks if the current app user is allowed to get the salary:

function calculateUserSalary(user) {
  var currentUser = Session.getActiveUser().getEmail();
  if (currentUser !== user && !isManager_(currentUser, user)) {
    throw new app.ManagedError(currentUser +
        " does not have access to salary for " + user);

  // Gets the salary of the user...
  return getSalary_(user);

In the app UI, you'd have the onClick action for the button return the salary if the server script runs successfully. If the server script throws an error, then the .withFailureHandler function is run. In this example, if the server script returns an error, then an alert is shown that says the user isn't allowed to get the salary:{
  console.log("Salary is " + res);
}).withFailureHandler(function(error) {
  alert("Error: " + error.message);

You can also use success and failure callback functions in your client scripts to handle the client response and ensure that a script is run after. For example, if you have a script to create a record in a datasource, you can include success and failure callback functions that run after the action is run:

  success: function (record) {
    alert('Record with ID ' + + ' was created in the database.');  // executes if record was created
  failure: function (error) {"No new record for you!"); // executes if record wasn't created

Can I make a script run without a user event to trigger it?

Yes, you can set triggers for server scripts using Apps Script. Learn more about installable triggers. For a sample, go to Sample: Triggers.

Security and sharing

Can I share my apps with users outside my organization?

No. Only users in your G Suite organization can use your app. For some apps, you can work around this limitation by using Google Forms to collect user input in Google Sheets, then import the data from the sheet.

How do I give a Google Group permission to use my app?

In the deployment settings, under Application access, enter the group's email address.

Requirements for adding groups:

  • The group can't be a public Google group (with an address).
  • Your Google Account must have permission to view the group's membership list.


Where can I learn more about Material Design icons (the ones available for button styling)?

Go to


I can't add a Cloud SQL data model to my app because the option is unavailable. What do I do?

If the Cloud SQL model option is unavailable, it means that your G Suite admin needs to set up a default Cloud SQL database for your app to use. Depending on your app needs, you might want to use a custom Cloud SQL database instead of the default one.

I can't switch to a custom Cloud SQL database even though it's set up. Why not?

Your G Suite admin must set up a default Cloud SQL database before you can switch to a custom Cloud SQL database.

My app had data when I previewed it, but now there's no data in the deployed version. Where is it?

App Maker deployments can use the same Cloud SQL instance, but have separate databases on that instance. Data that you had in preview mode is not available in other deployments. You have a few options for how to handle this situation: