Text in einem Dokument zusammenführen

Eine nützliche Anwendung der Google Docs API ist das Zusammenführen von Informationen aus einer oder mehreren Datenquellen in einem Dokument.

Auf dieser Seite wird beschrieben, wie Sie Daten aus einer externen Quelle in ein vorhandenes Vorlagendokument einfügen können.

Eine Vorlage ist ein spezieller Dokumenttyp, der für alle aus der Vorlage erstellten Dokumente denselben festen Text enthält. Außerdem enthält er bestimmte Platzhalter, in denen anderer dynamischer Text platziert werden kann. Eine Vertragsvorlage kann beispielsweise feste Inhalte sowie Spots für Name, Adresse und andere Details des Empfängers enthalten. Ihre Anwendung kann dann kundenspezifische Daten in der Vorlage zusammenführen, um fertige Dokumente zu erstellen.

Es gibt mehrere Gründe, warum dieser Ansatz nützlich ist:

  • Mit dem Google Docs-Editor können Designfachkräfte das Design eines Dokuments ganz einfach optimieren. Das ist viel einfacher als die Feinabstimmung der Parameter in Ihrer App, um das gerenderte Layout festzulegen.

  • Das Trennen von Inhalten von der Präsentation ist ein bekanntes Designprinzip mit vielen Vorteilen.

Konzeptionelles Diagramm einer Zusammenführung

Ein grundlegendes Rezept

Hier ein Beispiel dafür, wie Sie die Docs API verwenden können, um Daten in einem Dokument zusammenzuführen:

  1. Erstellen Sie Ihr Dokument mit Platzhalterinhalten, die Ihnen beim Design und Format helfen. Alle Textformatierungen, die Sie ersetzen möchten, werden beibehalten.

  2. Ersetzen Sie für jedes Element, das Sie einfügen, den Platzhalterinhalt durch ein Tag. Verwenden Sie Strings, die wahrscheinlich nicht normal auftreten. Zum Beispiel könnte {{account-holder-name}} ein gutes Tag sein.

  3. Erstellen Sie im Code mit der Google Drive API eine Kopie des Dokuments.

  4. Verwenden Sie in Ihrem Code die Methode batchUpdate() der Docs API mit dem Dokumentnamen und fügen Sie einen ReplaceAllTextRequest ein.

Dokument-IDs verweisen auf ein Dokument und können aus der URL abgeleitet werden

https://docs.google.com/document/d/documentId/edit

Beispiel

Im folgenden Beispiel werden zwei Felder in einer Vorlage durch echte Werte ersetzt, um ein fertiges Dokument zu generieren.

Um diese Zusammenführung durchzuführen, 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<>();
        requests.add(new Request()
                .setReplaceAllText(new ReplaceAllTextRequest()
                        .setContainsText(new SubstringMatchCriteria()
                                .setText("{{customer-name}}")
                                .setMatchCase(true))
                        .setReplaceText(customerName)));
        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 = [
    {
      replaceAllText: {
        containsText: {
          text: '{{customer-name}}',
          matchCase: true,
        },
        replaceText: customerName,
      },
    },
    {
      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 = [
         {
            'replaceAllText': {
                'containsText': {
                    'text': '{{customer-name}}',
                    'matchCase':  'true'
                },
                'replaceText': customer_name,
            }}, {
            'replaceAllText': {
                'containsText': {
                    'text': '{{date}}',
                    'matchCase':  'true'
                },
                'replaceText': str(date),
            }
        }
    ]

    result = service.documents().batchUpdate(
        documentId=document_id, body={'requests': requests}).execute()

Vorlagen verwalten

Erstellen Sie für Vorlagendokumente, die von der Anwendung definiert und deren Eigentümer sind, die Vorlage mithilfe eines eigenen Kontos für die Anwendung. Dienstkonten sind eine gute Wahl, um Komplikationen durch Google Workspace-Richtlinien zu vermeiden, die die Freigabe einschränken.

Wenn Sie Instanzen von Dokumenten aus Vorlagen erstellen, verwenden Sie immer Endnutzeranmeldedaten. So haben Nutzer volle Kontrolle über das resultierende Dokument und vermeiden Skalierungsprobleme aufgrund von Beschränkungen pro Nutzer in Drive.

Führen Sie die folgenden Schritte mit den Anmeldedaten für die Anwendung aus, um eine Vorlage mit einem Dienstkonto zu erstellen:

  1. Erstellen Sie mithilfe von documents.create ein Dokument in der Docs API.
  2. Aktualisieren Sie die Berechtigungen mit permissions.create in der Drive API, damit die Empfänger das Dokument lesen können.
  3. Aktualisieren Sie die Berechtigungen, damit Vorlagenautoren mithilfe von permissions.create in der Drive API schreiben können.
  4. Bearbeiten Sie die Vorlage nach Bedarf.

Führen Sie die folgenden Schritte mit den Nutzeranmeldedaten aus, um eine Instanz des Dokuments zu erstellen:

  1. Erstellen Sie in der Drive API mit files.copy eine Kopie der Vorlage.
  2. Ersetzen Sie Werte mithilfe von documents.batchUpdate in der Docs API.