Cómo administrar comentarios

Presentaciones de Google permite que los usuarios colaboren agregando comentarios en las diapositivas y los elementos de la página.

En este documento, se muestra cómo puedes usar la API de Google Slides para leer, crear, responder, actualizar o borrar comentarios de forma programática.

Cómo leer comentarios

Cuando usas el método get en el recurso presentations para recuperar una presentación, los subprocesos de comentarios y los anclajes se omiten de forma predeterminada.

Para incluir comentarios en la respuesta, configura el parámetro de búsqueda commentsViewMode como COMMENTS_VIEW_MODE_INCLUDED. Además, si el usuario que llama tiene acceso a los comentarios del archivo, configurar el parámetro de consulta en COMMENTS_VIEW_MODE_DEFAULT_FOR_CURRENT_ACCESS también devuelve comentarios.

En la respuesta, se devuelven los campos comments y commentAnchors.

En la siguiente muestra de código, se muestra cómo usar una solicitud get que recupera los subprocesos de comentarios y sus anclajes de una presentación:

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

En la respuesta, los comentarios se devuelven en dos ubicaciones:

  • Es el array comments global que contiene los objetos CommentThread.
  • Es el array commentAnchors que contiene objetos CommentAnchor que asignan IDs de anclaje de comentarios a ubicaciones de páginas o elementos de páginas (anclajes de objetos).

Cómo leer comentarios en una página específica

También puedes recuperar comentarios y anclajes para una página específica con el método pages.get en el recurso presentations.pages. Establece el parámetro de consulta commentsViewMode para incluir comentarios sobre el objetivo de página específico:

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

Respuesta de muestra

En la siguiente respuesta de ejemplo en formato JSON, se muestra un hilo de comentarios anclado a un rango de texto dentro de una forma en una página de diapositiva:

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

Cómo crear y administrar comentarios

Puedes agregar, editar y borrar comentarios o respuestas de forma programática con el método batchUpdate del recurso presentations.

Cuando realices actualizaciones por lotes que involucren comentarios, debes supervisar posibles fallas parciales. Para obtener más información, consulta Estado de actualización de comentarios.

Cómo insertar un comentario

Para insertar un hilo de comentarios en una presentación, usa el objeto InsertCommentRequest. Debes proporcionar el contenido del texto del comentario y la ubicación del ancla. La ubicación de anclaje debe especificar una de las siguientes opciones:

  • objectId: Es el ID del objeto de una página de diapositiva o un elemento de página (como una forma o una tabla) al que se anclará el comentario.
  • shapeTextAnchor: Ancla un comentario a un rango de texto en una forma.
  • tableCellTextAnchor: Ancla un comentario a un rango de texto en una celda de tabla.
  • tableAnchor: Ancla un comentario a un rango de celdas en una tabla.

En el siguiente ejemplo de JSON, se muestra cómo agregar un subproceso de comentarios anclado a una página de diapositiva:

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

Puedes asignar un comentario a un usuario específico si proporcionas su correo electrónico en el campo assigneeEmailAddress:

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

Agregar una respuesta o tomar medidas

Para responder a un hilo de comentarios, resolverlo o volver a abrirlo, usa el objeto AddCommentReplyRequest.

Debes proporcionar commentId y post, donde la respuesta se representa con un objeto Post.

El objeto Post contiene la respuesta content y, de manera opcional, puede especificar un commentAction (incluida la acción para RESOLVE o REOPEN el hilo de comentarios). Se representa con un objeto CommentActionType.

También puedes reasignar un hilo de comentarios especificando un nuevo assigneeEmail en el objeto Post.

En el siguiente ejemplo de JSON, se muestra cómo responder a un hilo de comentarios existente:

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

En el siguiente ejemplo de JSON, se muestra cómo resolver un debate:

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

Cómo editar una publicación

Para editar el contenido de texto de una publicación que creaste, usa el objeto UpdateCommentPostRequest. Debes especificar el commentId del subproceso, el postId de la publicación que deseas editar y el nuevo texto sin formato content.

En el siguiente ejemplo de JSON, se muestra cómo editar una publicación:

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

Borrar comentarios y respuestas

Para borrar comentarios y respuestas, tienes dos opciones:

  • Borra un hilo de comentarios: Para quitar un CommentThread completo, usa el objeto DeleteCommentRequest. Solo puedes borrar un hilo de comentarios si eres el autor del headPost del hilo en el objeto CommentThread.

  • Borra una respuesta: Para borrar una respuesta específica Post de un CommentThread, usa el objeto DeleteCommentReplyRequest. Solo puedes borrar las respuestas que escribiste. No puedes borrar publicaciones de respuesta que contengan un commentAction o un assigneeEmail.

En el siguiente ejemplo de JSON, se muestra cómo borrar un subproceso de comentarios:

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

Estado de actualización del comentario

Es posible que las solicitudes que requieren guardar subprocesos de comentarios (como insertar comentarios o agregar respuestas) experimenten fallas parciales. En estos casos, es posible que los cambios en el modelo de presentación (como la actualización del contenido o los fondos de las diapositivas) se confirmen correctamente, pero es posible que no se guarden los comentarios asociados.

Para verificar si las actualizaciones de comentarios se aplicaron correctamente, consulta el campo commentUpdateState en el cuerpo de la respuesta del método presentations.batchUpdate. El campo se representa con un objeto CommentUpdateState.

En CommentUpdateState, se muestran los siguientes estados:

  • NO_UPDATES_REQUESTED: No se solicitaron actualizaciones de comentarios en la operación por lotes.
  • ALL_SAVED: Se aplicaron correctamente todas las actualizaciones de comentarios solicitadas.
  • ALL_FAILED_UNKNOWN_REASON: No se pudieron guardar todas las actualizaciones de comentarios solicitadas, aunque se hayan confirmado otros cambios en la presentación.