Release Notes: 2012

Stay organized with collections Save and categorize content based on your preferences.

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

December 2012

December 17, 2012

  • The following fixes were applied:
    • Issue 2131: The timezone offset for "Europe/Moscow" is now correct.
    • Issue 2124: ScriptDb no longer throws an error when storing a float value.
    • Issue 2021: Setting the background image of a UiApp panel now works correctly.
    • Issue 1856: The Jdbc service now resolves host names correctly.
    • Issue 1312: The error message shown when the rate limit for spreadsheet creation is exceeded is now more readable.
    • Issue 949: Typing the character } on a Spanish keyboard now works correctly.

December 11, 2012

  • Added extra validation to the datasource URLs used in charts. Custom datasource URLs that rely on non-Google authentication will no longer work.
  • The following fixes were applied:
    • Issue 2100: ScriptProperties.setProperties() now respects the deleteAllOthers parameter.
    • Issue 2052: UiApp's setStyleAttribute() method no longer rejects certain style attributes.
    • Issue 2041: The native Date methods toLocaleDateString() and toLocaleTimeString() now return the correct values.
    • Issue 1972: Web apps published from a domain, but available to everyone, now use the normal Google login page instead of domain's login page.
    • Issue 1876: The authorize link for scripts embedded in a Google Sites gadget now opens in a new tab/window.
    • Issue 1870: CalendarEvent.getVisibility() now returns the correct value.
    • Issue 1528: Using ContactsApp to modify multiple fields of a contact in quick succession no longers causes an etags mismatch error.
    • Issue 1502: Logs are now saved correctly for scripts that run as a web app, from a spreadsheet menu, or due to a trigger.
    • Issue 1275: Deleting a script now deletes any associated triggers.

November 2012

November 28, 2012

  • Added an enhancement to GmailApp to allow retrieval of bcc addresses via GmailMessage.getBcc().
  • Fixed an issue where onFormSubmit trigger's callback range was incorrect if the submit triggered a formula recalculation.
  • Fixed an issue where XmlDocument properties and functions did not autocomplete when generating an XmlDocument with the Soap service.
  • Tree widgets now allow specifying open handlers as well as close handlers.

November 21, 2012

  • Fixed an issue where public locks are not correctly released.
  • Fixed an issue to allow multiple comma-delimited replyTo addresses in MailApp.sendEmail().
  • Fixed an issue with auto-complete for library functions not working when that library contained HTML files.

November 13, 2012

  • Added the ability to disable SSL certificate validation in the SoapService, in response to a feature request.
  • Fixed an issue where MailApp's and GmailApp's sendEmail function ignored the advanced parameter "name".
  • Fixed an issue where new library versions took a long time to propagate to other scripts.

November 6, 2012

  • Fixed an issue where a script failure notice would refer to the script as "Not Found" in cases where the failure is caused by an auth issue.
  • Fixed an issue where it was not possible to save scripts with more than ~1 million characters.
  • Updated some icons to match icons of other Google Drive applications.
  • Added options to EmbeddedChartBuilder to make it easier to configure embedded charts. EmbeddedChartBuilder now contains the methods asAreaChart(), asBarChart(), asColumnChart(), asLineChart(), asPieChart(), asScatterChart() and asTableChart() as replacements for calls to setChartType().
  • Fixed an issue where LockService did not work correctly when called from a UiApp.

October 2012

October 26, 2012

  • Added the ablity to list alternate sender addresses using GmailApp.getAliases() and use them in GmailApp.sendEmail() with the advanced option "from", fulfilling a feature request.
  • Created the class GmailAttachment, which is the same as a Blob but provides a getSize() method that isn't subject to quota restrictions.
  • Added the ability to set a custom app icon for web apps published to the Chrome Web Store. This is the icon that shows up on Chrome's New Tab Page. More information on the Publishing to the Chrome Web Store page.
  • Added the ability to close containing dialogs from HtmlService pages. More information on the Html Service page.
  • Improved JavaScript execution performance. See this issue for additional info.
  • Fixed an issue where the DocsList service was unable to retrieve more than 2000 files. Several new methods were added to the DocsList class (getFilesForPaging, etc.) that use continuation tokens as described in the documentation.
  • Fixed an issue where placing a null value via data table's addRow method produced an error.
  • Fixed an issue where the debugger would throw an exception when using ScriptDb.
  • Fixed an issue where ScriptDb's saveBatch() method was returning the incorrect number of result objects.
  • Removed the "File -> New -> From Script Template" option in the script editor, resolving an issue.
  • Fixed an issue where UiApp's setStyleAttribute() method failed when using the attribute "backgroundImage".
  • Fixed an issue where the last modified date for standalone wasn't updating.
  • Fixed an issue where GmailThread's moveToArchive() method wasn't working on threads in the trash.
  • Fixed an issue where ampersands in UiApp's Hidden widgets were being escaped incorrectly.
  • Fixed an issue where UiApp's validateOptions() method always threw an error.
  • Limited the ability to programmatically submit a form in JavaScript served by the HtmlService. Calling form.submit() is only allowed when done in the callback for a user-generated click or keypress event.

