Object reference
Spreadsheet
A Spreadsheet is the whole Google Sheets file. Use SpreadsheetApp.getActiveSpreadsheet() or openById() to get it, then call getSheetByName() or getActiveSheet().
SpreadsheetApp.SpreadsheetStart here
Get this object first
In a script bound to a Google Sheet, call SpreadsheetApp.getActiveSpreadsheet() to get the open file. In a standalone script, pass the file ID from the URL to SpreadsheetApp.openById(id).
function logSpreadsheetName() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
Logger.log(spreadsheet.getName());
} Then use it
Common actions
Choose an action, then open its example only when you need the code.
Get a tab by name with getSheetByName
This looks up a tab by its exact name and checks for null before calling getRange(), avoiding TypeError: Cannot read properties of null.
SpreadsheetApp.SpreadsheetSpreadsheetApp.SheetSpreadsheetApp.RangeShow example code
function logNamedSheetFirstCell() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getSheetByName('Customers');
if (!sheet) {
throw new Error('No tab named Customers found in ' + spreadsheet.getName());
}
Logger.log(sheet.getRange('A1').getDisplayValue());
} Get the active tab with getActiveSheet
This gets the tab currently open in the spreadsheet and logs its name and last used row without changing any cells.
SpreadsheetApp.SpreadsheetSpreadsheetApp.SheetShow example code
function logActiveSheetSummary() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
Logger.log(sheet.getName() + ' last used row: ' + sheet.getLastRow());
} List every tab name in the file
This reads the tab names in order from getSheets() and logs them without changing the spreadsheet.
SpreadsheetApp.SpreadsheetSpreadsheetApp.SheetShow example code
function listSheetNames() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const names = spreadsheet.getSheets().map((sheet) => sheet.getName());
Logger.log(names.join(', '));
} Technical reference
Exact names and signatures
Generated runtime and signature facts stay separate from the beginner actions above. Open method details only when you need them.
At a glance
- Service
- SpreadsheetApp
- Reference symbol
SpreadsheetApp.Spreadsheet- Object
Spreadsheet- Runtime
- From signature data
Methods and signatures
Browse 125 methods
addDeveloperMetadata
- addDeveloperMetadata(key: string): SpreadsheetApp.Spreadsheet
- addDeveloperMetadata(key: string, visibility: SpreadsheetApp.DeveloperMetadataVisibility): SpreadsheetApp.Spreadsheet
- addDeveloperMetadata(key: string, value: string): SpreadsheetApp.Spreadsheet
- addDeveloperMetadata(key: string, value: string, visibility: SpreadsheetApp.DeveloperMetadataVisibility): SpreadsheetApp.Spreadsheet
addEditor
- addEditor(emailAddress: string): SpreadsheetApp.Spreadsheet
- addEditor(user: User): SpreadsheetApp.Spreadsheet
addEditors
- addEditors(emailAddresses: string[]): SpreadsheetApp.Spreadsheet
addMenu
- addMenu(name: string, subMenus: unknown[]): void
addViewer
- addViewer(emailAddress: string): SpreadsheetApp.Spreadsheet
- addViewer(user: User): SpreadsheetApp.Spreadsheet
addViewers
- addViewers(emailAddresses: string[]): SpreadsheetApp.Spreadsheet
appendRow
- appendRow(rowContents: unknown[]): SpreadsheetApp.Sheet
autoResizeColumn
- autoResizeColumn(columnPosition: number): SpreadsheetApp.Sheet
copy
- copy(name: string): SpreadsheetApp.Spreadsheet
createDeveloperMetadataFinder
- createDeveloperMetadataFinder(): SpreadsheetApp.DeveloperMetadataFinder
createTextFinder
- createTextFinder(findText: string): SpreadsheetApp.TextFinder
deleteActiveSheet
- deleteActiveSheet(): SpreadsheetApp.Sheet
deleteColumn
- deleteColumn(columnPosition: number): SpreadsheetApp.Sheet
deleteColumns
- deleteColumns(columnPosition: number, howMany: number): void
deleteRow
- deleteRow(rowPosition: number): SpreadsheetApp.Sheet
deleteRows
- deleteRows(rowPosition: number, howMany: number): void
deleteSheet
- deleteSheet(sheet: SpreadsheetApp.Sheet): void
duplicateActiveSheet
- duplicateActiveSheet(): SpreadsheetApp.Sheet
getActiveCell
- getActiveCell(): SpreadsheetApp.Range
getActiveRange
- getActiveRange(): SpreadsheetApp.Range
getActiveRangeList
- getActiveRangeList(): SpreadsheetApp.RangeList | null
getActiveSheet
- getActiveSheet(): SpreadsheetApp.Sheet
getAs
- getAs(contentType: string): Blob
getBandings
- getBandings(): SpreadsheetApp.Banding[]
getBlob
- getBlob(): Blob
getColumnWidth
- getColumnWidth(columnPosition: number): number
getCurrentCell
- getCurrentCell(): SpreadsheetApp.Range | null
getDataRange
- getDataRange(): SpreadsheetApp.Range
getDataSourceFormulas
- getDataSourceFormulas(): SpreadsheetApp.DataSourceFormula[]
getDataSourcePivotTables
- getDataSourcePivotTables(): SpreadsheetApp.DataSourcePivotTable[]
getDataSourceRefreshSchedules
- getDataSourceRefreshSchedules(): SpreadsheetApp.DataSourceRefreshSchedule[]
getDataSourceSheets
- getDataSourceSheets(): SpreadsheetApp.DataSourceSheet[]
getDataSourceTables
- getDataSourceTables(): SpreadsheetApp.DataSourceTable[]
getDataSources
- getDataSources(): SpreadsheetApp.DataSource[]
getDeveloperMetadata
- getDeveloperMetadata(): SpreadsheetApp.DeveloperMetadata[]
getEditors
- getEditors(): User[]
getFormUrl
- getFormUrl(): string
getFrozenColumns
- getFrozenColumns(): number
getFrozenRows
- getFrozenRows(): number
getId
- getId(): string
getImages
- getImages(): SpreadsheetApp.OverGridImage[]
getIterativeCalculationConvergenceThreshold
- getIterativeCalculationConvergenceThreshold(): number
getLastColumn
- getLastColumn(): number
getLastRow
- getLastRow(): number
getMaxIterativeCalculationCycles
- getMaxIterativeCalculationCycles(): number
getName
- getName(): string
getNamedRanges
- getNamedRanges(): SpreadsheetApp.NamedRange[]
getNumSheets
- getNumSheets(): number
getOwner
- getOwner(): User | null
getPredefinedSpreadsheetThemes
- getPredefinedSpreadsheetThemes(): SpreadsheetApp.SpreadsheetTheme[]
getProtections
- getProtections(type: SpreadsheetApp.ProtectionType): SpreadsheetApp.Protection[]
getRange
- getRange(a1Notation: string): SpreadsheetApp.Range
getRangeByName
- getRangeByName(name: string): SpreadsheetApp.Range | null
getRangeList
- getRangeList(a1Notations: string[]): SpreadsheetApp.RangeList
getRecalculationInterval
- getRecalculationInterval(): SpreadsheetApp.RecalculationInterval
getRowHeight
- getRowHeight(rowPosition: number): number
getSelection
- getSelection(): SpreadsheetApp.Selection
getSheetById
- getSheetById(id: number): SpreadsheetApp.Sheet | null
getSheetByName
- getSheetByName(name: string): SpreadsheetApp.Sheet | null
getSheetId
- getSheetId(): number
getSheetName
- getSheetName(): string
getSheetProtection
- getSheetProtection(): SpreadsheetApp.PageProtection
getSheetValues
- getSheetValues(startRow: number, startColumn: number, numRows: number, numColumns: number): unknown[][]
getSheets
- getSheets(): SpreadsheetApp.Sheet[]
getSpreadsheetLocale
- getSpreadsheetLocale(): string
getSpreadsheetTheme
- getSpreadsheetTheme(): SpreadsheetApp.SpreadsheetTheme | null
getSpreadsheetTimeZone
- getSpreadsheetTimeZone(): string
getUrl
- getUrl(): string
getViewers
- getViewers(): User[]
hideColumn
- hideColumn(column: SpreadsheetApp.Range): void
hideRow
- hideRow(row: SpreadsheetApp.Range): void
insertColumnAfter
- insertColumnAfter(afterPosition: number): SpreadsheetApp.Sheet
insertColumnBefore
- insertColumnBefore(beforePosition: number): SpreadsheetApp.Sheet
insertColumnsAfter
- insertColumnsAfter(afterPosition: number, howMany: number): SpreadsheetApp.Sheet
insertColumnsBefore
- insertColumnsBefore(beforePosition: number, howMany: number): SpreadsheetApp.Sheet
insertDataSourceSheet
- insertDataSourceSheet(spec: SpreadsheetApp.DataSourceSpec): SpreadsheetApp.DataSourceSheet
insertImage
- insertImage(blobSource: BlobSource, column: number, row: number): SpreadsheetApp.OverGridImage
- insertImage(blobSource: BlobSource, column: number, row: number, offsetX: number, offsetY: number): SpreadsheetApp.OverGridImage
- insertImage(url: string, column: number, row: number): SpreadsheetApp.OverGridImage
- insertImage(url: string, column: number, row: number, offsetX: number, offsetY: number): SpreadsheetApp.OverGridImage
insertRowAfter
- insertRowAfter(afterPosition: number): SpreadsheetApp.Sheet
insertRowBefore
- insertRowBefore(beforePosition: number): SpreadsheetApp.Sheet
insertRowsAfter
- insertRowsAfter(afterPosition: number, howMany: number): SpreadsheetApp.Sheet
insertRowsBefore
- insertRowsBefore(beforePosition: number, howMany: number): SpreadsheetApp.Sheet
insertSheet
- insertSheet(): SpreadsheetApp.Sheet
- insertSheet(sheetIndex: number): SpreadsheetApp.Sheet
- insertSheet(sheetIndex: number, options: { template?: SpreadsheetApp.Sheet }): SpreadsheetApp.Sheet
- insertSheet(options: { template?: SpreadsheetApp.Sheet }): SpreadsheetApp.Sheet
- insertSheet(sheetName: string): SpreadsheetApp.Sheet
- insertSheet(sheetName: string, sheetIndex: number): SpreadsheetApp.Sheet
- insertSheet(sheetName: string, sheetIndex: number, options: { template?: SpreadsheetApp.Sheet }): SpreadsheetApp.Sheet
- insertSheet(sheetName: string, options: { template?: SpreadsheetApp.Sheet }): SpreadsheetApp.Sheet
insertSheetWithDataSourceTable
- insertSheetWithDataSourceTable(spec: SpreadsheetApp.DataSourceSpec): SpreadsheetApp.Sheet
isAnonymousView
- isAnonymousView(): boolean
isAnonymousWrite
- isAnonymousWrite(): boolean
isColumnHiddenByUser
- isColumnHiddenByUser(columnPosition: number): boolean
isIterativeCalculationEnabled
- isIterativeCalculationEnabled(): boolean
isRowHiddenByFilter
- isRowHiddenByFilter(rowPosition: number): boolean
isRowHiddenByUser
- isRowHiddenByUser(rowPosition: number): boolean
moveActiveSheet
- moveActiveSheet(pos: number): void
moveChartToObjectSheet
- moveChartToObjectSheet(chart: SpreadsheetApp.EmbeddedChart): SpreadsheetApp.Sheet
refreshAllDataSources
- refreshAllDataSources(): void
removeEditor
- removeEditor(emailAddress: string): SpreadsheetApp.Spreadsheet
- removeEditor(user: User): SpreadsheetApp.Spreadsheet
removeMenu
- removeMenu(name: string): void
removeNamedRange
- removeNamedRange(name: string): void
removeViewer
- removeViewer(emailAddress: string): SpreadsheetApp.Spreadsheet
- removeViewer(user: User): SpreadsheetApp.Spreadsheet
rename
- rename(name: string): void
renameActiveSheet
- renameActiveSheet(newName: string): void
resetSpreadsheetTheme
- resetSpreadsheetTheme(): SpreadsheetApp.SpreadsheetTheme
setActiveRange
- setActiveRange(range: SpreadsheetApp.Range): SpreadsheetApp.Range
setActiveRangeList
- setActiveRangeList(rangeList: SpreadsheetApp.RangeList): SpreadsheetApp.RangeList
setActiveSelection
- setActiveSelection(range: SpreadsheetApp.Range): SpreadsheetApp.Range
- setActiveSelection(a1Notation: string): SpreadsheetApp.Range
setActiveSheet
- setActiveSheet(sheet: SpreadsheetApp.Sheet): SpreadsheetApp.Sheet
- setActiveSheet(sheet: SpreadsheetApp.Sheet, restoreSelection: boolean): SpreadsheetApp.Sheet
setAnonymousAccess
- setAnonymousAccess(anonymousReadAllowed: boolean, anonymousWriteAllowed: boolean): void
setColumnWidth
- setColumnWidth(columnPosition: number, width: number): SpreadsheetApp.Sheet
setCurrentCell
- setCurrentCell(cell: SpreadsheetApp.Range): SpreadsheetApp.Range
setFrozenColumns
- setFrozenColumns(columns: number): void
setFrozenRows
- setFrozenRows(rows: number): void
setIterativeCalculationConvergenceThreshold
- setIterativeCalculationConvergenceThreshold(minThreshold: number): SpreadsheetApp.Spreadsheet
setIterativeCalculationEnabled
- setIterativeCalculationEnabled(isEnabled: boolean): SpreadsheetApp.Spreadsheet
setMaxIterativeCalculationCycles
- setMaxIterativeCalculationCycles(maxIterations: number): SpreadsheetApp.Spreadsheet
setNamedRange
- setNamedRange(name: string, range: SpreadsheetApp.Range): void
setRecalculationInterval
- setRecalculationInterval(recalculationInterval: SpreadsheetApp.RecalculationInterval): SpreadsheetApp.Spreadsheet
setRowHeight
- setRowHeight(rowPosition: number, height: number): SpreadsheetApp.Sheet
setSheetProtection
- setSheetProtection(permissions: SpreadsheetApp.PageProtection): void
setSpreadsheetLocale
- setSpreadsheetLocale(locale: string): void
setSpreadsheetTheme
- setSpreadsheetTheme(theme: SpreadsheetApp.SpreadsheetTheme): SpreadsheetApp.SpreadsheetTheme
setSpreadsheetTimeZone
- setSpreadsheetTimeZone(timeZone: string): void
show
- show(userInterface: unknown): void
sort
- sort(columnPosition: number): SpreadsheetApp.Sheet
- sort(columnPosition: number, ascending: boolean): SpreadsheetApp.Sheet
toast
- toast(message: string): void
- toast(message: string, title: string): void
- toast(message: string, title: string, timeoutSeconds: number): void
unhideColumn
- unhideColumn(column: SpreadsheetApp.Range): void
unhideRow
- unhideRow(row: SpreadsheetApp.Range): void
updateMenu
- updateMenu(name: string, subMenus: unknown[]): void
waitForAllDataExecutionsCompletion
- waitForAllDataExecutionsCompletion(timeoutInSeconds: number): void
Need the whole workflow?
Return to a task guide
Task guides cover setup, permissions, expected results, and troubleshooting as well as object methods.
Browse Google Sheets tasks