2017-07-20 123 views
0

我对Android应用开发很新颖,所以请原谅我的天真。完成快速入门教程后使用google表api

我目前正在开发一个应用程序,可以从谷歌电子表格中提取数据并向其中写入数据。

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

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

我已经看过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()方法需要返回语句。我试着只是改变了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,但它绕过了任何授权的需要,所以没有帮助。

基本上我碰到了一堵砖墙,需要有人以简单的方式向我解释如何使用快速入门教程中的代码来处理我自己的电子表格并修复该错误!或者(更喜欢我自己)解释如何从头开始自己做。注意,电子表格不能公开,因此我需要授权。

我希望一切都有道理!

回答

0

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