我的应用程序包含一个班次列表。我想将班次列表保存到电子表格文件中,并保存到谷歌驱动器帐户中。由于Google Spreadsheets API使用已弃用的 Google Doc API来创建电子表格文件;如何在谷歌驱动器上创建和编辑这样的文件,全部来自我的 android 应用程序中的 java 代码,并且没有任何用户交互(授权除外),只使用谷歌驱动器 API?
问问题
6486 次
2 回答
5
Google Docs API 已弃用,但 Sheets API(当前:v3)仍然存在。
要实现原始 Sheets+Docs 组合的等效功能,您应该使用 Drive API 执行文件操作,例如搜索/移动/创建/删除。
除了 Drive API 的范围之外,将以下范围添加到您的授权中:
https://spreadsheets.google.com/feeds
如果您使用GData 客户端库和Google OAuth 客户端库,则在 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);
如果您收到“令牌无效 - AuthSub 令牌范围错误”的错误,将 accessToken 的查询字符串附加到 feedUrl 可能会有所帮助。
feedUrl = feedUrl + "?access_token=" + credential.getAccessToken();
仅供参考,我在写这个答案时提到的问答列表。
- “是否可以将 Google Drive API 与电子表格 API 一起使用”
- “获取使用 Drive SDK 创建的电子表格”
- “带有 OAuth2 的 Google Drive SDK 备用链接”
于 2014-12-15T08:49:08.453 回答
4
您应该看看Google Spreadsheet API 3.0。它支持 JAVA,您可以在 Android 应用程序中使用它。
于 2013-06-05T16:44:42.893 回答