【问题标题】:Downloading Google Sheets spreadsheets from Google Drive on Android从 Android 上的 Google Drive 下载 Google Sheets 电子表格
【发布时间】:2011-02-18 07:11:45
【问题描述】:

我正在开发一个 Android 应用程序,该应用程序使用 gdata-java-client 下载仅用于显示的文档。到目前为止,我有一个使用服务进行身份验证并显示用户文档列表的应用程序。当用户选择一个文档时,会对文档本身进行另一个查询。对 txt、html、rtf 和 doc 文件的请求运行良好,但是当我请求 .csv 或 .xsl 格式的电子表格时,结果出乎意料。

我正在使用 HTTPResponse 对象来存储 HTTPRequest 的结果。当我请求 .csv 或 .xsl 格式的文档时,HTTPResponse.parseAsString() 方法会生成一个完整的 html 页面,该页面似乎是 Google Docs 主页。听起来很奇怪,但结果是登录页面的实际 html。 HTTPResponse.getStatusMessage 返回 200。

似乎我在这里遗漏了一些简单的东西。 HTTPResponse 的另一个属性是否包含 .csv 数据?

我很确定我正在使用正确的 uri 来下载电子表格,因为它在我通过浏览器下载时有效。无论如何,这里是一个示例 uri:

https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=0AsE_6_YIr797dHBTUWlHMUFXeTV4ZzJlUGxWRnJXanc&exportFormat=csv

提前感谢您的帮助:)

【问题讨论】:

  • 如果您不介意,能否添加“google-api-java-client”标签?
  • @Jason Hall 我很好奇,你为什么要编辑这么多原始问题?
  • AFAIK 我所做的唯一更改是删除“gdata-java-client”并添加“google-api-java-client”——参见stackoverflow.com/posts/2813470/revisions
  • @Jason Hall 我的错!看起来是我……:\
  • 对标题和几个标签进行了现代化改造;还添加了一个更新答案,因为现在有新的做事方式

标签: java android google-api-java-client google-drive-android-api google-sheets-api


【解决方案1】:

我对 Documents List API 不够熟悉,无法知道,但从您的描述看来,您可能遇到了 Documents List API 中的错误,在我看来这是一个需要修复的重要问题。

请在 Documents List API 论坛上报告您的问题,以增加知识渊博的人能够调查此问题的机会:

http://www.google.com/support/forum/p/apps-apis/label?lid=5c316c702e844c99&hl=en

【讨论】:

    【解决方案2】:

    我没有看到您的代码,但最肯定的问题是您使用的是 ClientLogin,并且使用“writely”服务对文档列表 API 进行了身份验证。但是,由于导出电子表格将访问电子表格.google.com,因此您需要使用 ClientLogin 对“明智”服务进行身份验证。在 Java 中,这意味着使用电子表格 Java 客户端库,此处记录了该库: http://code.google.com/apis/documents/docs/3.0/developers_guide_java.html#DownloadingSpreadsheets

    请注意顶部标记为“重要”的注释,链接如下: http://code.google.com/apis/documents/docs/3.0/developers_guide_java.html#DownloadingSpreadsheetsClientLogin

    在那个链接中,详细介绍了使用 SpreadsheetClient 实例。

    祝你好运:)

    【讨论】:

      【解决方案3】:

      现在是 2017 年,现在有一种全新的做事方式。 GData、文档列表 API、ClientLogin 和 Drive 下载 URL 等 GData API 现在都已过时。取而代之的是 Drive API、Sheets API,以及与来自 Android 应用程序的 Google 技术集成的更原生方式:Google APIs Client Library for Android。如果您正在做服务器端,还有一个Google APIs Client Library for Java

      如果您想在电子表格上执行面向文档的操作,您可以使用Google Sheets API 并使用上面的客户端库执行此操作。现在举一些例子......这里是 Android quickstart code sample 以及更通用的 Java quickstart code sample 用于 Sheets API。传递JavaDocs reference for the Sheets API 也无妨。最新的 Sheets API 提供了旧版本中不具备的功能,即让开发人员能够以编程方式访问工作表,就像您使用用户界面一样(创建冻结行、执行单元格格式设置、调整行/列大小、添加数据透视表、创建图表等)

      但是,要执行 文件 级别的访问,例如在 OP 的问题中,您可以使用 Google Drive API。甚至还有一个Google Drive API for Android,包括一个docs page specifically on retrieving document contents。如果你是这个库的新手,这里是 Drive API Android quickstart sample appother code samples 让你开始。这里也是Drive API for Android class reference docs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-16
        • 2012-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-24
        相关资源
        最近更新 更多