September 2012

September 28, 2012

  • Fixed an issue where certain files could not be copied via DocsList.copy().

September 21, 2012

  • Added a setLabelSeparator() method to CategoryFilterBuilder, to allow for label separator strings to be used.
  • Updated DocsList.getFilesByType() to accept values from the DocsList.FileType enumeration. Passing in string values for the document type is deprecated but still functional. (Issue 1755)
  • Enabled SSL certificate validation for UrlFetchApp requests. If you wish to disable this behavior you can set the advanced option validateHttpsCertificates to "false".
  • Fixed an issue where arrays retrieved from ScriptDb didn't behave properly.
  • Fixed an issue where the execution transcript would stop recording after Browser.msgBox() was called.
  • Fixed an issue where scriptlet tags in HtmlTemplates behaved strangely when in attribute values.
  • Fixed a problem that prevented scripts from sending POST requests to other scripts that used the ContentService.

September 7, 2012

  • Added an isDeleted() method to SitesApp's Page class, fulfilling a feature request.
  • Fixed an issue where selecting a value from a DateBox would cause the value changed handler to fire twice.
  • Fixed an issue where Chart dashboard StringFilters ignored the MatchType that was set.

August 2012

August 30, 2012

  • Added methods to delete ScriptProperties and UserProperties in response to this feature request. Additional methods were also added to set multiple properties, get all properties, etc.
  • Added a setOption method to the various chart builders to make it possible to set advanced options for Charts in response to this feature request.
  • Fixed an issue with scrolling in the script editor so that line numbers will be displayed even when horizontally scrolling on long lines.

August 22, 2012

  • Fixed an issue where only one project was copied when making a copy of a Spreadsheet with multiple projects.
  • Fixed an issue where scripts were not installing properly from the Script Gallery.

August 20, 2012

  • UiApp widgets now have a setStyleAttributes method which allow you to set multiple attributes at once.
  • Increased the allowed file upload size in web apps to 50MB, to match the limit in the DocsList service, closing an issue.
  • Added a new log method to the Logger service which accepts a format string and a variable number of values to insert.
  • Fixed an issue where the DatePicker widget returned strange values for dates before 1970.
  • Fixed an issue where all day event series weren't scheduled correctly in certain timezones.
  • Fixed an issue that prevented an HTML form element from being set in a callback.
  • Fixed an issue where embedded charts were returned with the wrong data type.
  • Fixed an issue where Charts ignored advanced parameters of data source URLs.
  • Streamlined the process for publishing web apps to the Chrome Web Store so that developers no longer need to manually verify web app URLs via Webmaster Central.

August 3, 2012

  • Added a getThumbnail() method to the DocsList service's File class, fulfilling a feature request.
  • Fixed an issue where the "parameter" field in the doGet() event argument was missing if no parameters were passed in the URL.
  • Fixed two issues ( 958 and 1093) where the DatePicker and DateBox UI components didn't have a setName() method, preventing them from being used as callback elements in UI apps.
  • Fixed an issue where the DatePicker part of a DateBox didn't inherit the z-index style.
  • Fixed an issue where HtmlTemplates could not be loaded within other templates.
  • Fixed an issue where users would recieve "Summary of failures for Google Apps Script" error for a failed trigger, even after the script was deleted.
  • Fixed an issue where incorrect JsDoc comments in a library would prevent auto-complete from working on it.

July 2012

