完成快速入门教程后使用google sheet api

时间:2017-07-20 10:35:24

标签: android google-sheets oauth-2.0 google-sheets-api

我对Android应用程序开发很陌生,所以请原谅我的天真。

我目前正在尝试开发一款可以从Google电子表格中提取数据并将数据写入其中的应用。

我已经完成了快速入门教程,所以我的代码就像现在一样。一切正常。

我的问题是我需要能够从我自己的电子表格中读取并且我并不真正理解所使用的代码,所以我很难知道从哪里开始。

我看了this尝试以更少的步骤实施授权,我认为这可能会让代码更容易理解 - 但是我的知识缺乏意​​味着我不知道这是如何适合所有我目前拥有的方法。

我查看了开发人员文档并尝试替换快速入门中的代码,该代码使用以下方法从应用程序中检索数据:

ValueRange result = service.spreadsheets().values().get(spreadsheetId, range).execute();
int numRows = result.getValues() != null ? result.getValues().size() : 0;
System.out.printf("%d rows retrieved.", numRows);

但是这又与我已经拥有的代码不同,因为getDataFromApi()方法需要一个return语句。我试过将spreadsheetId更改为我自己的电子表格,并将范围值更改为我需要的单元格,

/**
         * Fetch a list of names and majors of students in a sample spreadsheet:
         * https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
         * @return List of names and majors
         * @throws IOException
         */
        private List<String> getDataFromApi() throws IOException {
            String spreadsheetId = "1-hL78Jm9-HijPx9UHthFxcXatkIhA2FR-AQ1lrCUbEg";
            String range = "Go Mix 12 0506!B6: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("Name, Major");
                for (List row : values) {
                    results.add(row.get(1) + ", " + row.get(3));
                }
            }
            return results;
        }

但我显然错了,因为我收到了这个错误: 索引3无效,大小为3

我还跟踪了this tutorial上的视频15,但它绕过了任何授权的需要,所以没有帮助。

基本上我已经碰壁了,需要有人用简单的语言向我解释如何使用快速入门教程中的代码来处理我自己的电子表格并修复该错误!或者(比我自己更好)解释如何从头开始自己做。注意,电子表格不能公开,所以我需要授权。

我希望一切都有道理!

1 个答案:

答案 0 :(得分:0)

您要求检索三列数据(B到D),然后尝试读取第四列(rows.get(3))。在Java(以及大多数编程语言)中,列表和数组是基于0的。因此,如果您想要第一个项目,请致电list.get(0),如果您想要第三个项目,请致电list.get(2)。这是明显的,因为错误消息告诉您索引3无效,因为列表大小为3 - 您试图读取超出列表末尾的内容。