我如何创建&仅在我的Android应用中使用Google Drive API在Google云端硬盘上编辑电子表格文件?

时间:2013-06-04 20:47:14

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

我的申请包含一系列班次。我想将转换列表保存到google驱动器帐户的电子表格文件中。由于 Google Spreadsheets API 正在使用已弃用的Google Doc API 来创建电子表格文件;我如何在谷歌硬盘上创建和编辑这样的文件,全部来自我的Android应用程序内的java代码,没有任何用户交互(授权除外),只使用 Google Drive API

2 个答案:

答案 0 :(得分:5)

Google Docs API已被弃用,但Sheets API(当前版本:v3)仍然存在。

要实现原始Sheets + Docs组合的等效功能, 您应该使用Drive API执行文件操作,例如搜索/移动/创建/删除。

除了Drive API的范围之外,还要在您的授权中添加以下范围:

https://spreadsheets.google.com/feeds

如果您正在使用GData client libraryGoogle OAuth client library,则在OAuth 2.0授权后设置这两项服务非常容易。这是一个例子:

// Acquire clientId, clientSecret and refreshToken
...

// Create shared credential
GoogleCredential credential = new GoogleCredential.Builder()
            .setClientSecrets(clientId, clientSecret)
            .setJsonFactory(jsonFactory)
            .setTransport(transport)
            .build().setRefreshToken(refreshToken);

// Setup both servives
Drive driveService = new Drive.Builder(transport, jsonFactory, credential).build();
SpreadsheetService sheetService = new SpreadsheetService(...);
sheetService.setOAuth2Credentials(credential);  // only provided in newer releases
sheetService.useSsl();

两个API中的资源ID都相同,因此您可以使用Drive API方法搜索某个文件的ID,并使用Sheets API方法访问该文件中的工作表。这是一个例子:

File file = driveService.files().get().setFields(...).execute();
String feedUrl = "https://spreadsheets.google.com/feeds/worksheets/" 
           + file.getId + "/private/full";
WorksheetFeed feed = sheetService.getFeed(feedUrl, WorksheetFeed.class);

如果您收到错误#34;令牌无效 - AuthSub令牌的范围错误",将accessToken的查询字符串附加到feedUrl可能会有所帮助。

feedUrl = feedUrl + "?access_token=" + credential.getAccessToken();

仅供参考,我在撰写此答案时提到了Q& As的列表。

  • "是否可以将Google云端硬盘API与电子表格API一起使用"
  • "获取使用Drive SDK"
  • 创建的电子表格
  • " Google Drive SDK alternateLink与OAuth2"

答案 1 :(得分:4)

你应该看看Google Spreadsheet API 3.0。它支持您可以在Android应用程序中使用的JAVA。