繁体   English   中英

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

[英]How do I create & edit a spreadsheet file on google drive using Google Drive APIs only from my Android app?

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

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与Spreadsheet API一起使用”
  • “获取使用Drive SDK创建的电子表格”
  • “Google Drive SDK alternateLink与OAuth2”

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM