8

Ich habe mehrere StackOverflow-Fragen gefunden, die sich mit dem Erstellen oder Bearbeiten von Google Doc-Tabellen unter Verwendung der Google Spreadsheets API oder älteren APIs beschäftigen. Diese Spreadsheets-API scheint jedoch Teil der "gdata" -Bibliothek zu sein, die meines Erachtens veraltet ist.Wie programmgesteuert wird eine Google Docs-Tabelle mit Inhalten erstellt?

Newer StackOverflow answers zeigen, wie Sie eine leere Tabelle mithilfe der Drive API erstellen, die aktueller scheint. Wenn Sie sich jedoch die Dokumentation und Beispiele für diese API ansehen, können Sie nur neue leere Dateien mit dem MIME-Typ erstellen. Ich habe keine Funktionalität zum Erstellen einer Tabelle mit tatsächlichem Inhalt (d. H. Zeilen, Spalten, Arbeitsblätter usw.) gefunden.

Wie wird eine neue Google Doc-Tabelle erstellt und mit Inhalten gefüllt? Verfügt die Drive API über Funktionen, die ich nicht verstehe? Ist die "gdata" -Bibliothek (oder zumindest der Spreadsheets-API-Teil) nicht vollständig veraltet? Gibt es einen dritten Ansatz, den ich insgesamt vermisst habe? Ich arbeite mit Java-Code, soweit das wichtig ist, obwohl ich sicher bin, dass jede Python-API ein Java-Äquivalent haben würde.

Antwort

2

Antwort in Form Kugel ...

  • Es ist nur die alte docslist API, die veraltet ist. Die Tabellenkalkulations-API ist noch am Leben und treten, da es keinen Ersatz gibt
  • Die gdata libs werden möglicherweise nicht mehr unterstützt, aber Sie werden wahrscheinlich besser mit der Tabellenkalkulations-API direkt bedient werden
  • Die Drive API betrifft nur Operationen bei Die gesamte Dateiebene
  • Sie können eine ausgefüllte Tabelle mithilfe der Drive API erstellen, indem Sie eine Datei in einem Format hochladen, das in eine Google-Tabelle konvertiert werden kann, z. MS Excel
  • Beachten Sie, dass die Tabelle API (und möglicherweise die Drive API) noch nicht über das neue Unterstützung (Ende 2013) Tabellenformat
+1

1) Gdata wird weiterhin unterstützt. 2) Um die ursprüngliche Frage zu beantworten, verwenden Sie den Tabellenzellen-Feed, um Daten zu schreiben. Wenn es eine Tabelle ist, verwenden Sie den Zellen-Feed, um den Header zu schreiben, dann werden die Zeilen für Zeilen gefüttert. Mit Drive api können Sie auch eine Kopie einer Tabelle erstellen, sodass Sie mit einer Vorlage beginnen. –

+1

Danke. Erstaunlicherweise bietet die Google Drive-API (https://developers.google.com/api-client-library/java/apis/drive/v2) ein paar "Quickstart" -Projektskelette, die auf Maven basieren Die Spreadsheets-API ist in Maven Central oder einem anderen öffentlichen Repo nicht verfügbar. Es scheint überhaupt nicht Mavenized zu sein. Ich habe in meiner Karriere nie an einer frustrierenderen Plattform gearbeitet. Google bietet viele sehr nette Tools, aber es gibt keine kohärente Struktur oder Richtung zu irgendetwas davon. Es fühlt sich eher akademisch an als Unternehmen ... –

+2

@StevePerkins Willkommen bei der Entwicklung mit Drive :-) Ein bisschen Geschichte hilft. Google erkannte, dass ihre APIs unordentlich waren, und startete 2012 eine neue API-Infrastruktur, die auf OAuth/Cloud Console/REST/JSON usw. basiert. Da jede alte API durch eine neue Entsprechung ersetzt wurde, war sie veraltet. Einige APIs, z. B. Tabellenkalkulation, wurden noch nicht ersetzt. Was Anfänger verwirrte (wir waren alle dort), ist, dass die alte Dokumentation (Google und Drittanbieter) nicht zurückgezogen wurde und aufgrund ihres Alters häufig in den Suchergebnissen hoch bewertet wird. – pinoyyid

