[Python] Trying to append data to google sheets via google sheets API in Python

Discussão em 'Python' iniciado por Stack, Março 24, 2025.

  1. Stack

    Stack Membro Participativo

    My intentions are to put the data extracted from places API into google sheets. I have followed a lot of methods including using gspread library and making a service account and then authorizing it.

    I am currently trying with the service account where I have passed on the credentials, built a service request, and then executed it. However, it is throwing me the following error Invalid JSON payload received. Unknown name

    What am I doing wrong?

    I wanted to append data in google sheets but I am getting an error.

    Code


    from __future__ import print_function

    import requests
    import urllib.parse as urlparse
    from googleapiclient import discovery
    import os.path
    from google.auth.transport.requests import Request
    from google.oauth2.credentials import Credentials
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    from googleapiclient.errors import HttpError


    SCOPES = ['https://www.googleapis.com/auth/spreadsheets',
    'https://www.googleapis.com/auth/drive',
    'https://www.googleapis.com/auth/drive.file']

    # The ID and range of a sample spreadsheet.
    SAMPLE_SPREADSHEET_ID = '1_oKFw7gYmUWDUZxZ6Dgo1uLM9Tf_Bc-4bnq4jiJbQUs'
    SAMPLE_RANGE_NAME = 'Sheet1'
    creds = None

    if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
    creds.refresh(Request())
    else:
    flow = InstalledAppFlow.from_client_secrets_file(
    'credentials.json', SCOPES)
    creds = flow.run_local_server(port=0)
    # Save the credentials for the next run
    with open('token.json', 'w') as token:
    token.write(creds.to_json())

    spreadsheet_id = '***************'
    range_ = 'Sheet1!'
    value_input_option = 'RAW'



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


    value_range_body = ['a']


    request = service.spreadsheets().values().append(spreadsheetId=spreadsheet_id, range=range_,
    valueInputOption=value_input_option, body=value_range_body)
    response = request.execute()

    Error


    <HttpError 400 when requesting https://sheets.googleapis.com/v4/sp.../Sheet1!:append?valueInputOption=RAW&alt=json returned "Invalid JSON payload received. Unknown name "": Root element must be a message.". Details: "[{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'description': 'Invalid JSON payload received. Unknown name "": Root element must be a message.'}]}]">
    ​

    Continue reading...

Compartilhe esta Página