Grundkenntnisse

Mit der Google Präsentationen API können Sie Elemente auf Präsentationsseiten hinzufügen und ändern. In den Beispielen auf dieser Seite wird gezeigt, wie Sie mit der Methode presentations.batchUpdate gängige Lesevorgänge ausführen.

In diesen Beispielen werden die folgenden Variablen verwendet:

  • PRESENTATION_ID: Gibt an, wo Sie die Präsentations-ID angeben. Sie finden den Wert für diese ID in der URL der Präsentation.
  • PAGE_ID: Gibt an, wo Sie die Seitenobjekt-ID angeben. Sie können den Wert dafür über die URL oder mithilfe einer API-Leseanfrage abrufen.
  • PAGE_ELEMENT_ID: Gibt an, wo Sie die Objekt-ID des Seitenelements angeben. Sie können diese ID für von Ihnen erstellte Elemente angeben (mit einigen Einschränkungen) oder die Slides API eine automatisch erstellen lassen. Element-IDs können über eine API-Leseanfrage abgerufen werden.

Diese Beispiele werden als HTTP-Anfragen dargestellt, um sprachenunabhängig zu sein. Weitere Informationen zum Implementieren eines Batch-Updates in verschiedenen Sprachen mithilfe der Google API-Clientbibliotheken finden Sie unter Formen und Text hinzufügen.

Einer Folie ein Textfeld hinzufügen

Im folgenden presentations.batchUpdate-Codebeispiel wird gezeigt, wie Sie mit der Methode CreateShapeRequest einer durch PAGE_ID angegebenen Folie ein neues Textfeld mit dem String „Mein hinzugefügtes Textfeld“ hinzufügen. Im Anfragetext werden zwei Anfragen angegeben: eine zum Erstellen des Textfelds (mit einer bestimmten Größe und Position) und eine zweite zum Einfügen von Text.

In der ersten Anfrage wird die Objekt-ID angegeben, die für das Textfeld verwendet werden soll. So kann die zweite Anfrage sie im selben API-Aufruf verwenden, was den Overhead reduziert.

Im Folgenden finden Sie das Anfrageprotokoll zum Hinzufügen eines Textfelds zu einer Folie:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createShape": {
        "objectId": PAGE_ELEMENT_ID,
        "shapeType": "TEXT_BOX",
        "elementProperties": {
          "pageObjectId":  PAGE_ID,
          "size": {
            "width": {
              "magnitude": 150,
              "unit": "PT"
            },
            "height": {
              "magnitude": 50,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 200,
            "translateY": 100,
            "unit": "PT"
          }
        }
      }
    },
    {
      "insertText": {
        "objectId": PAGE_ELEMENT_ID,
        "text": "My Added Text Box",
        "insertionIndex": 0
      }
    }
  ]
}

Einer Folie ein Bild hinzufügen

Im folgenden Codebeispiel für presentations.batchUpdate wird gezeigt, wie Sie mit der Methode CreateImageRequest einer Folie, die durch PAGE_ID angegeben ist, ein Bild hinzufügen. Die API ruft das Bild mithilfe des IMAGE_URL ab. Mit dieser Anfrage wird das Bild auch skaliert und auf der Folie positioniert.

Im Folgenden finden Sie das Anfrageprotokoll zum Hinzufügen eines Bildes zu einer Folie:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createImage": {
        "url": IMAGE_URL,
        "elementProperties": {
          "pageObjectId":  PAGE_ID,
          "size": {
            "width": {
              "magnitude": 30,
              "unit": "PT"
            },
            "height": {
              "magnitude": 30,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 200,
            "translateY": 100,
            "unit": "PT"
          }
        }
      }
    }
  ]
}

Seite oder Seitenelement löschen

Im folgenden presentations.batchUpdate-Codebeispiel wird gezeigt, wie Sie mit der Methode DeleteObjectRequest das durch PAGE_ELEMENT_ID angegebene Seitenelement und die durch PAGE_ID angegebene Folie mit zwei separaten Anfragen löschen.

Im Folgenden finden Sie das Anfrageprotokoll zum Löschen einer Seite oder eines Seitenelements:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "deleteObject": {
        "objectId": PAGE_ELEMENT_ID
      },
      "deleteObject": {
        "objectId":  PAGE_ID
      }
    }
  ]
}

