Release Notes: 2014

This page lists the major changes in each release of Google Apps Script in 2014. It is intended to help developers identify changes in behavior. For more recent changes, see the current year's release notes.

December 2014

December 11, 2014

December 1, 2014

October 2014

October 23, 2014

October 14, 2014

September 2014

September 30, 2014

September 4, 2014

  • Added the UiService method DocsListDialog.setOAuthToken(oAuthToken), which sets an OAuth 2.0 token to use when fetching data for the dialog, on behalf of the user whose content should be shown. This method will become mandatory before calling DocsListDialog.showDocsPicker() on September 30, 2014.
  • Added the CacheService method getDocumentCache() and the LockService method getDocumentLock(), which get a cache and a lock that all users can access within the current document, if the script is published as an add-on. These methods are conceptually similar to the PropertiesService method getDocumentProperties(), which was introduced for use in add-ons earlier this year.
  • Replaced the CacheService methods getPrivateCache() and getPublicCache() and the LockService methods getPrivateLock() and getPublicLock() with getUserCache(), getScriptCache(), getUserLock(), and getScriptLock(), respectively. The old method names have been deprecated, but will continue to function. The new names follow the same conventions as PropertiesService.

August 2014

August 28, 2014

August 14, 2014

July 2014

July 17, 2014

June 2014

June 20, 2014

  • Deprecated the script gallery in the old version of Google Sheets. As explained in the blog post, the add-on store in the new version of Sheets gives developers wider distribution, automatic updates, and several other features not available in the script gallery.

May 2014

May 29, 2014

May 15, 2014

May 8, 2014

  • The "Report an issue" dialog for add-ons now asks users whether they would like to share their name and email address with the developer.

May 1, 2014

April 2014

April 24, 2014

  • In the new version of Google Sheets, the Undo command can now revert changes made by a script. This was already true in Docs, Forms, and the older version of Sheets.
  • The following fixes were applied:
    • Issue 3891: In the new version of Sheets, custom functions now recalculate correctly if more than 100 cells are passed as an argument.
    • Issue 3859: In the new version of Sheets, setting data-validation criteria for a cell that already contains a value no longer corrupts the spreadsheet.
    • Issue 3773: In the new version of Sheets, the Browser methods inputBox and msgBox now treat newline characters (\n) the same way that the older version of Sheets did. Specifically, \n produces a space, but \\n (double-escaped) produces a line break.
    • Issue 2335: The fact that the ID of a GmailThread varies based on the messages it contains is now documented.
    • Issue 2288: The fact that a Google Site or page of a site cannot have more than 500 child pages is now documented.
    • Issue 1427: The fact that the method getAs replaces the part of a filename that follows the last period with the new file type's extension is now documented.

April 17, 2014

April 10, 2014

  • The deprecated SOAP service and old XML service have now been removed from autocomplete and documentation, as announced on July 9, 2013 and documented in the Apps Script sunset schedule. Existing scripts that use these services should still function. The UI service widgets DeckPanel, DecoratedPopupPanel, DockLayoutPanel, DockPanel, StackLayoutPanel, and TabLayoutPanel have been completely disabled, as announced on April 15, 2013.
  • The following fixes were applied:
    • Issue 3788: In the new version of Sheets, custom functions now calculate if they are passed an error value as an argument. This matches the behavior in the older version of Sheets.
    • Issue 3539: In the new version of Sheets, the Range methods setValue and setValues now automatically detect when a value should be set as a formula. This matches the behavior in the older version of Sheets.

April 3, 2014

  • The Range method getDataSourceUrl() is now supported in the new version of Google Sheets. For information on other incomplete Apps Script features in the new version of Sheets, see the list of known issues.
  • The following fixes were applied:
    • Issue 3866: The DocsList methods File.getEditors() and File.getViewers() no longer throw a server error on every call.
    • Issue 3865: The DocsList method File.getOwner() no longer throws a server error on every call.
    • Issue 3845: The advanced Google services for Drive and Calendar are now documented.
    • Issue 3624: In the new version of Sheets, the Sheet method hideSheet() can now hide sheets that have just been inserted.
    • Issue 3554: In the new version of Sheets, the Range method sort() now succeeds for ranges that do not include column A.
    • Issue 3522: In the new version of Sheets, the SpreadsheetApp method getActiveSheet() now returns the correct sheet in a single custom function call. However, getActiveSheet() still returns an incorrect value if the custom function is used in more than one cell with the same function arguments, or if called from an installable edit trigger in the new version of Sheets.
    • Issue 3496: In the new version of Sheets, the SpreadsheetApp method getActiveRange() now returns the correct range in a single custom function call. However, getActiveRange() still returns an incorrect value if the custom function is used in more than one cell with the same function arguments, or if called from an installable edit trigger in the new version of Sheets.

March 2014

March 27, 2014

March 24, 2014

  • In the new version of Google Sheets, Range.setValues() now automatically extends the spreadsheet if the range is larger than the present size.
  • The following fixes were applied:
    • Issue 3800: In the new version of Sheets, custom functions now accept numbers larger than 10,000,000 or smaller than 0.0001 as arguments.
    • Issue 3770: In the new version of Sheets, Sheet.insertImage() now inserts the image at the correct size.
    • Issue 3724: In the new version of Sheets, Range.setValue() now correctly sets numeric values in non-English spreadsheets.

March 18, 2014

  • The following fix was applied:
    • Issue 3757: The link to the Google Developers Console in the Advanced Google Services dialog now opens the correct project.

March 11, 2014

  • Announced a developer preview for add-ons in Google Docs and the new version of Google Sheets, with support for Google Forms coming soon. An add-on is an Apps Script project published to a store inside Docs or Sheets, which makes it easy for users to find and install new features. Our guides cover everything you need to know to develop, design, and apply to publish your first add-on.
  • Released a CSS package to apply Google styling to fonts, buttons, and form elements in HTML service dialogs and sidebars, primarily for use in add-ons.
  • Added the Ui method createAddonMenu(), which allows scripts to insert a sub-menu into the Add-ons menu in Google Sheets or Docs. For more information, see the guide to menus.
  • Added the ScriptApp enum AuthMode, which identifies categories of authorized services that Apps Script can execute through a triggered function. For more information, see the guide to the add-on authorization lifecycle.
  • Changed the quota for Gmail from 10,000 reads and 10,000 writes per day (excluding sent messages) to 20,000 reads and writes combined per day.
  • Added support for the custom JsDoc annotation @OnlyCurrentDoc, which forces the authorization dialog to ask only for access to files in which an add-on or script is used, rather than all of a user's spreadsheets, documents, or forms. An opposing annotation, @NotOnlyCurrentDoc, is also available.

February 2014

February 25, 2014

February 18, 2014

  • Removed the Session method getActiveUserTimeZone(), which did not return a value for most users.
  • In Google Docs, Forms, and the new version of Sheets, showing a dialog now automatically closes any other dialogs opened by a script. This matches the longstanding behavior in the older version of Sheets.
  • In the new version of Sheets, sidebars now ignore the setWidth() method; they cannot be changed from the default width of 300px. This change will affect Docs and Forms soon.
  • The following fixes were applied:
    • Issue 3522: In the new version of Sheets, the SpreadsheetApp method getActiveSheet() now returns the correct sheet if called from a simple onEdit() trigger. However, getActiveSheet() still returns an incorrect value if used in a custom function or an installable edit trigger in the new version of Sheets.
    • Issue 3496: In the new version of Sheets, the SpreadsheetApp method getActiveRange() now returns the correct sheet if called from a simple onEdit() trigger. However, getActiveRange() still returns an incorrect value if used in a custom function or an installable edit trigger in the new version of Sheets.
    • Issue 3332: The DocumentApp method setHeading() now applies heading styles in the same way that the Google Docs editor does.

January 2014

January 27, 2014

  • The quota for the number of email recipients for scripts running from consumer (gmail.com) or free Google Apps accounts has been reduced from 500 to 100 per day. The quota for paid Google Apps accounts has not been changed.
  • Added the following Session methods, which allow scripts to determine the user's locale and time zone:
  • Renamed several classes and methods in DocumentApp. The old names are deprecated but will continue to work. You do not need to update your code.

January 21, 2014

  • The following requested feature was added:
    • Issue 3162: The new SpreadsheetApp method Spreadsheet.getUi() allows scripts to access the spreadsheet's user-interface environment in order to add features like menus, dialogs, and sidebars. This method is consistent with the getUi() methods in DocumentApp and FormApp, but only works in the new version of Google Sheets. The older version of Google Sheets continues to use the existing methods documented in the guides to dialogs and sidebars and menus.
  • The following fix was applied:
    • Issue 3529: Certain Advanced Google services that support PATCH requests should once will once again work properly.

January 13, 2014

  • Renamed the Cursor object in DocumentApp to Position. This does not require any changes to existing code.
  • Deprecated the SpreadsheetApp.Spreadsheet methods isAnonymousView(), isAnonymousWrite(), isReadable(), isWritable(), and setAnonymousAccess(). Various methods of the File class in DriveApp can achieve the same functionality.
  • Added the SpreadsheetApp method DataValidationBuilder.requireFormulaSatisfied(String), as well as an accompanying CUSTOM_FORMULA value in DataValidationCriteria. This feature can only be used in the new version of Google Sheets.

January 6, 2014

  • Custom menus in Google Docs now appear in the Help menu search box.
  • Custom dialogs created with the HTML service can now be resized by calling google.script.host.setWidth(width) and google.script.host.setHeight(height) in client-side code. Sidebars cannot be resized in client side code.
  • Added the advanced parameter escaping to UrlFetchApp.fetch(). If false, reserved characters in the URL will not be automatically escaped.
  • The following requested feature was added: