G Suite Business customers can preview App Maker. Ask your domain admin to apply for early access.

Release Notes

This page lists new features and known issues with App Maker.

Import and export relations

November 9, 2017

You can now import and export all app data and relations. Learn more about how App Maker handles relations:

  • Imports—note how App Maker handles keys when you import from a SQL database.
  • Exports—to see how App Maker writes associations to a Google Sheet when an export includes one-to-many and many-to-many relations.

Important changes to App Maker and Google Cloud SQL

October 9, 2017

This week's release brings changes that affect how you use App Maker and Google Cloud SQL.

Improved support for time zones in Google Cloud SQL models

Previously App Maker handled time zones differently depending on whether an app was running as the developer or as a user. Once you preview or deploy a new version of your app, App Maker handles SQL types related to time in a different way:

  • If your app runs as developer, TIMESTAMP values are read and written as they appear in the database. In earlier releases, a bug caused timestamp values to be off by 7 to 8 hours.

  • If your app runs as user, DATE and DATETIME values are read and written in Pacific time.

With this change, time zones are now handled consistently in apps that run as the developer and apps that run as the user.

Update your time-based data types

To ensure proper handling of time zones, you may need to update affected values in Cloud SQL models.

You need to update existing values and parameters if:

  • Your app runs as developer, and the database has TIMESTAMP values.
  • Your app runs as the user, and the database has DATE or DATETIME values.

To make the necessary updates:

  • Fields—Use the SQL console or other SQL client to adjust affected time- and date-based field values accordingly.

  • Calculated model datasource query parameters—You can now set the type in the model's Datasources tab:

Changes to the user interface

We've removed some of the color from the App Maker interface. The new interface is more consistent with the design used in other Google products, and the use of a single color helps to highlight important buttons and controls. It also ensures your app is the center of attention and reduces color clashes if your apps use a different color scheme.

Apply styles to individual pages

You can now customize individual pages with CSS. Page-level CSS settings always override conflicting global styles.

Corporate Store template, Images sample, and other new features

September 22, 2017

We've added the following new features over the past several weeks:

  • The Corporate Store template.
  • An Images sample that shows how to let users choose images from Google Drive and display them in the app.
  • Drive Tables with any-to-one relations are now sortable.
  • Many, many bug fixes.

Document sample and an addition to the Client API

July 31, 2017

This release adds the following to App Maker:

  • A new sample app that demonstrates how to create and add text to a Google Doc.

  • An addition to the client API that you can use to determine whether an app user has a specific role.

App Maker apps are embeddable

July 13, 2017

This week's release adds the following new feature:

  • You can now embed App Maker apps in an iFrame. To use this feature, enable it in App Settings.

New template and new shortcut

June 28, 2017

This week's release adds the following:

  • A new template for travel approval apps.

  • A keyboard shortcut (F9) that previews the app you're editing.

Calendar sample and deployment URL improvements

June 23, 2017

This week's release adds the following:

  • We've posted a new sample that demonstrates how to read and write data to a user's Google Calendar.

  • The URL for accessing each deployment is more prominent. We also added a copy to clipboard button to make sharing easier.

  • Fixed bugs.

Spreadsheets sample

June 16, 2017

In addition to bug fixes, this week's release includes a sample that shows you how to use scripts to read and write data in a Google Sheet.

Easier deployment sharing and the ability to select tables and cells

June 7, 2017

Today's release brings the following improvements:

  • We added the URL to each deployment so you can easily navigate to it or share it with others.

  • Scripts can now use the selectedRow property in accordion and list widgets and the selectedCell property in a grid widget. Use these properties to perform operations on the selected item.

  • We fixed approximately 30 bugs.

Google Cloud SQL apps can run as user and other improvements

June 6, 2017

We've released several features and improvements in recent weeks.

Google Cloud SQL

Apps with Google Cloud SQL models can now run as the end user.

App Accessibility
  • Announce API—you can make your app provide important information to users who need a screen reader. Announcements could include events or content changes that aren't apparent to the visually impaired. Add the following where needed to your app's client scripts:

    app.accessibility.announce("Hello world!");

  • ariaLabel property—use it to add text that describes the content of a widget. The text is read aloud to users of your app who rely on screen readers.

Scripts
  • Added app.getRoleMembers() to server scripts. It returns all members that belong to the specified role. It doesn't return individual members of a group that you've added to a role.

  • Added code completion to google.script.run.

  • It's easier to comment out code in the script editor:

    • single line—click anywhere on the line and type Ctrl + /
    • multiple lines—select a block of text and type Ctrl + Alt + /

    The same key combinations remove comment indicators from selected text.

Templates
Sample apps
Miscellaneous
  • You can now use the main menu to make a copy of the current app.

  • We've fixed many bugs!

Improved security for data queries involving relations

May 3, 2017

We're changing the way App Maker handles permissions in data models:

  • App Maker now verifies the permissions of non-Admin users when they query records. For query scripts, App Maker applies ownership filters to the query and checks the permissions of results before returning them to the user.
  • When a non-Admin user requests records that have a relation, App Maker checks the load permission for the records. If the user doesn't have access to all of the models in the relation, the query is denied.
  • You can assign Owner or Roles permission to models. Use this to provide access to the user who created the data, plus a group of users such as HR.
  • App Maker now supports filtering and sorting of all relations. Previously you could filter only one-to-one and many-to-one relations.

To ensure backward compatibility with deployed apps, we recommend the following:

  • Ensure all models that contain confidential data are secure.
  • Verify the Load permissions for models involved in relations and ensure non-Admin users have correct access.

New features for controlling widgets

February 23, 2017

