Class SpreadsheetApp

  • TheSpreadsheetApp class is used to access and create Google Sheets files and is the parent class for the Spreadsheet service.

  • TheSpreadsheetApp class contains various properties, which are enumerations representing different options or types within a spreadsheet, such asAutoFillSeries,BandingTheme, andBorderStyle.

  • TheSpreadsheetApp class offers methods to manage spreadsheets, including creating new spreadsheets, opening existing ones by ID or URL, and controlling data execution for data sources.

  • Methods likegetActive(),getActiveRange(),getActiveSheet(), andgetSelection() allow scripts to interact with the currently active components of a spreadsheet.

  • TheSpreadsheetApp class also provides methods to create builders for various spreadsheet elements likeCellImage,Color,ConditionalFormatRule, andDataValidation.

SpreadsheetApp

Access and create Google Sheets files. This class is the parent class for theSpreadsheet service.

Properties

PropertyTypeDescription
AutoFillSeriesAutoFillSeriesAn enumeration of the types of series used to calculate auto-filled values.
BandingThemeBandingThemeAn enumeration of the possible banding themes.
BooleanCriteriaBooleanCriteriaAn enumeration of conditional formatting boolean criteria.
BorderStyleBorderStyleAn enumeration of the valid styles for setting borders on aRange.
ColorTypeColorTypeAn enumeration of possible color types.
CopyPasteTypeCopyPasteTypeAn enumeration of the possible paste types.
DataExecutionErrorCodeDataExecutionErrorCodeAn enumeration of the possible data execution error codes.
DataExecutionStateDataExecutionStateAn enumeration of the possible data execution states.
DataSourceParameterTypeDataSourceParameterTypeAn enumeration of the possible data source parameter types.
DataSourceRefreshScopeDataSourceRefreshScopeAn enumeration of possible data source refresh scopes.
DataSourceTypeDataSourceTypeAn enumeration of the possible data source types.
DataValidationCriteriaDataValidationCriteriaAn enumeration representing the data validation criteria that can be set on a range.
DateTimeGroupingRuleTypeDateTimeGroupingRuleTypeAn enumeration of date time grouping rule.
DeveloperMetadataLocationTypeDeveloperMetadataLocationTypeAn enumeration of possible developer metadata location types.
DeveloperMetadataVisibilityDeveloperMetadataVisibilityAn enumeration of the possible developer metadata visibilities.
DimensionDimensionAn enumeration of the possible dimensions of a spreadsheet.
DirectionDirectionA enumeration of the possible directions that one can move within a spreadsheet using the arrowkeys.
FrequencyTypeFrequencyTypeAn enumeration of possible frequency types.
GroupControlTogglePositionGroupControlTogglePositionAn enumeration of the positions that the group control toggle can be in.
InterpolationTypeInterpolationTypeAn enumeration of conditional format gradient interpolation types.
PivotTableSummarizeFunctionPivotTableSummarizeFunctionAn enumeration of the functions that may be used to summarize values in a pivot table.
PivotValueDisplayTypePivotValueDisplayTypeAn enumeration of the ways that a pivot value may be displayed.
ProtectionTypeProtectionTypeAn enumeration representing the parts of a spreadsheet that can be protected from edits.
RecalculationIntervalRecalculationIntervalAn enumeration of the possible intervals that can be used in spreadsheet recalculation.
RelativeDateRelativeDateAn enumeration of relative date options for calculating a value to be used in date-basedBooleanCriteria.
SheetTypeSheetTypeAn enumeration of the different types of sheets that can exist in a spreadsheet.
SortOrderSortOrderAn enumeration of sort order.
TextDirectionTextDirectionAn enumeration of valid text directions.
TextToColumnsDelimiterTextToColumnsDelimiterAn enumeration of the preset delimiters for split text to columns.
ThemeColorTypeThemeColorTypeAn enumeration of possible theme color types.
ValueTypeValueTypeAn enumeration of value types returned byRange.getValue() andRange.getValues() from the Range class of the Spreadsheet service. The enumeration valueslisted below are in addition toNumber,Boolean,Date, orString.
WrapStrategyWrapStrategyAn enumeration of the strategies used for wrapping cells.

