Eine nützliche Anwendung des Google Docs-API ist es, Informationen aus einer oder mehr Datenquellen in einem Dokument erstellen.
Auf dieser Seite wird beschrieben, wie Sie Daten aus einer externen Quelle übernehmen und einfügen. in ein vorhandenes Vorlagendokument ein.
Eine Vorlage ist ein spezieller Dokumenttyp, der für alle aus der Vorlage erstellten Dokumente denselben festen Text sowie festgelegte Platzhalter enthält. wo anderer dynamischer Text platziert werden kann. Eine Vertragsvorlage kann beispielsweise einen festen Inhalt enthalten sowie Angaben für Name, Adresse und Name des Empfängers. weitere Details. Ihre App kann dann kundenspezifische Daten in der Vorlage zusammenführen. fertige Dokumente zu erstellen.
Dieser Ansatz ist aus mehreren Gründen hilfreich:
Es ist für Designschaffende leicht, das Design eines Dokuments mithilfe Google Docs-Editoren. Das ist viel einfacher als die Feinabstimmung der um das gerenderte Layout festzulegen.
Das Trennen von Inhalten von der Präsentation ist ein bekanntes Design Prinzip mit vielen Vorteilen.
Ein einfaches Rezept
Hier ein Beispiel dafür, wie Sie die Docs API verwenden können, um Daten in einem Dokument zusammenzuführen:
Erstellen Sie Ihr Dokument mit Platzhalter-Content zur Unterstützung beim Design und Format. Textformatierungen, die Sie ersetzen möchten, bleiben erhalten.
Ersetzen Sie für jedes einzufügende Element den Platzhalterinhalt durch einen Tag. Achten Sie darauf, Zeichenfolgen zu verwenden, die wahrscheinlich nicht normal auftreten. Beispiel:
{{account-holder-name}}
wäre ein gutes Tag.Verwenden Sie in Ihrem Code die Google Drive API, um eine Kopie des Dokuments zu erstellen.
Verwenden Sie in Ihrem Code die Methode
batchUpdate()
der Docs API mit den Dokumentnamen und fügen SieReplaceAllTextRequest
Dokument-IDs verweisen auf ein Dokument und können aus der URL abgeleitet werden.
https://docs.google.com/document/d/documentId/edit
Beispiel
Sehen Sie sich das folgende Beispiel an, in dem zwei Felder auf allen Tabs einer mit echten Werten ein, um ein fertiges Dokument zu generieren.
Für diese Zusammenführung können Sie den folgenden Code verwenden.
Java
String customerName = "Alice"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); String date = formatter.format(LocalDate.now()); List<Request> requests = new ArrayList<>(); // One option for replacing all text is to specify all tab IDs. requests.add(new Request() .setReplaceAllText(new ReplaceAllTextRequest() .setContainsText(new SubstringMatchCriteria() .setText("{{customer-name}}") .setMatchCase(true)) .setReplaceText(customerName) .setTabsCriteria(new TabsCriteria() .addTabIds(TAB_ID_1) .addTabIds(TAB_ID_2) .addTabIds(TAB_ID_3)))); // Another option is to omit TabsCriteria if you are replacing across all tabs. requests.add(new Request() .setReplaceAllText(new ReplaceAllTextRequest() .setContainsText(new SubstringMatchCriteria() .setText("{{date}}") .setMatchCase(true)) .setReplaceText(date))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest(); service.documents().batchUpdate(documentId, body.setRequests(requests)).execute();
Node.js
let customerName = 'Alice'; let date = yyyymmdd() let requests = [ // One option for replacing all text is to specify all tab IDs. { replaceAllText: { containsText: { text: '{{customer-name}}', matchCase: true, }, replaceText: customerName, tabsCriteria: { tabIds: [TAB_ID_1, TAB_ID_2, TAB_ID_3], }, }, }, // Another option is to omit TabsCriteria if you are replacing across all tabs. { replaceAllText: { containsText: { text: '{{date}}', matchCase: true, }, replaceText: date, }, }, ]; google.options({auth: auth}); google .discoverAPI( 'https://docs.googleapis.com/$discovery/rest?version=v1&key={YOUR_API_KEY}') .then(function(docs) { docs.documents.batchUpdate( { documentId: '1yBx6HSnu_gbV2sk1nChJOFo_g3AizBhr-PpkyKAwcTg', resource: { requests, }, }, (err, {data}) => { if (err) return console.log('The API returned an error: ' + err); console.log(data); }); });
Python
customer_name = 'Alice' date = datetime.datetime.now().strftime("%y/%m/%d") requests = [ # One option for replacing all text is to specify all tab IDs. { 'replaceAllText': { 'containsText': { 'text': '{{customer-name}}', 'matchCase': 'true' }, 'replaceText': customer_name, 'tabsCriteria': { 'tabIds': [TAB_ID_1, TAB_ID_2, TAB_ID_3], }, }}, # Another option is to omit TabsCriteria if you are replacing across all tabs. { 'replaceAllText': { 'containsText': { 'text': '{{date}}', 'matchCase': 'true' }, 'replaceText': str(date), } } ] result = service.documents().batchUpdate( documentId=document_id, body={'requests': requests}).execute()
Vorlagen verwalten
Für Vorlagendokumente, die die Anwendung definiert und besitzt, erstellen Sie Vorlage mithilfe eines speziellen Kontos erstellen, das die Anwendung repräsentiert. Dienstkonten sind eine gute Wahl und vermeiden Komplikationen mit Google Workspace-Richtlinien, die Freigabe einschränken.
Wenn Sie Instanzen von Dokumenten aus Vorlagen erstellen, verwenden Sie Endnutzer-Anmeldedaten. So haben Nutzer die volle Kontrolle resultierendes Dokument und verhindert Skalierungsprobleme in Bezug auf in Google Drive zu beschränken.
Führen Sie zum Erstellen einer Vorlage mit einem Dienstkonto die folgenden Schritte mit Anwendungsanmeldedaten:
- Dokument erstellen mit documents.create in der Docs API
- Aktualisieren Sie die Berechtigungen, damit die Dokumentempfänger es lesen können permissions.create in die Drive API verwenden.
- Aktualisieren Sie die Berechtigungen, damit Vorlagenautoren mit schreiben können. permissions.create in die Drive API verwenden.
- Bearbeiten Sie die Vorlage nach Bedarf.
Führen Sie die folgenden Schritte aus, um eine Instanz des Dokuments zu erstellen. durch die Nutzeranmeldedaten:
- Erstellen Sie eine Kopie der Vorlage mithilfe von files.copy:
- Werte ersetzen mit documents.batchUpdate in der Docs API.