0

Google-Apps-Skript wird auch Tabellen erstellen und lassen Sie Daten hinzufügen . Siehe https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app Es kann die GData api tut mehr als, zB Google-Apps-Skript festlegen kann Zell Schriften/Farben usw.

Aber hängt von Ihren Bedürfnissen, ist GData niedriges Niveau in der Art, und so finde ich es schneller . Es gibt eine einfache Google GData-Demo CellDemo.java. http://gdata-java-client.googlecode.com/svn-history/r51/trunk/java/sample/spreadsheet/cell/CellDemo.java Es zeigen die Gdata Spreadsheets API-Funktionen.

+0

Sie können Google Apps-Skriptbefehle nicht über die API aufrufen. Die API bietet nur einen Ausführungsbefehl, der ein in der Datei gespeichertes Skript _previously_ ausführen kann. – mvbentes

+0

@mvbentes Nicht sicher, was du meinst. Möchten Sie den Code über eine API ändern? – eddyparkinson

+0

Ich denke, das OP bedeutete, eine Tabelle von außerhalb der Google Docs-Umgebung zu erstellen und zu bevölkern, daher die API. Das ist es, was ich sowieso brauche. Ich habe den Appsskript-Ansatz ausprobiert, aber wie es auf seiner Übersicht heißt: "Apps Script lässt dich mehr mit Google machen. Alles auf einer JavaScript-Plattform in der Cloud.". – mvbentes

1

mit Bezug auf die neue Tabelle API v4

Ich habe die beste und einfache Methode:

Schritt 1

AsyncTask Klasse erstellen, die 'GoogleAccountCredential Credential', um es passieren.

Schritt 2

die API verwenden, die eine neue Tabelle zu erstellen.

CODE

private class MakeRequestTask extends AsyncTask<Void, Void, Void> { 
    private com.google.api.services.sheets.v4.Sheets mService = null; 

    // The constructor 
    MakeRequestTask(GoogleAccountCredential credential) { 
     HttpTransport transport = AndroidHttp.newCompatibleTransport(); 
     JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 
     mService = new com.google.api.services.sheets.v4.Sheets.Builder(
       transport, jsonFactory, credential) 
       .setApplicationName("Android spreadsheet client") 
       .build(); 
    }      

    protected void doInBackground(Void... params) { 

     // function to create the spreadsheet 
     creadSpreadSheet(); 
    } 

    // creates a new spreadsheet 
    private void creadSpreadSheet() throws IOException{ 
     com.google.api.services.sheets.v4.model.Spreadsheet mSpreadsheet, newSpreadSheet; 
     mSpreadsheet = new Spreadsheet(); 
     SpreadsheetProperties spreadsheetProperties = new SpreadsheetProperties(); 
     spreadsheetProperties.setTitle("Demo SpreadSheet");// name of your spreadsheet 
     mSpreadsheet = mSpreadsheet.setProperties(spreadsheetProperties); 


     newSpreadSheet = mService.spreadsheets() 
       .create(mSpreadsheet) 
       .execute(); 

     // this 'newSpreadsheet' is ready to use for write/read operation. 
    } 

}

HINWEIS: Vergessen Sie nicht, 'SheetsScopes.SPREADSHEETS Spielraum in der 'Credential' in onCreate() zu setzen.

String[] SCOPES = { SheetsScopes.SPREADSHEETS}; 
    credential = GoogleAccountCredential.usingOAuth2(
      getApplicationContext(), Arrays.asList(SCOPES)) 
      .setBackOff(new ExponentialBackOff()); 
Verwandte Themen