Today's release gives you more control over page layout and how widgets are displayed:

  • It's now easier to resize a table and to add, delete, or move its columns. Your existing tables aren't affected by this change.
  • You can control how invisible widgets affect a page:

    • absent—When a widget is not visible, it doesn't take up any space. This is equivalent to the CSS rule display:none.
    • hidden—When a widget is not visible, it is hidden but still takes up space. This is equivalent to the CSS rule visibility:hidden.

  • The right sidebar now includes additional settings for controlling a widget's margins and padding.

List fields are deprecated in Drive Tables

February 2, 2017

Support for list fields is deprecated in Drive Tables. You can continue to use list fields in Calculated and Directory models.

For Drive Tables, relations are an alternative to list fields.

Results of this deprecation are:

  • When you open an app that has list fields in Drive Tables, the App Maker Editor displays warnings.
  • You can preview and publish apps that have list fields in Drive Tables, and the apps and list fields will work.
  • You can't add list fields in a new app or existing app.
  • If you delete a list field, you can add it back by reverting to a revision of the app that has the list field.
  • Both data import and export continue to support list fields in Drive Tables.

In the future, App Maker will add support for any-to-many relation filtering, which permits equivalent filtering to that possible with list fields.

Convert list fields to relations

Converting list fields to relations is a manual process, and it's different for each deployment. The general steps are:

  1. Add a new table that contains the list values.
  2. Add a one-to-many relation from the table that contains the list values to the new table.
  3. On each page that uses a list value, add widgets to display all of the list values and values for the newly added relations.
  4. Ensure each row that has a list value also has a relation value added.
  5. Remove the list fields from the tables and pages of your app.

Eager deletion of records

February 2, 2017

Records deleted through datasource.deleteItem() are now eagerly deleted on the client. When datasource.deleteItem() is called, the current item is immediately removed from the client, instead of being removed when the call returns from the server. The callback is still invoked, and can be used to do any processing needed in case of a failure or success. In the event of a server failure, the deleted record and its associations are restored.

Here is an example of the deleteItem method with the optional callback:

datasource.deleteItem({
  success: function () {
    console.info("Deleted current datasource record.");
  },
  failure: function (error) {
    console.info("Failed to delete current datasource record: " + error);
  }
});

Support for Second Generation instances of Google Cloud SQL and additional fields in the Directory Model

January 20, 2017

You can now connect App Maker to Second Generation instances of Google Cloud SQL.

Additionally, the Directory model supports new fields:

  • WorkPhones
  • HomePhones
  • MobilePhones
  • HomeAddresses
  • WorkAddresses
  • CustomEmail
  • PrimaryOrganizationDescription
  • PrmaryOrganizationCostCenter

List fields—Store an array of data in a single field

January 4, 2017

List fields can contain more than one value, stored in records as arrays. App Maker fetches the data in a list field with the record that contains the field, and deletes the data if the record is deleted.

Data types for list fields are List<String>, List<Number>, List<Boolean>, and List<Date>.

With scripts, you have full control over the data that goes into and comes out of list fields. Some widgets also support list fields. There are special syntaxes for user data entry and for import/export.

Examples

  • With a multi select widget on an Interests page, a user might choose one interest or seven. You could store the choices in a list field.
  • A user might enter more than one email address.
  • A monitoring process or experiment might generate variable amounts of data.

Draft record is deprecated, replaced by Create mode

January 4, 2017

In order to improve the form experience in App Maker, we have deprecated the draft record and replaced it with a more flexible solution—a new datasource mode called Create.

This change will affect your existing insert forms and other places you might have used draft records. To convert your widgets, please follow one of the two options below:

Option 1: Delete your insert form and drag out a new one

This is the easiest way to update your forms and is recommend for forms with little customization.

  1. Delete the old form.
  2. Drag out a new form.

The new form's bindings and actions will use a Create datasource.

Option 2: Manually update your forms or other widgets

Use this method if you have customized your forms or have used the draft record in other places.

We've put together a short demo video that shows you to quickly update your widgets.

  1. Update your widget's datasource to use the create mode datasource:
    1. Select your widget.
    2. In the Property Editor, navigate to your widget's datasource.
    3. Click its Edit box.
    4. Select "<Datasource Name> (create)" in the dialog that pops up.
  2. Update your widget's field bindings:
    1. Select each widget that is bound to a field.
    2. In the Property Editor, change the field's value binding from "datasource.draft..." to "datasource.item...".
  3. Update the Clear button's onClick action:
    1. Select the Clear button.
    2. In the Property Editor, change the button's onClick action from widget.datasource.clearDraft(); to widget.datasource.clearChanges();.

How does this change improve App Maker?

  • This change also allows insert forms to be created for datasources in manual save mode.
  • To change new forms from edit to insert, you simply need to change the datasource's binding from datasourceName to datasourceName.modes.create. (Prior to this, you needed to change the field bindings from "draft" to "item" or vice versa.)
  • You can use a page fragment to create cohesive insert and edit forms. Here's a sample app that shows you how it's done.

You can read more about the Create Mode Datasource in the Client API and datasource reference.

App Maker can't authenticate with second generation Cloud SQL instances

December 15, 2016

App Maker is currently unable to authenticate with second generation instances of Google Cloud SQL. You can create a first generation instance now and migrate it to second generation when this issue is resolved.

New widgets, templates, and advanced services

December 1, 2016

App Maker now supports:

  • Drive picker—A new widget that lets users find files in Drive and upload them to your app. This widget requires the app to run as user.

  • User picker—A new widget that lets users find other members of your domain. It requires the directory model, which provides access to your domain's G Suite directory.

  • Document Approval template—A custom app you can use to create workflows for document approval.

  • People Viewer template—A custom app that uses the Directory model and other data sources to view people in your organization.

  • Advanced Google Services—A group of APIs you can call from your app to interact with user data, other Google systems, and external systems. See the list of services supported by App Maker for additional details.