Google sheet api integration geetin error like Int

2019-06-12 22:21发布

问题:

i want to integrate google sheet api in my application so i use following link https://developers.google.com/sheets/quickstart/android and i follow all steps for that and i want to call spreadsheet below link

https://docs.google.com/spreadsheets/d/17Rdom3QF21uTbp89ZTXqjL8CmUGyoCvxJ5Hnc7wVqjk/edit#gid=0

I change my code as per below function

private List<String> getDataFromApi() throws IOException {
        String spreadsheetId = "17Rdom3QF21uTbp89ZTXqjL8CmUGyoCvxJ5Hnc7wVqjk";
        String range = "Sheet1!B:D";
        List<String> results = new ArrayList<String>();
        ValueRange response = this.mService.spreadsheets().values()
                .get(spreadsheetId, range)
                .execute();
        List<List<Object>> values = response.getValues();
        if (values != null) {
            results.add("Category2, Category4");
            for (List row : values) {
                results.add(row.get(1) + ", " + row.get(3));
            }
        }
        return results;
    }

When i run above code i get output in textview like Invalid index 3 , size is 3 any idea how can i solve this ? your all suggestions are appreciable

LOGCAT

java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1280)
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:219)
at java.util.concurrent.FutureTask.get(FutureTask.java:82)
at android.os.AsyncTask$3.done(AsyncTask.java:295)
at java.util.concurrent.FutureTask$Sync.innerCancel(FutureTask.java:293)
at java.util.concurrent.FutureTask.cancel(FutureTask.java:75)
at android.os.AsyncTask.cancel(AsyncTask.java:467)
at pkg.android.srtpl.googlespreadsheetdemo.NewMain$MakeRequestTask.doInBackground(NewMain.java:346)
at pkg.android.srtpl.googlespreadsheetdemo.NewMain$MakeRequestTask.doInBackground(NewMain.java:323)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)

回答1:

Happened to me too, really weird. Not the best but it worked for me

for(int i=0;i<values.size();i++){
    List row = values.get(i);
    for(int j=0;j<row.size();j++){
        results.add(row.get(j)+",");
     }
 }


回答2:

I had the same issue and solved it by ensuring there was data in each cell.