56

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();
peterh
  • 1
  • 15
  • 76
  • 99
Hemant Yadav
  • 561
  • 1
  • 4
  • 4

7 Answers7

146

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

ritesh.garg
  • 3,365
  • 1
  • 14
  • 13
  • i want to access a particular spreadsheet how can i do it ? ValueRange response = service.spreadsheets().values() .get(spreadsheetId, range) .execute(); Currently i'm using this to get data – Hemant Yadav Jun 21 '16 at 04:21
  • 26
    In the example it seems like 'Class Data' was the name of the worksheet. If there are no sheets with that name, then it throws the error. @HemantYadav when you say spreadsheet, do you mean worksheet? If it's spreadsheet then you provide the spreadsheetId. If it's worksheet, you provide it in the range like "NameOfWorksheet!A2:A4" where NameOfWorksheet is the name of the worksheet including spaces. By omitting the NameOfWorksheet and exclamation mark, it goes to the first worksheet. – zeta Aug 05 '16 at 20:43
  • Can you please answer for my question --> http://stackoverflow.com/questions/39096279/inserting-datas-into-google-sheets-api-using-javascript @ritesh.garg – Saravana Kumar Aug 23 '16 at 10:28
  • Thanks a ton bro. And the explanation by @zeta is puts a lot unknown things into perspective. – Mohit Arvind khakharia Oct 16 '16 at 19:13
22

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";

Boom3k
  • 1,901
  • 1
  • 11
  • 11
10

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.

Tan Phan
  • 101
  • 1
  • 2
3

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.

slifszyc
  • 136
  • 10
3

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

CodingYourLife
  • 5,662
  • 5
  • 46
  • 65
0

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.

jarora
  • 4,876
  • 2
  • 33
  • 44
0

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.

maya
  • 1