July 26, 2012

  • Made improvements to the speed of handling large batches of data in ScriptDb.
  • Fixed an error in the GMail script template from the welcome screen.
  • Fixed an issue where saving an object in ScriptDb with an empty string key causes errors.
  • Added support for chatting with script collaborators in the Script Editor. When two or more people are collaborating on a script, a chat panel will be visible on the right-hand side of the Script Editor.
  • Fixed an issue where scripts were not being copied when a Site was copied.
  • Added the ability to support autocomplete for included libraries when they are included in development mode.
  • Fixed an issue with DatePicker.setValue.
  • Added UiInstance.remove methods to remove widgets from UiInstance in response to this issue.
  • Added support for Google Analytics via the Analytics Service.

July 19, 2012

  • Fixed an issue where setting an empty key in Script Properties or User Properties resulted in a "Data storage error" message.

July 16, 2012

  • Fixed an issue where the script editor could not be accessed for some container-bound scripts.
  • Updated the link to the support page on the Google Apps Script Dashboard.

June 2012

June 27, 2012

  • Launched and the ability to create standalone scripts that are not bound to a container like Google Spreadsheets or Google Sites.
  • Launched the Html Service, which you can use to create web apps using HTML, CSS, and JavaScript. The reference documentation is here.
  • Launched the Content Service, which you can use to serve text in various forms, such as text, XML, RSS, or JSON.
  • Launched ScriptDb, a JavaScript object database for Apps Script. The reference documentation is here.
  • Added the ability to publish web apps with versioning and with the option to have them execute as the user accessing the app.
  • Added support for registering Apps Script web apps in the Chrome Web Store, making it quick and simple to publish and distribute your web apps.

June 19, 2012

  • Added a scrollbar to the file panel in the Script Editor, in response to this issue.

June 18, 2012

  • The Script Editor's user interface has been updated.
  • Publish > Publish as service is now Publish > Deploy as web app. Additionally, for new scripts, before you can deploy them as a web app, you must first save a version of the script. You can then choose which version should be served when the script is deployed as a web app. For existing scripts that were already published as a service, you will still be able to access the published URL from the Deploy as web app dialog, but to make additional changes, you will need to save a version of the script.

June 14, 2012

  • Fixed an issue where PDF documents uploaded and saved to Google Drive were being saved as blank files.
  • Added the ability to create, modify, and remove Embedded Charts in Google Spreadsheets in response to this feature request. Embedded Charts are charts that live solely within Spreadsheets and use multiple ranges of data for their datasource.
  • Added support to the Domain Service for NicknameManager and GroupsManager.

June 8, 2012

  • Simplified sharing settings for scripts. For new script projects, the script will inherit the permissions of its parent. For example, if a script is associated with a Spreadsheet, and has edit access to the Spreadsheet, then will have edit access to the script. The extra blue Share button will no longer be present on these newly created scripts, since the permissions are tied to those of the parent. For scripts created prior to June 8, 2012, the Share button will remain if the checkbox to "Allow document collaborators to edit project" or "Allow site collaborators and owners to edit project" was not selected for that script. For more information see Security. If you would like to have script source that cannot be modified by the editors of your Spreadsheet or Site, then you can use Script Libraries.

May 2012

May 21, 2012

  • Launched Script Libraries and Versions in response to this feature request.
  • Fixed an issue with ClockTriggerBuilder.nearMinute, where invalid minute values were sometimes created.
  • Updated the Help > Support link in the Script Editor to point to this support page.
  • Added getDescription() and setDescription() methods to File and Folder in response to this issue.
  • Set a limit of 20 triggers per script. This limit takes effect as of May 21,
    1. For scripts created prior to that date, which already have more than 20 triggers, they will keep the existing triggers, but cannot add new ones without removing existing triggers.
  • Updated File and Folder sharing methods to return File and Folder for easy chaining.

May 11, 2012

  • Fixed an issue with the debugger, so that it no longer fails when a breakpoint is set on certain classes from the JDBC service.
  • Fixed an issue with UiApp, so that modifying a spreadsheet cell from a submit handler no longer causes an empty file to be downloaded.

May 4, 2012

  • Launched the Google Apps Script Dashboard in response to this issue, so that developers can view service health and quota limits.
  • Fixed an issue with Site.getOwners(), Site.getReaders(), Site.getEditors(), where the methods were failing in some cases.
  • Fixed an issue with ScriptApp.getService().getUrl() so that the method can be called by users other than just the script owner.
  • Fixed an issue with the Script Editor, where developers were prompted to recover a draft version of another file in the same project, rather than the one being edited.
  • Fixed an issue with resuming continuations (such as in a script that waits for user input via message box), so that the scripts correctly honor the 6 minute script execution limit.
  • Added a DocumentApp.HorizontalAlignment.JUSTIFY value to the DocumentApp.HorizontalAlignment enumeration in response to this request.
  • Fixed an issue with UiApp.ClientHandler.setValue() so that it doesn't return errors and also works for checkboxes.

