我有一个应用程序,我和谷歌的服务帐户 ,收集大量的信息,我的网站从Analytics(分析)API。 我的下一个步骤是创建与服务帐户电子表格,并与一对夫妇的用户共享文档。
我已签出的文档https://developers.google.com/google-apps/spreadsheets/但我不能对服务帐户和共享的文件有发现任何东西。
所以我的第一个问题是这可能吗? 如果不这样做我需要实现“用我的个人账户”,如文档中的例子? 如果是的话请您为我提供一个例子吗?
谢谢!
我有一个应用程序,我和谷歌的服务帐户 ,收集大量的信息,我的网站从Analytics(分析)API。 我的下一个步骤是创建与服务帐户电子表格,并与一对夫妇的用户共享文档。
我已签出的文档https://developers.google.com/google-apps/spreadsheets/但我不能对服务帐户和共享的文件有发现任何东西。
所以我的第一个问题是这可能吗? 如果不这样做我需要实现“用我的个人账户”,如文档中的例子? 如果是的话请您为我提供一个例子吗?
谢谢!
这是可能的,请参阅下面(的例子确实需要一些调整)的例子:
创建驱动器服务:
GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT).setJsonFactory(JSON_FACTORY)
.setServiceAccountId(confBean.getServiceAccountId()).setServiceAccountScopes("https://www.googleapis.com/auth/drive")
.setServiceAccountPrivateKeyFromP12File(new File("path to the P12File"))
.setServiceAccountUser("user@domain.com")
.build();
Drive drive = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).build();
创建电子表格:
com.google.api.services.drive.model.File file = new com.google.api.services.drive.model.File();
file.setTitle("test");
file.setMimeType("application/vnd.google-apps.spreadsheet");
Insert insert = this.drive.files().insert(file);
file = insert.execute();
创建电子表格服务:
GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT).setJsonFactory(JSON_FACTORY)
.setServiceAccountId(confBean.getServiceAccountId()).setServiceAccountScopes("https://spreadsheets.google.com/feeds")
.setServiceAccountPrivateKeyFromP12File(new File("path to the P12File"))
.setServiceAccountUser("user@domain.com")
.build();
SpreadsheetService service = new SpreadsheetService("MySpreadsheetIntegration-v1");
service.setOAuth2Credentials(credential);
检索表:
SpreadsheetService s = googleConn.getSpreadSheetService();
String spreadsheetURL = "https://spreadsheets.google.com/feeds/spreadsheets/" + file.getId();
SpreadsheetEntry spreadsheet = s.getEntry(new URL(spreadsheetURL), SpreadsheetEntry.class);
添加数据:
WorksheetFeed worksheetFeed = s.getFeed(spreadsheet.getWorksheetFeedUrl(), WorksheetFeed.class);
List<WorksheetEntry> worksheets = worksheetFeed.getEntries();
WorksheetEntry worksheet = worksheets.get(0);
URL cellFeedUrl= worksheet.getCellFeedUrl ();
CellFeed cellFeed= s.getFeed (cellFeedUrl, CellFeed.class);
CellEntry cellEntry= new CellEntry (1, 1, "aa");
cellFeed.insert (cellEntry);
另外,看到这个相关问题