Get list of sheets and latest sheet in google spreadsheet api v4 in Python

google sheets api get list of spreadsheets
google sheets api python
google sheets api duplicate sheet
google sheets api rename sheet
google sheets api example
google sheets api range
google sheets api key

I am trying to read and write values of different sheets in python 3 following the google official documentation. Though I am able to read values from certain sheets using range property in rangeName = 'Class Data!A2:E' in the code block mentioned below:

discoveryUrl = ('$discovery/rest?'
    service ='sheets', 'v4', http=http,

    spreadsheetId = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
    rangeName = 'Class Data!A2:E'
    result = service.spreadsheets().values().get(
        spreadsheetId=spreadsheetId, range=rangeName).execute()
    values = result.get('values', [])

And I am trying to write values using the sample code from here:

    'updateCells': {
        'start': {'sheetId': 0, 'rowIndex': 0, 'columnIndex': 0},
        'rows': [
                'values': [
                        'userEnteredValue': {'numberValue': 1},
                        'userEnteredFormat': {'backgroundColor': {'red': 1}}
                    }, {
                        'userEnteredValue': {'numberValue': 2},
                        'userEnteredFormat': {'backgroundColor': {'blue': 1}}
                    }, {
                        'userEnteredValue': {'numberValue': 3},
                        'userEnteredFormat': {'backgroundColor': {'green': 1}}
        'fields': 'userEnteredValue,userEnteredFormat.backgroundColor'
batchUpdateRequest = {'requests': requests}


The problem I am facing is that I am not able to retain latest sheet name or id from official documentation and as latest api revision is making random gid(we may not know what would be the sheet gid would be). Is there any way to refer list of sheets or spreadsheet latest revised sheet name or id using google sheet api v4?

You can get a list of sheets by using the "get" method on spreadsheets:

sheet_metadata = service.spreadsheets().get(spreadsheetId=spreadsheet_id).execute()
sheets = sheet_metadata.get('sheets', '')
title = sheets[0].get("properties", {}).get("title", "Sheet1")
sheet_id = sheets[0].get("properties", {}).get("sheetId", 0)

Sheet Operations | Sheets API, Ranges are specified using A1 notation. HTTP request. GET https://sheets.​{spreadsheetId}. The URL uses  The filter on this sheet, if any. charts[] object ( EmbeddedChart ) The specifications of every chart on this sheet. bandedRanges[] object ( BandedRange ) The banded (alternating colors) ranges on this sheet. developerMetadata[] object ( DeveloperMetadata )

Nobody has asked about this on SO for the PHP library yet, but I just wanted to add this answer here as this is the first Google result for related questions.


$sheets = array();

// ... load library and set up client ...
$service = new Google_Service_Sheets($client);

$response = $service->spreadsheets->get($spreadsheetId);
foreach($response->getSheets() as $s) {
    $sheets[] = $s['properties']['title'];

return $sheets;


Method: spreadsheets.get | Sheets API, How do I find the sheet ID in Google Sheets? NamedRanges [get, set] The named ranges defined in a spreadsheet. More virtual SpreadsheetProperties Properties [get, set] Overall properties of a spreadsheet. More virtual System.Collections.Generic.IList< Sheet > Sheets [get, set] The sheets that are part of a spreadsheet. More virtual string SpreadsheetId [get, set] The ID of the spreadsheet.

For those looking for a nodejs solution:

const { google } = require("googleapis")

// Assuming auth has already been generated
const getSheets = async (auth, spreadsheetId) => {
  const sheets = google.sheets({version: "v4", auth});
  const result = (await sheets.spreadsheets.get({ 
  })) => {
  return result

This is what gets returned from await sheets.spreadsheets.get({ spreadsheetId })

Then, using this type, I map over the result of data.sheets and return all of titles.

It looks like it returns the titles in order of how they are on the actual google sheet.

If you're trying to generate the auth token, then look here

Connecting to Google Sheets | How-To, How do I link to a specific tab in Google Sheets? The spreadsheet ID can be discovered from the spreadsheet URL; the sheet ID can be obtained from the spreadsheet.get method. Add a sheet. The following spreadsheets.batchUpdate request adds a sheet to a spreadsheet, while also setting the title, size, and tab color.

For python.

service = build('sheets', 'v4', credentials=creds)

sheet_metadata = service.spreadsheets().get(spreadsheetId=SHEET_ID).execute()

properties = sheet_metadata.get('sheets')
for  item in properties:

   if item.get("properties").get('title') == 'SHEET_TITILE':
       sheet_id = (item.get("properties").get('sheetId'))

print (sheet_id)

Google Drive, gspread is a Python API for Google Sheets. Google Sheets API v4. gspread gc = gspread.service_account() # Open a sheet from a spreadsheet in Getting All Values From a Worksheet as a List of Lists · Getting All Values The best way to get an answer to a question is to ask on Stack Overflow with Versions: latest. In order to use the new API, you need to get the Google APIs Client Library for Python (it's as easy as pip install -U google-api-python-client [or pip3 for Python 3]) and use the latest Sheets API v4+, which is much more powerful & flexible than older API releases. Here's one code sample from the official docs to help get you kickstarted

This is a C# method that returns the sheet id value of a specified sheet number and Spreadsheet id.

This was made with the Google Sheets API v4.

    private static Int32 GetSheetIdFromSheetNum(string sSpreadsheetId, Int32 iSheetNum, SheetsService gsService, ref string sTitle)
    {   //Get the Sheet Id for the specified sheet number and Spreadsheet id.

        Int32 iSheetId = -1;
        Int32 iLoop = -1;

        //Google.Apis.Sheets.v4.Data.Sheet gsSheet;
        Google.Apis.Sheets.v4.Data.Spreadsheet gsSpreadsheet;

            sTitle = string.Empty;
            gsSpreadsheet = gsService.Spreadsheets.Get(sSpreadsheetId).Execute();

            foreach (Sheet gsSheet in gsSpreadsheet.Sheets)
                iLoop += 1;
                if (iLoop != iSheetNum)

                iSheetId = (gsSheet.Properties.SheetId).GetValueOrDefault(-1);      
                sTitle = gsSheet.Properties.Title;

        catch (Exception ex)
            // Do error processing here.

        return iSheetId;

    } //GetSheetIdFromSheetNum

Accessing Google Spreadsheet Data using Python, Latest PyPI Version License Supported Python Versions Format Readthedocs. Travis Codecov. gsheets is a small wrapper around the Google Sheets API (v4) to  One of the features you get with the latest API is the ability to format content in Google Sheets. The sample app for this video demonstrates how to set frozen rows, bold cells, format floating-point values as currency, and implement cell data validation. (8:31) Generating slides from spreadsheet data. For developers already familiar with the

How To Link Data to Another Tab in Google Sheets, Google Sheets Python API - Latest commit by burnash 4 days ago with authorizing credentials Opened by bradboldenow 5 months ago #271 navigate to worksheet by key and gid Opened View all issues  Click this button to create a new Cloud Platform project and automatically enable the Google Sheets API: Enable the Google Sheets API. In resulting dialog click DOWNLOAD CLIENT CONFIGURATION and save the file credentials.json to your working directory. Step 2: Install the Google Client Library. Run the following command to install the library using pip: pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

gspread, While not as full featured as the official Google Sheets API, EZSheets makes common Figure 14-4 shows a spreadsheet titled “Education Data” containing three sheets titled You can list the spreadsheets in your Google account by calling the a Google Sheets spreadsheet in this format, you will get the first sheet only. My goal is to publish a Google Sheet document to the web and get the link using Google Sheets API. I managed to publish it using this advice and now it says "published" in File -> Publish to the web tab. However, the link given on this tab is different from the original file id, and I don'k know how to get it with API.

gsheets · PyPI, As for python specific resources the following will be helpful: https://developers.​ Google Spreadsheets Python API. Manage your spreadsheets with gspread in Python. Features: Google Sheets API v4. Open a spreadsheet by its title or url. Extract range, entire row or column values. Python 3 support.

  • hi! Can you tell me about something equivalent to get the sheet metadata in javascript?
  • source? Looking for node.js equivalent