Google spreadsheet API, 400 error bad request : unable to parse range

JavaGoogle SheetsGoogle Api-Client

Java Problem Overview


I am trying to access Google spreadsheets using a spreadsheet example. When I run the example code it worked fine. I just change the SpreadsheetId and range. It started giving me:

Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Unable to parse range: Class Data!A2:A4",
    "reason" : "badRequest"
  } ],
  "message" : "Unable to parse range: Class Data!A2:A4",
  "status" : "INVALID_ARGUMENT"
}
	at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
	at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
	at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
	at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
	at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
	at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
	at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
	at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
	at poc.mainPOC.main(mainPOC.java:157)

Below is the code:

  String spreadsheetId = "my spread sheet ID";
    String range = "Class Data!A2:A4";
    ValueRange response = service.spreadsheets().values()
        .get(spreadsheetId, range)
        .execute();

Java Solutions


Solution 1 - Java

Try replacing Class Data!A2:A4 with A2:A4

Solution 2 - Java

If you look at the sheet itself you will notice that the Worksheet is titled "Class Data". So just put the name of your sheet where is says "Class Data". Example: String range = "SheetName!A1:C";

Solution 3 - Java

String range = "Class Data!A2:A4";

The Class Data is your worksheet's name, FYI: the name on the tab at the bottom, the default one is "Sheet1". Replace Class Data with the one you want to work with.

Solution 4 - Java

I was trying to add some data to a sheet named Emmett that did not existed yet and was receiving this error:

Error: Unable to parse range: Emmet!A2:C12

I had to manually create the sheet named Emmett in the spreadsheet and then it worked like a charm.

Solution 5 - Java

I ran into this error when I had a typo in the name of the tab. In your case "Class Data" didn't match the name of the tab

Solution 6 - Java

In my case there was an extra space in the google sheet while I was trimming the sheet name at my end. Once I removed the trimming logic, everything worked fine.

Solution 7 - Java

Something that I learned was that If the column name doesn't exist yet, this command won't be able to find it. You need to make sure the column you're writing to already exists -- I did this manually from the google sheet.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHemant YadavView Question on Stackoverflow
Solution 1 - Javaritesh.gargView Answer on Stackoverflow
Solution 2 - JavaBoom3kView Answer on Stackoverflow
Solution 3 - JavaTan PhanView Answer on Stackoverflow
Solution 4 - JavaslifszycView Answer on Stackoverflow
Solution 5 - JavaCodingYourLifeView Answer on Stackoverflow
Solution 6 - JavajaroraView Answer on Stackoverflow
Solution 7 - JavamayaView Answer on Stackoverflow