Text in einer bestimmten Form bearbeiten

Im folgenden Codebeispiel für presentations.batchUpdate wird gezeigt, wie mit der Methode DeleteTextRequest ein Teil des Texts in der durch PAGE_ELEMENT_ID angegebenen Form ersetzt wird. Löschen Sie dazu zuerst den Text mithilfe der zeilenbasierten startIndex und fügen Sie dann an dieser Stelle neuen Text ein. In diesem Beispiel wird der ursprüngliche Textstring „My Shape Text: ????“ durch „My Shape Text: Trapezoid“ ersetzt.

Diese Anfrage wirkt sich nur auf Text in einer bestimmten Form aus. Wenn Sie Text überall in einer Präsentation ersetzen möchten, verwenden Sie die Methode ReplaceAllTextRequest.

Im Folgenden finden Sie das Anfrageprotokoll zum Bearbeiten von Text in einer bestimmten Form:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "deleteText": {
        "objectId": PAGE_ELEMENT_ID,
        "textRange": {
          "type": "FROM_START_INDEX",
          "startIndex": 15
        }
      }
    },
    {
      "insertText": {
        "objectId": PAGE_ELEMENT_ID,
        "text": "Trapezoid",
        "insertionIndex": 15
      }
    }
  ]
}

Form-Tag durch ein Bild ersetzen

Tags sind Textfelder oder Formen mit einem eindeutigen Stringnamen wie „kontoinhaber-name“.

Im folgenden presentations.batchUpdate-Codebeispiel wird gezeigt, wie Sie mit der Methode CreateImageRequest eine einzelne Instanz eines Shape-Tags durch ein Bild ersetzen, die Position beibehalten und es so skalieren, dass es der Größe des Tags entspricht, wobei das Seitenverhältnis des Bildes beibehalten wird.

Mit der Anfrage kann auch ein Bild durch ein anderes ersetzt werden. Die Anfrage besteht aus dem Hinzufügen des neuen Bildes und dem anschließenden Löschen des Tags.

Die Methode CreateImageRequest ersetzt nur eine bestimmte Form. Wenn Sie Tag-Formen überall in einer Präsentation ersetzen möchten, verwenden Sie eine ReplaceAllShapesWithImageRequest-Methode.

Das Shape-Tag hat die folgenden PageElement-Properties, die mit einer presentations.pages.get-Anfrage abgerufen werden können:

{
  "objectId": PAGE_ELEMENT_ID,
  "size": {
    "width": {
      "magnitude": 3000000,
      "unit": "EMU"
    },
    "height": {
      "magnitude": 3000000,
      "unit": "EMU"
    }
  },
  "transform": {
    "scaleX": 1.13,
    "scaleY": 0.62,
    "translateX": 4800000,
    "translateY":  450000,
    "unit": "EMU"
  },
  "shape": {
    "shapeType": "RECTANGLE"
  }
}

Die Form befindet sich auf der durch PAGE_ID angegebenen Folie. Um das Bild anzugeben, das die Form ersetzt, ruft die API das Bild mithilfe von IMAGE_URL ab. Um das Seitenverhältnis des Bildes beizubehalten und gleichzeitig auf die Größe des Tags zu beschränken, wird bei der Methode CreateImageRequest sowohl die Bildgröße auf das Produkt aus Taggröße und Skalierung als auch die Bildskalierungsfaktoren auf 1 festgelegt. Weitere Informationen finden Sie unter Seitenverhältnis beibehalten.

Im Folgenden finden Sie das Anfrageprotokoll zum Ersetzen eines Formtags durch ein Bild:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createImage": {
        "url": IMAGE_URL,
        "elementProperties": {
          "pageObjectId":  PAGE_ID,
          "size": {
            "width": {
              "magnitude": 3000000 * 1.13,
              "unit": "EMU"
            },
            "height": {
              "magnitude": 3000000 * 0.62,
              "unit": "EMU"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 4800000,
            "translateY": 450000,
            "unit": "PT"
          }
        }
      }
    },
    {
      "deleteObject": {
        "objectId": PAGE_ELEMENT_ID
      }
    }
  ]
}