Gérer les commentaires

Google Slides permet aux utilisateurs de collaborer en ajoutant des commentaires sur les diapositives et les éléments de page.

Ce document explique comment utiliser l'API Google Slides pour lire, créer, répondre à, modifier ou supprimer des commentaires de manière programmatique.

Lecture de commentaires

Lorsque vous utilisez la méthode get sur la ressource presentations pour récupérer une présentation, les chaînes de commentaires et les ancres sont omises par défaut.

Pour inclure des commentaires dans la réponse, définissez le paramètre de requête commentsViewMode sur COMMENTS_VIEW_MODE_INCLUDED. De plus, si l'utilisateur appelant a accès aux commentaires sur le fichier, la définition du paramètre de requête sur COMMENTS_VIEW_MODE_DEFAULT_FOR_CURRENT_ACCESS renvoie également les commentaires.

Les champs comments et commentAnchors sont renvoyés dans la réponse.

L'exemple de code suivant montre comment utiliser une requête get qui récupère les fils de discussion et leurs ancres à partir d'une présentation :

GET https://slides.googleapis.com/v1/presentations/PRESENTATION_ID?commentsViewMode=COMMENTS_VIEW_MODE_INCLUDED&fields=presentationId,comments,slides(objectId,commentAnchors)

Dans la réponse, les commentaires sont renvoyés à deux endroits :

  • Tableau comments global contenant les objets CommentThread.
  • Tableau commentAnchors contenant CommentAnchor objets qui mappent les ID d'ancres de commentaires aux emplacements de page ou d'éléments de page (ancres d'objet).

Lire les commentaires sur une page spécifique

Vous pouvez également récupérer les commentaires et les ancres d'une page spécifique à l'aide de la méthode pages.get sur la ressource presentations.pages. Définissez le paramètre de requête commentsViewMode pour inclure les commentaires pour la cible de page spécifique :

GET https://slides.googleapis.com/v1/presentations/PRESENTATION_ID/pages/PAGE_ID?commentsViewMode=COMMENTS_VIEW_MODE_INCLUDED&fields=objectId,comments,commentAnchors

Exemple de réponse

L'exemple de réponse JSON suivant montre un fil de discussion ancré à une plage de texte dans une forme sur une page de diapositive :

{
  "presentationId": "PRESENTATION_ID",
  "slides": [
    {
      "objectId": "SLIDE_PAGE_ID",
      "commentAnchors": [
        {
          "anchorId": "ANCHOR_ID",
          "objectAnchors": [
            {
              "objectId": "SHAPE_OBJECT_ID",
              "shapeTextAnchors": {
                "ranges": [
                  {
                    "startIndex": 0,
                    "endIndex": 12
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  ],
  "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"
}

Créer et gérer des commentaires

Vous pouvez ajouter, modifier et supprimer des commentaires ou des réponses de manière programmatique à l'aide de la méthode batchUpdate sur la ressource presentations.

Lorsque vous effectuez des mises à jour par lot impliquant des commentaires, vous devez surveiller les éventuels échecs partiels. Pour en savoir plus, consultez Vérifier l'état d'une mise à jour de commentaire.

Insérez un commentaire.

Pour insérer un fil de discussion dans une présentation, utilisez l'objet InsertCommentRequest. Vous devez fournir le contenu du texte du commentaire et l'emplacement de l'ancrage. L'emplacement du point d'ancrage doit spécifier l'un des éléments suivants :

  • objectId : ID d'objet d'une page de diapositive ou d'un élément de page (tel qu'une forme ou un tableau) auquel ancrer le commentaire.
  • shapeTextAnchor : ancre un commentaire à une plage de texte dans une forme.
  • tableCellTextAnchor : ancre un commentaire à une plage de texte dans une cellule de tableau.
  • tableAnchor : ancre un commentaire à une plage de cellules dans un tableau.

L'exemple JSON suivant montre comment ajouter un fil de discussion de commentaires ancré à une page de diapositive :

{
  "requests": [
    {
      "insertComment": {
        "content": "This is a comment added using the API.",
        "objectId": "SLIDE_PAGE_ID"
      }
    }
  ]
}

Vous pouvez attribuer un commentaire à un utilisateur spécifique en indiquant son adresse e-mail dans le champ assigneeEmailAddress :

{
  "requests": [
    {
      "insertComment": {
        "content": "Please review this slide.",
        "assigneeEmailAddress": "ASSIGNEE_EMAIL_ADDRESS",
        "objectId": "SLIDE_PAGE_ID"
      }
    }
  ]
}

Ajouter une réponse ou effectuer une action

Pour répondre à un fil de discussion, le résoudre ou le rouvrir, utilisez l'objet AddCommentReplyRequest.

Vous devez fournir commentId et post, où la réponse est représentée par un objet Post.

L'objet Post contient la réponse content et peut éventuellement spécifier un commentAction (y compris l'action à RESOLVE ou REOPEN le fil de commentaires). Il est représenté par un objet CommentActionType.

Vous pouvez également réattribuer un fil de commentaires en spécifiant un nouvel assigneeEmail dans l'objet Post.

L'exemple JSON suivant montre comment répondre à un fil de commentaires existant :

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

L'exemple JSON suivant montre comment résoudre un fil de commentaires :

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

Modifier un post

Pour modifier le contenu textuel d'un post que vous avez créé, utilisez l'objet UpdateCommentPostRequest. Vous devez spécifier le commentId du thread, le postId du post que vous souhaitez modifier et le nouveau content en texte brut.

L'exemple JSON suivant montre comment modifier un post :

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

Supprimer des commentaires et des réponses

Pour supprimer des commentaires et des réponses, deux options s'offrent à vous :

  • Supprimer un fil de commentaires : pour supprimer un CommentThread entier, utilisez l'objet DeleteCommentRequest. Vous ne pouvez supprimer un fil de commentaires que si vous êtes l'auteur de l'headPost du fil dans l'objet CommentThread.

  • Supprimer une réponse : pour supprimer une réponse spécifique Post d'un CommentThread, utilisez l'objet DeleteCommentReplyRequest. Vous ne pouvez supprimer que les réponses que vous avez écrites. Vous ne pouvez pas supprimer les posts de réponse contenant un commentAction ou un assigneeEmail.

L'exemple JSON suivant montre comment supprimer un fil de commentaires :

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

État de la modification du commentaire

Les requêtes qui nécessitent l'enregistrement de fils de commentaires (comme l'insertion de commentaires ou l'ajout de réponses) peuvent entraîner des échecs partiels. Dans ce cas, les modifications apportées au modèle de présentation (comme la mise à jour du contenu ou des arrière-plans des diapositives) peuvent être validées, mais les commentaires associés peuvent ne pas être enregistrés.

Pour vérifier si les modifications apportées aux commentaires ont bien été appliquées, consultez le champ commentUpdateState dans le corps de la réponse de la méthode presentations.batchUpdate. Le champ est représenté par un objet CommentUpdateState.

Les états suivants sont renvoyés dans CommentUpdateState :

  • NO_UPDATES_REQUESTED : aucune mise à jour de commentaire n'a été demandée dans l'opération par lot.
  • ALL_SAVED : toutes les modifications demandées pour les commentaires ont été appliquées.
  • ALL_FAILED_UNKNOWN_REASON : toutes les modifications demandées pour les commentaires n'ont pas pu être enregistrées, même si d'autres modifications apportées à la présentation ont pu l'être.