Methods

MethodReturn typeBrief description
create(name)SpreadsheetCreates a new spreadsheet with the given name.
create(name, rows, columns)SpreadsheetCreates a new spreadsheet with the given name and the specified number of rows and columns.
enableAllDataSourcesExecution()voidTurns data execution on for all types of data sources.
enableBigQueryExecution()voidTurns data execution on for BigQuery data sources.
enableLookerExecution()voidTurns data execution on for Looker data sources.
flush()voidApplies all pending Spreadsheet changes.
getActive()SpreadsheetReturns the currently active spreadsheet, ornull if there is none.
getActiveRange()RangeReturns the selected range in the active sheet, ornull if there is no active range.
getActiveRangeList()RangeList|nullReturns the list of active ranges in the active sheet ornull if there are no rangesselected.
getActiveSheet()SheetGets the active sheet in a spreadsheet.
getActiveSpreadsheet()SpreadsheetReturns the currently active spreadsheet, ornull if there is none.
getCurrentCell()Range|nullReturns the current (highlighted) cell that is selected in one of the active ranges in theactive sheet ornull if there is no current cell.
getSelection()SelectionReturns the currentSelection in the spreadsheet.
getUi()UiReturns an instance of the spreadsheet's user-interface environment that allows the script toadd features like menus, dialogs, and sidebars.
newCellImage()CellImageBuilderCreates a builder for aCellImage.
newColor()ColorBuilderCreates a builder for aColor.
newConditionalFormatRule()ConditionalFormatRuleBuilderCreates a builder for a conditional formatting rule.
newDataSourceSpec()DataSourceSpecBuilderCreates a builder for aDataSourceSpec.
newDataValidation()DataValidationBuilderCreates a builder for a data validation rule.
newFilterCriteria()FilterCriteriaBuilderCreates a builder for aFilterCriteria.
newRichTextValue()RichTextValueBuilderCreates a builder for a Rich Text value.
newTextStyle()TextStyleBuilderCreates a builder for a text style.
open(file)SpreadsheetOpens the spreadsheet that corresponds to the given File object.
openById(id)SpreadsheetOpens the spreadsheet with the given ID.
openByUrl(url)SpreadsheetOpens the spreadsheet with the given URL.
setActiveRange(range)RangeSets the specified range as theactive range, with the topleft cell in the range as thecurrent cell.
setActiveRangeList(rangeList)RangeListSets the specified list of ranges as theactive ranges.
setActiveSheet(sheet)SheetSets the active sheet in a spreadsheet.
setActiveSheet(sheet, restoreSelection)SheetSets the active sheet in a spreadsheet, with the option to restore the most recent selectionwithin that sheet.
setActiveSpreadsheet(newActiveSpreadsheet)voidSets the active spreadsheet.
setCurrentCell(cell)RangeSets the specified cell as thecurrent cell.

Detailed documentation

create(name)

Creates a new spreadsheet with the given name.

// The code below creates a new spreadsheet "Finances" and logs the URL for itconstssNew=SpreadsheetApp.create('Finances');Logger.log(ssNew.getUrl());

Parameters

NameTypeDescription
nameStringThe name for the spreadsheet.

Return

Spreadsheet — a new spreadsheet

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets

create(name, rows, columns)

Creates a new spreadsheet with the given name and the specified number of rows and columns.

// The code below creates a new spreadsheet "Finances" with 50 rows and 5// columns and logs the URL for itconstssNew=SpreadsheetApp.create('Finances',50,5);Logger.log(ssNew.getUrl());

Parameters

NameTypeDescription
nameStringThe name for the spreadsheet.
rowsIntegerThe number of rows for the spreadsheet.
columnsIntegerThe number of columns for the spreadsheet.

Return

Spreadsheet — a new spreadsheet

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets

enableAllDataSourcesExecution()

Turns data execution on for all types of data sources.

Data execution throws an exception if the data source type isn't turned on. Use this methodto turn data execution on for all data source types.

