Kommentare verwalten

In Google Sheets können Nutzer zusammenarbeiten, indem sie Kommentare zu bestimmten Zellen hinzufügen.

In diesem Dokument wird beschrieben, wie Sie die Google Sheets API verwenden können, um Kommentare programmatisch zu lesen, zu erstellen, zu beantworten, zu aktualisieren oder zu löschen.

Kommentare lesen

Wenn Sie die get Methode für die spreadsheets Ressource verwenden, um eine Tabelle abzurufen, werden Kommentar-Threads und Anker standardmäßig ausgelassen.

Wenn Sie Kommentare in die Antwort einbeziehen möchten, setzen Sie den commentsViewMode Abfrageparameter auf COMMENTS_VIEW_MODE_INCLUDED. Wenn der aufrufende Nutzer außerdem Zugriff auf Kommentare in der Datei hat, werden auch Kommentare zurückgegeben, wenn Sie den Abfrageparameter auf COMMENTS_VIEW_MODE_DEFAULT_FOR_CURRENT_ACCESS setzen.

In der Antwort werden sowohl die comments als auch die sheets.commentAnchors Felder zurückgegeben.

Das folgende Codebeispiel zeigt, wie Sie eine get-Anfrage verwenden, um Kommentar-Threads und ihre Anker (Bereiche) aus einer Tabelle abzurufen:

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?commentsViewMode=COMMENTS_VIEW_MODE_INCLUDED&fields=spreadsheetId,comments,sheets(properties(sheetId,title),commentAnchors)

In der Antwort werden Kommentare an zwei Stellen zurückgegeben:

  • Das globale comments Array mit den CommentThread Objekten.
  • Das sheets.commentAnchors Array mit CommentAnchor Objekten, die Kommentaranker-IDs Zellpositionen (Bereichen) zuordnen.

Kommentare nach Bereich oder Tabelle filtern

Beim Abrufen einer Tabelle können Sie die zurückgegebenen Daten filtern, indem Sie Bereiche (mit dem ranges Abfrageparameter in der spreadsheets.get Methode) oder Tabellen (mit dem dataFilters Feld im Anfragetext der spreadsheets.getByDataFilter Methode) angeben.

  • Wenn Sie nach Bereich oder Tabellenblatt filtern: Es werden nur die Kommentar-Threads zurückgegeben, die in den angegebenen Bereichen oder Tabellenblättern verankert sind. Nicht verankerte Kommentare (z. B. Kommentare, deren ursprüngliche Zellkoordinate gelöscht wurde) sind nicht enthalten.
  • Wenn Sie nicht nach Bereich oder Tabellenblatt filtern: Alle Kommentar-Threads, einschließlich nicht verankerter Kommentare, werden zurückgegeben.

Beispielantwort

Die folgende JSON-Beispielantwort zeigt einen Kommentar-Thread, der in Zelle A1 (Zeile 0, Spalte 0) in dem Tabellenblatt mit der ID 0 verankert ist:

{
  "spreadsheetId": "SPREADSHEET_ID",
  "sheets": [
    {
      "properties": {
        "sheetId": 0,
        "title": "Sheet1"
      },
      "commentAnchors": [
        {
          "anchorId": "ANCHOR_ID",
          "range": {
            "sheetId": 0,
            "startRowIndex": 0,
            "endRowIndex": 1,
            "startColumnIndex": 0,
            "endColumnIndex": 1
          }
        }
      ]
    }
  ],
  "comments": [
    {
      "commentId": "COMMENT_ID",
      "anchorId": "ANCHOR_ID",
      "headPost": {
        "postId": "POST_ID",
        "content": "This is a comment thread head post.",
        "contentHtml": "The content of the post as HTML.",
        "author": {
          "displayName": "DISPLAY_NAME",
          "me": true,
          "user": "users/USER"
        },
        "createTime": "2026-07-01T10:13:12Z",
        "updateTime": "2026-07-01T10:13:12Z"
      },
      "replies": [
        {
          "postId": "REPLY_POST_ID",
          "content": "This is a reply to the comment.",
          "author": {
            "displayName": "DISPLAY_NAME",
            "me": false
          },
          "createTime": "2026-07-01T10:15:00Z",
          "updateTime": "2026-07-01T10:15:00Z"
        }
      ],
      "status": "OPEN"
    }
  ],
  "commentsViewMode": "COMMENTS_VIEW_MODE_INCLUDED"
}

Kommentare erstellen und verwalten

Sie können Kommentare oder Antworten programmatisch hinzufügen, bearbeiten und löschen. Verwenden Sie dazu die batchUpdate Methode für die spreadsheetsRessource.

Bei Batch-Aktualisierungen mit Kommentaren sollten Sie auf mögliche Teilausfälle achten. Weitere Informationen finden Sie unter Status der Kommentaraktualisierung.

Kommentar einfügen

Verwenden Sie das InsertCommentRequest Objekt, um einen Kommentar-Thread in eine Tabelle einzufügen. Sie müssen den Kommentartext und die coordinate angeben, an der der Kommentar mit einem GridCoordinate Objekt verankert ist.

Das folgende JSON-Beispiel zeigt, wie Sie einen nicht zugewiesenen Kommentar-Thread in Zelle B2 (Zeile 1, Spalte 1) in dem Tabellenblatt mit der ID 0 hinzufügen:

