Text in einem Dokument zusammenführen

Eine nützliche Anwendung der Google Docs API besteht darin, Informationen aus einer oder mehreren Datenquellen in einem Dokument zusammenzuführen.

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

Eine Vorlage ist ein spezieller Dokumenttyp, der für alle aus der Vorlage erstellten Dokumente denselben festen Text sowie Platzhalter enthält, an denen anderer dynamischer Text platziert werden kann. Eine Vertragsvorlage kann beispielsweise einen festen Inhalt sowie Stellen für den Namen, die Adresse und andere Details des Empfängers enthalten. Ihre Anwendung kann dann kundenspezifische Daten in der Vorlage zusammenführen, um fertige Dokumente zu erstellen.

Dieser Ansatz ist aus mehreren Gründen hilfreich:

  • Mit dem Google Docs-Editor können Designschaffende das Design eines Dokuments ganz einfach optimieren. Das ist viel einfacher, als die Parameter in Ihrer App für das gerenderte Layout anzupassen.

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

Konzeptionelles Diagramm einer Zusammenführung.

Ein einfaches Rezept

Hier ist 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 Platzhaltern, die Sie beim Design und Format unterstützen. Textformatierungen, die Sie ersetzen möchten, bleiben erhalten.

  2. Ersetzen Sie für jedes einzufügende Element den Platzhalterinhalt durch ein Tag. Achten Sie darauf, Zeichenfolgen zu verwenden, die wahrscheinlich nicht normal auftreten. Beispielsweise könnte {{account-holder-name}} ein gutes Tag sein.

  3. Verwenden Sie in Ihrem Code die Google Drive API, um eine Kopie des Dokuments zu erstellen.

  4. Verwenden Sie im 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

Sehen Sie sich das folgende Beispiel an, in dem zwei Felder in einer Vorlage durch echte Werte ersetzt werden, 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<>();
        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 die Vorlage für Vorlagendokumente, die von der Anwendung definiert und gehört, mit einem speziellen Konto, das die Anwendung darstellt. Dienstkonten sind eine gute Wahl, um Komplikationen mit 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 die volle Kontrolle über das resultierende Dokument und vermeiden Skalierungsprobleme im Zusammenhang mit den Beschränkungen pro Nutzer in Drive.

Führen Sie mit den Anwendungsanmeldedaten die folgenden Schritte aus, um eine Vorlage mit einem Dienstkonto zu erstellen:

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

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

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