April 2012

April 19, 2012

  • Items in the Help menu in the Script Editor now open in a new tab instead of a new window.
  • Made some modifications to the calculation of CPU time for scripts running on triggers, so that time spent waiting on certain processes is not counted toward that limit. This is in response to this issue.
  • Added the method everyMinutes() to Script Service.

April 16, 2012

  • Fixed an issue in the Script Editor where the debugger would not terminate after executing the last statement of a script.
  • Increased the size of the files that can be created via DocsListApp.createFile() from 2MB to 50MB.
  • Increased the allowed argument value for Utilities.sleep() from 5000 (5 seconds) to 300000 (5 minutes).
  • Added method to DocsList service to getRootFolder() in response to this issue.
  • Added method to File and Folder classes to check whether the item isTrashed().
  • Fixed an issue where an embedded image would not copy properly in a Google Document.
  • Fixed an issue where a shared folder would not show up in "Collections shared with me".
  • Updated the script failure notification emails to include the name and a link of the spreadsheet that contains the failed script in response to this issue
  • Increased the allowed attachment size for emails sent via GmailApp and MailApp from 5MB to 25MB.

April 11, 2012

  • Fixed an issue where files and collections in Google Docs could not be shared with groups.

April 4, 2012

March 2012

March 20, 2012

  • Fixed an issue where Spreadsheet.insertSheet() failed to properly copy a sheet when given a {template:sheet_obj} parameter.

March 13, 2012

  • Fixed an issue where functions in the Utilities Service were not handling UTF-8 strings correctly.
  • Fixed an issue where text in a ListBox widget was being unneccessarily HTML-encoded.
  • Added the ability to set the subject line via the 'subject' field in the advanced arguments for GmailMessage.forward() in response to this issue.
  • Fixed an issue where Anchor.setWordWrap() was throwing errors.
  • Fixed an issue with UiApp panels that launch from a Google Spreadsheet, where the 'X' to close was not displaying if the title of the application was not set.
  • Fixed an issue in the GUI Builder where setting the visibility for a widget to false was not working.

March 7, 2012

  • Added documentation for DocsListDialog. "Unexpected error" is no longer thrown when trying to display it.
  • The Script Editor's menus have been updated:
    1. A new Resources menu is added.
    2. The Share menu is renamed to Publish.
    3. Triggers' management is moved to Resources menu.
    4. Google API Services console is moved to Resources menu.
    5. Links under the Help menu now open in a new tab rather than a new window in Firefox 9.x and Chrome.
  • Changed the window that appears after Authorization to the script has been granted. It is now displayed in a new tab rather than a pop-up. This tab will no longer close automatically after 5 seconds.
  • Updated the appearance of the warning bar that is displayed when running a script that is published as a service by a user other than the owner, in response to this issue.
  • Added the ability to set the target for an Anchor in UI app, in response to this issue.
  • Added the ability to include a limited set of HTML tags when working with UiApp widgets, in response to this issue. Here is the list of HTML tags that are permitted: B, BLOCKQUOTE, BODY, BR, CENTER, CAPTION, CITE, CODE, DIV, EM, H1, H2, H3, H4, H5, H6, HR, I, LABEL, LEGEND, LI, OL, P, SPAN, STRONG, SUB, SUP, TABLE, TBODY, TD, THEAD, TITLE, TR, TT, UL
  • Added support for sheet protection, in reference to this issue. Introduced two new methods: Sheet.getSheetProtection and Sheet.setSheetProtection, as well as a new PageProtection class.

February 2012

February 12, 2012

  • Fixed an issue with using tab key to format code in the script editor.
  • Added methods to the Document class to addHeader() and addFooter().
  • Fixed an issue where email quotas were too restrictive when executed by an anonymous user from a script running as a service.
  • Added a merge() method to the Range class in response to this feature request.

February 6, 2012

January 2012

January 31, 2012

  • Fixed an issue where Anchor.setWordWrap() was not working.

January 24, 2012

January 11, 2012

  • Fixed an issue with Paragraph.setHeading() where text was not formatted as expected.