I've searched a lot of websites about how to do that using only the spreadsheet key, but with no success. I can retrieve it, get all the data I want, but I can't append a new row to it.
I've already published my spreadsheet to the web and made it public but I keep getting " com.google.gdata.util.ServiceException: Method Not Allowed".
That's how I'm trying to do it:
SpreadsheetService service =
new SpreadsheetService("MySpreadsheetIntegration-v1");
try {
URL url = FeedURLFactory.getDefault().getWorksheetFeedUrl(SpreadsheetRequest.KEY, "public", "full"); //KEY = "1cenwTRlrGMzMTufkK27IIgAHvEGwVKR9Yr59Qako3u0";
WorksheetFeed worksheetFeed = service.getFeed(url, WorksheetFeed.class);
List<WorksheetEntry> worksheets = worksheetFeed.getEntries();
WorksheetEntry worksheet = worksheets.get(0);
URL listFeedUrl = worksheet.getListFeedUrl();
ListFeed listFeed = service.getFeed(listFeedUrl, ListFeed.class);
List<ListEntry> list = listFeed.getEntries();
//Checking all the entries, works like a charm
for (ListEntry row : list) {
Log.i("INSERT",row.getTitle().getPlainText() + "\t"
+ row.getPlainTextContent());
}
ListEntry row = new ListEntry();
row.getCustomElements().setValueLocal("id", "21");
row.getCustomElements().setValueLocal("type", si.getType().toString());
row.getCustomElements().setValueLocal("longitude", String.valueOf(si.getLongitude()));
row.getCustomElements().setValueLocal("latitude", String.valueOf(si.getLatitude()));
row.getCustomElements().setValueLocal("last_maint", String.valueOf(si.getLast()));
row.getCustomElements().setValueLocal("inst_date", String.valueOf(si.getInst()));
row = service.insert(listFeedUrl, row); //Exception is thrown here
return true;
}
Answer is No. OAuth token is like a key which allows Google to identify who is reading or who is writing to the spreadsheet and it won't allow if you don't have the correct access level. Even when you open Google spreadsheet with your browser the browser will generate an OAuth token from the Google identity provider and use that token to check whether your access level.
Update Here if you see how my browser handle the request done to the google spread sheet it will first redirect to the identity provider. Most of the time you need to simulate that in order to work.
There is no way you can access or manipulate Google Drive API without OAUTH2.0. Additionally, Google Drive API wouldn't even work on private networks.
Fortunately, OAUTH2.0 is mandatory!!
This is the OAUTH2.0 Java code for spreadsheet----->
OAUTH2.0-Java
Android oauth2.0