{
  "requests": [
    {
      "insertComment": {
        "content": "This is a comment added using the API.",
        "coordinate": {
          "sheetId": 0,
          "rowIndex": 1,
          "columnIndex": 1
        }
      }
    }
  ]
}

Sie können einen Kommentar einem bestimmten Nutzer zuweisen, indem Sie seine E-Mail-Adresse im assigneeEmailAddress Feld angeben:

{
  "requests": [
    {
      "insertComment": {
        "content": "Please review the data in this cell.",
        "assigneeEmailAddress": "ASSIGNEE_EMAIL_ADDRESS",
        "coordinate": {
          "sheetId": 0,
          "rowIndex": 1,
          "columnIndex": 1
        }
      }
    }
  ]
}

Antwort hinzufügen oder Aktion ausführen

Verwenden Sie das AddCommentReplyRequest Objekt, um auf einen Kommentar-Thread zu antworten, ihn zu schließen oder wieder zu öffnen.

Sie müssen die commentId und die post angeben, wobei die Antwort durch ein Post-Objekt dargestellt wird.

Das Objekt Post enthält die Antwort content und kann optional eine commentAction angeben, einschließlich der Aktion zum RESOLVE oder REOPEN des Kommentar-Threads. Es wird durch ein ein CommentActionType Objekt dargestellt.

Sie können einen Kommentar-Thread auch neu zuweisen, indem Sie eine neue assigneeEmail im Objekt Post angeben.

Das folgende JSON-Beispiel zeigt, wie Sie auf einen vorhandenen Kommentar-Thread antworten:

{
  "requests": [
    {
      "addCommentReply": {
        "commentId": "COMMENT_ID",
        "post": {
          "content": "Replying to the comment thread."
        }
      }
    }
  ]
}

Das folgende JSON-Beispiel zeigt, wie Sie einen Kommentar-Thread schließen (das Feld content ist nicht erforderlich):

{
  "requests": [
    {
      "addCommentReply": {
        "commentId": "COMMENT_ID",
        "post": {
          "commentAction": "RESOLVE"
        }
      }
    }
  ]
}

Das folgende JSON-Beispiel zeigt, wie Sie einen Kommentar-Thread neu zuweisen:

{
  "requests": [
    {
      "addCommentReply": {
        "commentId": "COMMENT_ID",
        "post": {
          "content": "Replying to the comment thread.",
          "assigneeEmail": "ASSIGNEE_EMAIL"
        }
      }
    }
  ]
}

Post bearbeiten

Verwenden Sie das UpdateCommentPostRequest Objekt, um den Text eines von Ihnen erstellten Posts zu bearbeiten. Sie müssen die commentId des Threads, die postId des zu bearbeitenden Posts und den neuen Nur-Text-content angeben.

Das folgende JSON-Beispiel zeigt, wie Sie einen Post bearbeiten:

{
  "requests": [
    {
      "updateCommentPost": {
        "commentId": "COMMENT_ID",
        "postId": "POST_ID",
        "content": "This is the updated comment text."
      }
    }
  ]
}

Kommentare und Antworten löschen

Sie haben zwei Möglichkeiten, Kommentare und Antworten zu löschen:

  • Kommentar-Thread löschen: Verwenden Sie das Objekt DeleteCommentRequest , um einen gesamten CommentThread zu entfernen. Sie können einen Kommentar-Thread nur löschen, wenn Sie der Autor des Threads headPost im Objekt CommentThread sind.

  • Antwort löschen: Verwenden Sie das DeleteCommentReplyRequest Objekt, um einen bestimmten Antwort-Post aus einem CommentThread zu löschen. Sie können nur Antworten löschen, die Sie selbst verfasst haben. Antwort-Posts, die eine commentAction oder eine assigneeEmail enthalten, können nicht gelöscht werden.

Das folgende JSON-Beispiel zeigt, wie Sie einen Kommentar-Thread löschen:

{
  "requests": [
    {
      "deleteComment": {
        "commentId": "COMMENT_ID"
      }
    }
  ]
}

Status der Kommentaraktualisierung

Bei Anfragen, bei denen Kommentar-Threads gespeichert werden müssen (z. B. beim Einfügen von Kommentaren oder Hinzufügen von Antworten), kann es zu Teilausfällen kommen. In diesen Fällen werden die Änderungen am Tabellenmodell (z. B. Aktualisieren von Zellwerten oder Hinzufügen von Tabellen) möglicherweise erfolgreich übernommen, die zugehörigen Kommentare können aber nicht gespeichert werden.

Sie können prüfen, ob Kommentaraktualisierungen erfolgreich angewendet wurden. Prüfen Sie dazu das commentUpdateState Feld im Antworttext der spreadsheets.batchUpdate Methode. Das Feld wird durch ein CommentUpdateState Objekt dargestellt.

Die folgenden Status werden in CommentUpdateState zurückgegeben:

  • NO_UPDATES_REQUESTED: Bei der Batch-Operation wurden keine Kommentaraktualisierungen angefordert.
  • ALL_SAVED: Alle angeforderten Kommentaraktualisierungen wurden erfolgreich angewendet.
  • ALL_FAILED_UNKNOWN_REASON: Alle angeforderten Kommentaraktualisierungen konnten nicht gespeichert werden, obwohl andere Tabellenänderungen möglicherweise übernommen wurden.