Gerenciar comentários

O Slides Google permite que os usuários colaborem adicionando comentários em slides e elementos de página.

Este documento mostra como usar a API Google Slides para ler, criar, responder, atualizar ou excluir comentários de maneira programática.

Ler comentários

Quando você usa o get método no presentations recurso para recuperar uma apresentação, as conversas e as âncoras de comentários são omitidas por padrão.

Para incluir comentários na resposta, defina o commentsViewMode parâmetro de consulta como COMMENTS_VIEW_MODE_INCLUDED. Além disso, se o usuário que está fazendo a chamada tiver acesso de comentários no arquivo, definir o parâmetro de consulta como COMMENTS_VIEW_MODE_DEFAULT_FOR_CURRENT_ACCESS também retornará comentários.

Os campos comments e commentAnchors são retornados na resposta.

O exemplo de código a seguir mostra como usar uma solicitação get que recupera conversas e as âncoras delas de uma apresentação:

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

Na resposta, os comentários são retornados em dois locais:

  • A matriz global comments que contém os CommentThread objetos.
  • A matriz commentAnchors que contém CommentAnchor objetos que mapeiam IDs de âncoras de comentários para locais de páginas ou elementos de páginas (âncoras de objetos).

Ler comentários em uma página específica

Também é possível recuperar comentários e âncoras de uma página específica usando o pages.get método no presentations.pages recurso. Defina o parâmetro de consulta commentsViewMode para incluir comentários para o destino da página específica:

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

Exemplo de resposta

O exemplo de resposta JSON a seguir mostra uma conversa de comentários ancorada a um intervalo de texto em uma forma em uma página de slide:

{
  "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"
}

Criar e gerenciar comentários

É possível adicionar, editar e excluir comentários ou respostas de maneira programática usando o batchUpdate método no presentations recurso.

Ao realizar atualizações em lote que envolvem comentários, monitore possíveis falhas parciais. Para mais informações, consulte Status da atualização de comentários.

Inserir um comentário

Para inserir uma conversa de comentários em uma apresentação, use o InsertCommentRequest objeto. Você precisa fornecer o conteúdo do texto do comentário e o local da âncora. O local da âncora precisa especificar um dos seguintes:

  • objectId: o ID do objeto de uma página de slide ou de um elemento de página (como uma forma ou tabela) para ancorar o comentário.
  • shapeTextAnchor: ancora um comentário a um intervalo de texto em uma forma.
  • tableCellTextAnchor: ancora um comentário a um intervalo de texto em uma célula de tabela.
  • tableAnchor: ancora um comentário a um intervalo de células em uma tabela.

O exemplo JSON a seguir mostra como adicionar uma conversa de comentários ancorada a uma página de slide:

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

É possível atribuir um comentário a um usuário específico fornecendo o e-mail dele no assigneeEmailAddress campo:

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

Adicionar uma resposta ou realizar uma ação

Para responder a uma conversa de comentários, resolver ou reabrir uma conversa, use o AddCommentReplyRequest objeto.

Você precisa fornecer o commentId e o post em que a resposta é representada por um objeto Post.

O objeto Post contém o content da resposta e, opcionalmente, pode especificar um commentAction (incluindo a ação para RESOLVE ou REOPEN a conversa de comentários). Ele é representado por um CommentActionType objeto.

Também é possível reatribuir uma conversa de comentários especificando um novo assigneeEmail no objeto Post.

O exemplo JSON a seguir mostra como responder a uma conversa de comentários:

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

O exemplo JSON a seguir mostra como resolver uma conversa de comentários:

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

Editar uma postagem

Para editar o conteúdo de texto de uma postagem criada por você, use o UpdateCommentPostRequest objeto. Você precisa especificar o commentId da conversa, o postId da postagem que quer editar e o novo texto simples content.

O exemplo JSON a seguir mostra como editar uma postagem:

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

Excluir comentários e respostas

Para excluir comentários e respostas, você tem duas opções:

  • Excluir uma conversa de comentários: Para remover uma CommentThread inteira, use o objeto DeleteCommentRequest. Só é possível excluir uma conversa de comentários se você for o autor da conversa headPost no objeto CommentThread.

  • Excluir uma resposta: Para excluir uma resposta específica Post de um CommentThread, use o DeleteCommentReplyRequest objeto. Só é possível excluir respostas criadas por você. Não é possível excluir postagens de resposta que contenham um commentAction ou um assigneeEmail.

O exemplo JSON a seguir mostra como excluir uma conversa de comentários:

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

Status da atualização de comentários

As solicitações que exigem salvar conversas de comentários (como inserir comentários ou adicionar respostas) podem apresentar falhas parciais. Nesses casos, as mudanças no modelo de apresentação (como atualizar o conteúdo ou os planos de fundo dos slides) podem ser confirmadas, mas os comentários associados podem não ser salvos.

É possível verificar se as atualizações de comentários foram aplicadas consultando o commentUpdateState campo no corpo da resposta do método presentations.batchUpdate. O campo é representado por um CommentUpdateState objeto.

Os estados a seguir são retornados em CommentUpdateState:

  • NO_UPDATES_REQUESTED: nenhuma atualização de comentário foi solicitada na operação em lote.
  • ALL_SAVED: todas as atualizações de comentários solicitadas foram aplicadas.
  • ALL_FAILED_UNKNOWN_REASON: todas as atualizações de comentários solicitadas não foram salvas, mesmo que outras mudanças de apresentação tenham sido confirmadas.