// Turns data execution on for all types of data sources.SpreadsheetApp.enableAllDataSourcesExecution();// Opens the spreadsheet file by its ID. If you created your script from a// Google Sheets file, use SpreadsheetApp.getActiveSpreadsheet().// TODO(developer): Replace the ID with your own.constss=SpreadsheetApp.openById('abc123456');// Gets the first data source sheet in the spreadsheet and refreshes the data.ss.getDataSourceSheets()[0].refreshData();

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/bigquery.readonly

enableBigQueryExecution()

Turns data execution on for BigQuery data sources.

Data execution for BigQuery data source throws an exception if not turned on.

// Turns data execution on for BigQuery data sources.SpreadsheetApp.enableBigQueryExecution();// Opens the spreadsheet file by its ID. If you created your script from a// Google Sheets file, use SpreadsheetApp.getActiveSpreadsheet().// TODO(developer): Replace the ID with your own.constss=SpreadsheetApp.openById('abc123456');// Gets the first data source sheet in the spreadsheet and refreshes the// BigQuery data.ss.getDataSourceSheets()[0].refreshData();

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/bigquery.readonly

enableLookerExecution()

Turns data execution on for Looker data sources.

Data execution for Looker data source throws an exception if not turned on.

// Turns data execution on for Looker data sources.SpreadsheetApp.enableLookerExecution();// Opens the spreadsheet file by its ID. If you created your script from a// Google Sheets file, use SpreadsheetApp.getActiveSpreadsheet().// TODO(developer): Replace the ID with your own.constss=SpreadsheetApp.openById('abc123456');// Gets the first data source sheet in the spreadsheet and refreshes the// associated Looker data.ss.getDataSourceSheets()[0].refreshData();

flush()

Applies all pending Spreadsheet changes.

Spreadsheet operations are sometimes bundled together to improve performance, such as whendoing multiple calls to Range.getValue(). However, sometimes you may want to make sure that allpending changes are made right away, for instance to show users data as a script is executing.

// The code below changes the background color of cells A1 and B1 twenty times.// You should be able to see the updates live in the spreadsheet. If flush() is// not called, the updates may be applied live or may all be applied at once// when the script completes.functioncolors(){constsheet=SpreadsheetApp.getActiveSheet();for(leti=0;i <20;i++){if(i%2===0){sheet.getRange('A1').setBackground('green');sheet.getRange('B1').setBackground('red');}else{sheet.getRange('A1').setBackground('red');sheet.getRange('B1').setBackground('green');}SpreadsheetApp.flush();}}

getActive()

Returns the currently active spreadsheet, ornull if there is none.

Functions that are run in the context of a spreadsheet can get a reference to thecorresponding Spreadsheet object by calling this function.

// The code below logs the URL for the active spreadsheet.Logger.log(SpreadsheetApp.getActive().getUrl());

Return

Spreadsheet — the active Spreadsheet object

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getActiveRange()

Returns the selected range in the active sheet, ornull if there is no active range. Ifmultiple ranges are selected this method returns only the last selected range.

This generally means the range that a user has selected in the active sheet, but in a customfunction it refers to the cell being actively recalculated.

// The code below logs the background color for the active range.constcolorObject=SpreadsheetApp.getActiveRange().getBackgroundObject();// Assume the color has ColorType.RGB.Logger.log(colorObject.asRgbColor().asHexString());

Return

Range — The active range.

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getActiveRangeList()

Returns the list of active ranges in the active sheet ornull if there are no rangesselected. The active range containing the current highlighted cell is placed last in the list.

If there is a single range selected, this behaves as agetActiveRange() call.

// Returns the list of active ranges.constrangeList=SpreadsheetApp.getActiveRangeList();

Return

RangeList|null — the list of active ranges

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getActiveSheet()

Gets the active sheet in a spreadsheet.

The active sheet in a spreadsheet is the sheet that is being displayed in the spreadsheetUI.

// The code below logs the name of the active sheet.Logger.log(SpreadsheetApp.getActiveSheet().getName());

Return

Sheet — the active Sheet object

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getActiveSpreadsheet()

