java - 无需身份验证即可解析 Google 电子表格 URL

标签 java google-sheets gdata-api

我的目标是从 Google 电子表格 URL 检索 CellFeeds 无需身份验证。 我尝试使用以下电子表格 URL(发布到网络): https://docs.google.com/spreadsheet/ccc?key=0AvNWoDP9TASIdERsbFRnNXdsN2x4MXMxUmlyY0g3VUE&usp=sharing

此 URL 存储在变量“spreadsheetName”中。 第一次尝试是将整个 URL 作为 Service.getFeed() 的参数。
url = new URL(电子表格名称); WorksheetFeed feed = service.getFeed(url, WorksheetFeed.class);

但后来我遇到了以下异常:

com.google.gdata.util.RedirectRequiredException: Found
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved

第二次尝试是使用来自原始 URL 的 key 构建 URL,使用 FeedURLFactory:

String key = spreadsheetName.split("key=")[1].substring(0, 44);
url = FeedURLFactory.getDefault().getCellFeedUrl(key,
                    worksheetName, "public", "basic");
WorksheetFeed feed = service.getFeed(url, WorksheetFeed.class);

...我得到了下一个异常:

com.google.gdata.util.InvalidEntryException: Bad Request
Invalid query parameter value for grid-id.

您是否知道我做错了什么,或者是否有人在未经身份验证的情况下成功地从电子表格 URL 检索数据?提前致谢!

最佳答案

你有两个问题。我不确定第二个问题,但第一个是您尝试使用没有正确 key 的 cellFeedURL,您只是在使用 worksheetName,这可能是不正确。如果你这样做:

public static void main(String... args) throws MalformedURLException, ServiceException, IOException {
    SpreadsheetService service = new SpreadsheetService("Test");
    FeedURLFactory fact = FeedURLFactory.getDefault();

    String key = "0AvNWoDP9TASIdERsbFRnNXdsN2x4MXMxUmlyY0g3VUE";
    URL spreadSheetUrl = fact.getWorksheetFeedUrl(key, "public", "basic");
    WorksheetFeed feed = service.getFeed(spreadSheetUrl,
            WorksheetFeed.class);

    WorksheetEntry entry = feed.getEntries().get(0);
    URL cellFeedURL = entry.getCellFeedUrl();
    CellFeed cellFeed = service.getFeed(cellFeedURL, CellFeed.class);
}

您将获得正确的 CellFeed。但是,您的第二个问题是,如果您这样做,CellFeed 中的所有 CellEntry.getCell() 都会填​​充为 null。我不确定为什么,或者是否可以在以 public/basic 登录时解决。

关于java - 无需身份验证即可解析 Google 电子表格 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18698531/

相关文章:

java - 使用双结构方法的双端优先级队列

google-apps-script - Google 表格 - 当文件名相同时,脚本为 “Replace” 而不是 “Create”

google-api - 如何重置谷歌表格,以便将表单收集的数据放入第一个空闲单元格

php - 如何在没有 Zend Gdata 库的情况下使用 PHP 将数据保存在非公开的谷歌电子表格中?

java - Spring 集成 IP - 通过套接字在消息末尾省略回车符 (\r\n)

java - 删除 '|' ,数字并替换为字符串中的空字符-Java

java - 使用json库进行json转换

google-sheets - IF 语句中带有 AND 的 ARRAYFORMULA

python - 根据用户输入获取对象的物理 map 位置

java - 如何登录GAE上部署的GWT应用程序中的gdata?