Jak utworzyć arkusz kalkulacyjny Google z kontem serwisowym i udostępnić go innym użytkownikom google w Javie?

Mam aplikację, w której z konto usługi Google zbieram wiele informacji o mojej stronie z API Analytics. Moim następnym krokiem jest utworzenie arkusza kalkulacyjnego z kontem usługi i udostępnij dokument kilku użytkownikom.

Sprawdziłem dokumentację na https://developers.google.com/google-apps/spreadsheets / ale nie mogę tam znaleźć nic o kontach serwisowych i dzieleniu się dokumentami.

Więc moje pierwsze pytanie brzmi: możliwe? Jeśli nie, Czy muszę wdrożyć "użyj mojego konta osobistego", jak przedstawiono w dokumentacji? Jeśli tak, czy mógłby mi Pan podać przykład?

Dziękuję!

Author: jakob, 2012-11-05

1 answers

Jest to możliwe, patrz przykład poniżej (przykład wymaga odrobiny poprawek):

Utwórz usługę dysku:

   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("[email protected]")
            .build();

    Drive drive = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).build();

Utwórz arkusz kalkulacyjny:

  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();

Utwórz usługę arkusza kalkulacyjnego:

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("[email protected]")
        .build();
SpreadsheetService service = new SpreadsheetService("MySpreadsheetIntegration-v1");
service.setOAuth2Credentials(credential);

Pobierz arkusz:

SpreadsheetService s = googleConn.getSpreadSheetService();
String spreadsheetURL = "https://spreadsheets.google.com/feeds/spreadsheets/" + file.getId();
SpreadsheetEntry spreadsheet = s.getEntry(new URL(spreadsheetURL), SpreadsheetEntry.class);

Dodaj dane:

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);

Zobacz też to powiązane pytanie

 15
Author: Jasper Duizendstra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:06