Returns the currently active spreadsheet, ornull if there is none.

Functions that are run in the context of a spreadsheet can get a reference to thecorrespondingSpreadsheet object by calling this function.

// The code below logs the URL for the active spreadsheet.Logger.log(SpreadsheetApp.getActiveSpreadsheet().getUrl());

Return

Spreadsheet — the active Spreadsheet object

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getCurrentCell()

Returns the current (highlighted) cell that is selected in one of the active ranges in theactive sheet ornull if there is no current cell.

// Returns the current highlighted cell in the one of the active ranges.constcurrentCell=SpreadsheetApp.getCurrentCell();

Return

Range|null — the current cell

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getSelection()

Returns the currentSelection in the spreadsheet.

constselection=SpreadsheetApp.getSelection();constcurrentCell=selection.getCurrentCell();

Return

Selection — the current selection

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getUi()

Returns an instance of the spreadsheet's user-interface environment that allows the script toadd features like menus, dialogs, and sidebars. A script can only interact with the UI for thecurrent instance of an open spreadsheet, and only if the script isbound to the spreadsheet. For more information, seethe guides tomenus anddialogs and sidebars.

// Add a custom menu to the active spreadsheet, including a separator and a// sub-menu.functiononOpen(e){SpreadsheetApp.getUi().createMenu('My Menu').addItem('My menu item','myFunction').addSeparator().addSubMenu(SpreadsheetApp.getUi().createMenu('My sub-menu').addItem('One sub-menu item','mySecondFunction').addItem('Another sub-menu item','myThirdFunction'),).addToUi();}

Return

Ui — an instance of this spreadsheet's user-interface environment


newCellImage()

Creates a builder for aCellImage.

// Opens the spreadsheet file by its URL. If you created your script from within// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet()// instead.// TODO(developer): Replace the URL with your own.constss=SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit',);// Gets Sheet1 by its name.constsheet=ss.getSheetByName('Sheet1');// Gets cell A1 on Sheet1.constrange=sheet.getRange('A1');// Builds an image using a source URL.constcellImage=SpreadsheetApp.newCellImage().setSourceUrl('https://www.gstatic.com/images/branding/productlogos/apps_script/v10/web-64dp/logo_apps_script_color_1x_web_64dp.png',).build();// Sets the image in cell A1.range.setValue(cellImage);

Return

CellImageBuilder — The new builder.


newColor()

Creates a builder for aColor.

constrgbColor=SpreadsheetApp.newColor().setRgbColor('#FF0000').build();

Return

ColorBuilder — The new builder.


newConditionalFormatRule()

Creates a builder for a conditional formatting rule.

// Adds a conditional format rule to a sheet that causes all cells in range// A1:B3 to turn red if they contain a number between 1 and 10.constsheet=SpreadsheetApp.getActive().getActiveSheet();constrange=sheet.getRange('A1:B3');construle=SpreadsheetApp.newConditionalFormatRule().whenNumberBetween(1,10).setBackground('#FF0000').setRanges([range]).build();construles=sheet.getConditionalFormatRules();rules.push(rule);sheet.setConditionalFormatRules(rules);

Return

ConditionalFormatRuleBuilder — the new builder.


newDataSourceSpec()

Creates a builder for aDataSourceSpec.

// Opens the spreadsheet file by its URL. If you created your script from within// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet()// instead.// TODO(developer): Replace the URL with your own.constss=SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit',);// Enables BigQuery.SpreadsheetApp.enableBigQueryExecution();// Builds a data source specification.// TODO (developer): Update the project ID to your own Google Cloud project ID.constdataSourceSpec=SpreadsheetApp.newDataSourceSpec().asBigQuery().setProjectId('project-id-1').setTableProjectId('bigquery-public-data').setDatasetId('ncaa_basketball').setTableId('mbb_historical_teams_games').build();// Adds the data source and its data to the spreadsheet.ss.insertDataSourceSheet(dataSourceSpec);

Return

DataSourceSpecBuilder — The new builder.


newDataValidation()

Creates a builder for a data validation rule.

