代码之家  ›  专栏  ›  技术社区  ›  Michaël BadZen

创建表记录-Google电子表格API

  •  1
  • Michaël BadZen  · 技术社区  · 15 年前

    我试图通过《开发者指南:Java》学习如何使用Google电子表格API。我的应用程序可以对电子表格服务进行身份验证,检索基于工作表的提要并创建表。下一步是创建一个表记录我正在尝试做的事情。我的问题是在运行应用程序时出现以下错误:

    Service failure
    com.google.gdata.util.InvalidEntryException: Bad Request
    [Line 1, Column 429, element entry] Required extension element  http://schemas.google.com/spreadsheets/2006:header not found.
    

    这是创建表的代码部分:

    //Creating a table record
    String nameValuePairs = "Column A=Rosa";
    RecordEntry entryToChange = new RecordEntry();
    // Split first by the commas between the different fields.
    for (String nameValuePair : nameValuePairs.split(",")) {
        // Then split by the equal sign.
        String[] parts = nameValuePair.split("=", 2);
        String name = parts[0]; // such as "name"
        String value = parts[1]; // such as "Fred"
    
        entryToChange.addField(new Field(null, name, value));         
    }
    try {
        myService.insert(tableFeedUrl, entryToChange);
    } catch (IOException e) {
        System.err.println("I/0 problem");
        e.printStackTrace();
    } catch (ServiceException e) {
        System.err.println("Service failure");
        e.printStackTrace();
    }
    

    tableFeedUrl:

    tableFeedUrl = factory.getTableFeedUrl(entry.getKey());
    

    条目:

    entry = spreadsheets.get(0);
    

    显然问题来自:

    myService.insert(tableFeedUrl, entryToChange);
    

    谢谢你的帮助。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Michaël BadZen    15 年前

    我找到了解决办法。我为那些有同样问题的人回答我自己的问题。

    我使用:

    myService.insert(tableFeedUrl, entryToChange);
    

    http://spreadsheets.google.com/feeds/<key>/tables/
    

    这不是访问表的正确链接( the doc

    但是在 Java developers guide 请注意,我们必须使用:

    myService.insert(recordFeedUrl, entryToChange);
    

    “recordFeedUrl”结果来自:

    URL recordFeedUrl = tableEntry.getRecordFeedUrl();
    

    the doc )

    recordFeedUrl = new URL(table.getId().toString().replace("tables", "records"));
    

    因此URL对应于表:

    https://spreadsheets.google.com/feeds/<key>/records/60
    

    “60”对应表号。

    我希望这会有帮助!