This page lists the major changes in each release of Google Apps Script in 2022. It is intended to help developers identify recent changes in behavior. For older changes, see the release notes for 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, or 2010.
December 2022
December 16, 2022
Apps Script has deprecated the Contacts service. Instead, use the People API advanced service. Refer to Migrate from Contacts service to People API advanced service.
Apps Script is shutting down the Contacts service in April 2023. Refer to the Apps Script sunset schedule.
November 2022
November 3, 2022
Apps Script added a new method to the Utilities class.
parseDate(date, timeZone, format)
parses a provided string date according to the specification described in the
Java Standard Edition SimpleDateFormat class.
November 1, 2022
Apps Script has sunset the following methods:
There isn't a replacement method to get this data with Apps Script.
Learn about the switch from Classic Hangouts to Chat
September 2022
September 27, 2022
Apps Script has turned down the legacy integrated development environment (IDE) in favor of the redesigned IDE that launched in December 2020.
Learn more about the IDE updates from the following blog posts:
- Updated Apps Script integrated development environment will replace the legacy experience by Q4 2022
- Additional functionality for the Apps Script Integrated Development Environment (IDE) Script Editor
- Use the new Apps Script Integrated Development Environment (IDE) Script Editor
July 2022
July 19, 2022
Apps Script now automatically deletes default Google Cloud projects (Google Cloud projects that Apps Script creates in the background) when their associated scripts haven't run in 180 days or more. If the script runs after Apps Script deletes the default Google Cloud project, Apps Script creates one for the script.
This update doesn't affect standard Google Cloud projects (Google Cloud projects created by people).
July 8, 2022
Apps Script has deprecated the following methods:
These methods will become unavailable later this year once Google switches all users from Classic Hangouts to Google Chat. There isn't a replacement method to get this data with Apps Script.
Learn about the switch from Classic Hangouts to Chat
June 2022
June 6, 2022
You can now call functions in separate files before they're parsed. Previously, the V8 runtime required a script file to be parsed before any other file could call the functions it defines.
Now, the order of files in the Apps Script editor doesn't matter. This means that you can call a function in a different file to assign a value to a global variable—the function is always defined before it's called. This behavior reflects that of the legacy Rhino runtime.
In this
example, an error used to occur if the First.gs
script file was parsed before
the Second.gs
script file was parsed:
First.gs// This no longer fails in V8 if Second.gs isn't // parsed by the time First.gs is // being parsed. var globalVar = calculate(); function myFunction() { Logger.log("globalVar = %s", globalVar); } |
Second.gs// A utility function saved in a separate // file (Second.gs) in the same script // project. function calculate() { return Math.random(); } |
April 2022
April 13, 2022
You can now perform the following actions in the new Apps Script integrated development environment (IDE):
- Create test deployments for Editor Add-ons.
- Add, edit, and delete script properties from the project settings page.
- Sort files alphabetically in the editor.
- Debug Rhino functions without migrating to the V8 runtime. If your code isn't V8 compatible, you might receive errors.
- Set the time zone for a script project.
March 2022
March 24, 2022
For Google Workspace Add-ons, an Attachment
class has been added to the Card Service
that lets you add custom attachments to Calendar events. You can also set an
event trigger that fires when the user clicks on the add-on attachment provider
in the Calendar dropdown menu. For more information, refer to
EventAttachmentTrigger
.
March 18, 2022
The get
methods for several color objects in the Spreadsheet Service
have been
deprecated in favor of a new naming convention. The functionality remains the
same. For example, the getFontColor()
method from the Range
class has been
replaced with getFontColorObject()
.
The following classes have updated get
methods for color objects:
Banding
getFirstColumnColor()
is nowgetFirstColumnColorObject()
.getFirstRowColor()
is nowgetFirstRowColorObject()
.getFooterColumnColor()
is nowgetFooterColumnColor()
.getFooterRowColor()
is nowgetFooterRowColorObject()
.getHeaderColumnColor()
is nowgetHeaderColumnColorObject()
.getHeaderRowColor()
is nowgetHeaderRowColorObject()
.getSecondColumnColor()
is nowgetSecondColumnColorObject()
getSecondRowColor()
is nowgetSecondRowColorObject()
.
BooleanCondition
getBackground()
is nowgetBackgroundObject()
.getFontColor()
is nowgetFontColorObject()
.
GradientCondition
getMaxColor()
is nowgetMaxColorObject
.getMidColor()
is nowgetMidColorObject
.getMinColor()
is nowgetMinColorObject
.
Range
getFontColor()
is nowgetFontColorObject()
.getFontColors()
is nowgetFontColorObjects()
.
Sheet
getTabColor()
is nowgetTabColorObject
.
Slicer
getBackgroundColor()
is nowgetBackgroundColorObject()
.
February 2022
February 14, 2022
Owners receive email alerts when someone outside the owner's organization edits a script project in the new integrated development environment (IDE).
For container-bound scripts: If someone outside the container owner’s organization creates or edits a container-bound script project, the container owner receives an email notification.
For standalone scripts: If someone outside the script project owner's organization edits a standalone script project, the script project owner receives an email notification.
January 19, 2022
The following classes have been added to the Spreadsheet Service to let you add images to cells:
CellImageBuilder
: This builder creates the image value needed to add an image to a cell.CellImage
: Represents an image to add to a cell.
To add an image to a cell, you must create a new image value for the image using
SpreadsheetApp.newCellImage()
and CellImageBuilder
.
Then, use Range.setValue(value)
or Range.setValues(values)
to add the image value to the cell.