constcell=SpreadsheetApp.getActive().getRange('A1');construle=SpreadsheetApp.newDataValidation().requireNumberBetween(1,100).setAllowInvalid(false).setHelpText('Number must be between 1 and 100.').build();cell.setDataValidation(rule);

Return

DataValidationBuilder — The new builder.


newFilterCriteria()

Creates a builder for aFilterCriteria.

// Opens the spreadsheet file by its URL. If you created your script from within// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet()// instead.// TODO(developer): Replace the URL with your own.constss=SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit',);// Gets Sheet1 by its name.constsheet=ss.getSheetByName('Sheet1');// Sets the range to A1:D20.constrange=sheet.getRange('A1:D20');// Creates a filter and applies it to the specified range.range.createFilter();// Gets the current filter for the range and creates filter criteria that only// shows cells that aren't empty.constfilter=range.getFilter();constcriteria=SpreadsheetApp.newFilterCriteria().whenCellNotEmpty().build();// Sets the criteria to  column C.filter.setColumnFilterCriteria(3,criteria);

Return

FilterCriteriaBuilder — the new builder


newRichTextValue()

Creates a builder for a Rich Text value.

// Sets cell A1 to have the text "Hello world", with "Hello" bolded.constcell=SpreadsheetApp.getActive().getRange('A1');constbold=SpreadsheetApp.newTextStyle().setBold(true).build();constvalue=SpreadsheetApp.newRichTextValue().setText('Hello world').setTextStyle(0,5,bold).build();cell.setRichTextValue(value);

Return

RichTextValueBuilder — The new builder.


newTextStyle()

Creates a builder for a text style.

// Sets range A1:B3 to have red, size 22, bolded, underlined text.constrange=SpreadsheetApp.getActive().getRange('A1:B3');conststyle=SpreadsheetApp.newTextStyle().setForegroundColor('red').setFontSize(22).setBold(true).setUnderline(true).build();range.setTextStyle(style);

Return

TextStyleBuilder — The new builder.


open(file)

Opens the spreadsheet that corresponds to the given File object.

// Get any starred spreadsheets from Google Drive, then open the spreadsheets// and log the name of the first sheet within each spreadsheet.constfiles=DriveApp.searchFiles(`starred = true and mimeType = "${MimeType.GOOGLE_SHEETS}"`,);while(files.hasNext()){constspreadsheet=SpreadsheetApp.open(files.next());constsheet=spreadsheet.getSheets()[0];Logger.log(sheet.getName());}

Parameters

NameTypeDescription
fileFileThe file to open.

Return

Spreadsheet — the spreadsheet

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets

openById(id)

Opens the spreadsheet with the given ID. A spreadsheet ID can be extracted from its URL. Forexample, the spreadsheet ID in the URLhttps://docs.google.com/spreadsheets/d/abc1234567/edit#gid=0 is "abc1234567".

// The code below opens a spreadsheet using its ID and logs the name for it.// Note that the spreadsheet is NOT physically opened on the client side.// It is opened on the server only (for modification by the script).constss=SpreadsheetApp.openById('abc1234567');Logger.log(ss.getName());

Parameters

NameTypeDescription
idStringThe unique identifier for the spreadsheet.

Return

Spreadsheet — the Spreadsheet object with the given id

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets

openByUrl(url)

Opens the spreadsheet with the given URL. Throws a scripting exception if the URL doesn't existor the user doesn't have permission to access it.

// Opens a spreadsheet by its URL and logs its name.// Note that the spreadsheet doesn't physically open on the client side.// It opens on the server only (for modification by the script).constss=SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc1234567/edit',);console.log(ss.getName());

Parameters

NameTypeDescription
urlStringThe URL for the spreadsheet.

Return

Spreadsheet — The spreadsheet object with the given URL.

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets

setActiveRange(range)

Sets the specified range as theactive range, with the topleft cell in the range as thecurrent cell.

The spreadsheet UI displays the sheet that contains the chosen range and selects the cellsdefined in the chosen range.

