我的目标是从 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/