// The code below sets range C1:D4 in the first sheet as the active range.constrange=SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange('C1:D4');SpreadsheetApp.setActiveRange(range);constselection=SpreadsheetApp.getSelection();// Current cell: C1constcurrentCell=selection.getCurrentCell();// Active Range: C1:D4constactiveRange=selection.getActiveRange();

Parameters

NameTypeDescription
rangeRangeThe range to be made the active range.

Return

Range — the new active Range


setActiveRangeList(rangeList)

Sets the specified list of ranges as theactive ranges. The lastrange in the list is set as theactive range.

// The code below sets ranges [D4, B2:C4] in the active sheet as the active// ranges.constrangeList=SpreadsheetApp.getActiveSheet().getRanges(['D4','B2:C4']);SpreadsheetApp.setActiveRangeList(rangeList);constselection=SpreadsheetApp.getSelection();// Current cell: B2constcurrentCell=selection.getCurrentCell();// Active range: B2:C4constactiveRange=selection.getActiveRange();// Active range list: [D4, B2:C4]constactiveRangeList=selection.getActiveRangeList();

Parameters

NameTypeDescription
rangeListRangeListThe list of ranges to select.

Return

RangeList — the newly selected list of ranges

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

setActiveSheet(sheet)

Sets the active sheet in a spreadsheet. The Google Sheets UI displays the chosen sheet unlessthe sheet belongs to a different spreadsheet.

// The code below makes the 2nd sheet active in the active spreadsheet.constspreadsheet=SpreadsheetApp.getActiveSpreadsheet();SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[1]);

Parameters

NameTypeDescription
sheetSheetThe new active sheet.

Return

Sheet — the sheet that has been made the new active sheet


setActiveSheet(sheet, restoreSelection)

Sets the active sheet in a spreadsheet, with the option to restore the most recent selectionwithin that sheet. The Google Sheets UI displays the chosen sheet unless the sheet belongs to adifferent spreadsheet.

constspreadsheet=SpreadsheetApp.getActiveSpreadsheet();constfirstSheet=spreadsheet.getSheets()[0];constsecondSheet=spreadsheet.getSheets()[1];// Set the first sheet as the active sheet and select the range D4:F4.spreadsheet.setActiveSheet(firstSheet).getRange('D4:F4').activate();// Switch to the second sheet to do some work.spreadsheet.setActiveSheet(secondSheet);// Switch back to first sheet, and restore its selection.spreadsheet.setActiveSheet(firstSheet,true);// The selection of first sheet is restored, and it logs D4:F4constrange=spreadsheet.getActiveSheet().getSelection().getActiveRange();Logger.log(range.getA1Notation());

Parameters

NameTypeDescription
sheetSheetThe new active sheet.
restoreSelectionBooleanIftrue, the most recent selection of the new active sheet becomes selected again as the new sheet becomes active; iffalse, the new sheet becomes active without changing the current selection.

Return

Sheet — the new active sheet

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

setActiveSpreadsheet(newActiveSpreadsheet)

Sets the active spreadsheet.

// The code below makes the spreadsheet with key "1234567890" the active// spreadsheetconstss=SpreadsheetApp.openById('1234567890');SpreadsheetApp.setActiveSpreadsheet(ss);

Parameters

NameTypeDescription
newActiveSpreadsheetSpreadsheetThe Spreadsheet to be made the active spreadsheet.

setCurrentCell(cell)

Sets the specified cell as thecurrent cell.

If the specified cell is present in an already selected range, then that range becomes theactive range with the cell as the current cell.

If the specified cell is not present in any selected range, then the existing selection isremoved and the cell becomes the current cell and the active range.

Note:The specifiedRange must consist of one cell, otherwise this methodthrows an exception.

// The code below sets the cell B5 in the first sheet as the current cell.constcell=SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange('B5');SpreadsheetApp.setCurrentCell(cell);constselection=SpreadsheetApp.getSelection();// Current cell: B5constcurrentCell=selection.getCurrentCell();

Parameters

NameTypeDescription
cellRangeThe cell to set as the current cell.

Return

Range — the newly set current cell

Authorization

Scripts that use this method require authorization with one or more of the followingscopes:

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-12-11 UTC.