Google Slides позволяет пользователям совместно работать над слайдами и элементами страницы, добавляя комментарии.
В этом документе показано, как использовать API Google Slides для программного чтения, создания, ответа на комментарии, обновления или удаления комментариев.
Читать комментарии
При использовании метода get ресурса presentations для получения презентации комментарии и ссылки по умолчанию опускаются.
Чтобы включить комментарии в ответ, установите параметр запроса commentsViewMode в значение COMMENTS_VIEW_MODE_INCLUDED . Кроме того, если у вызывающего пользователя есть доступ к комментариям в файле, то установка параметра запроса в значение COMMENTS_VIEW_MODE_DEFAULT_FOR_CURRENT_ACCESS также вернет комментарии.
В ответе возвращаются как поля comments , так и commentAnchors .
В следующем примере кода показано, как использовать get запрос для получения веток комментариев и их ссылок из презентации:
GET https://slides.googleapis.com/v1/presentations/PRESENTATION_ID?commentsViewMode=COMMENTS_VIEW_MODE_INCLUDED&fields=presentationId,comments,slides(objectId,commentAnchors)
В ответе комментарии возвращаются в двух местах:
- Глобальный массив
comments, содержащий объектыCommentThread. - Массив
commentAnchors, содержащий объектыCommentAnchor, которые сопоставляют идентификаторы ссылок комментариев с местоположениями страниц или элементов страниц (объектными ссылками).
Прочитать комментарии на конкретной странице
Также вы можете получить комментарии и ссылки для конкретной страницы, используя метод pages.get ресурса presentations.pages . Установите параметр запроса commentsViewMode , чтобы включить комментарии для целевой страницы:
GET https://slides.googleapis.com/v1/presentations/PRESENTATION_ID/pages/PAGE_ID?commentsViewMode=COMMENTS_VIEW_MODE_INCLUDED&fields=objectId,comments,commentAnchors
Пример ответа
Приведенный ниже пример JSON-ответа демонстрирует ветку комментариев, привязанную к текстовому диапазону внутри фигуры на странице слайда:
{
"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"
}
Создавайте и управляйте комментариями.
Вы можете программно добавлять, редактировать и удалять комментарии или ответы, используя метод batchUpdate ресурса presentations .
При выполнении пакетных обновлений, затрагивающих комментарии, следует отслеживать возможные частичные сбои. Дополнительную информацию см. в разделе «Статус обновления комментариев» .
Оставьте комментарий
Для вставки ветки комментариев в презентацию используйте объект InsertCommentRequest . Необходимо указать текст комментария и местоположение ссылки. Местоположение ссылки должно соответствовать одному из следующих значений:
-
objectId: Идентификатор объекта страницы слайда или элемента страницы (например, фигуры или таблицы), к которому привязан комментарий. -
shapeTextAnchor: Привязывает комментарий к диапазону текста внутри фигуры. -
tableCellTextAnchor: Привязывает комментарий к диапазону текста в ячейке таблицы. -
tableAnchor: Привязывает комментарий к диапазону ячеек в таблице.
В следующем примере JSON показано, как добавить ветку комментариев, привязанную к странице слайда:
{
"requests": [
{
"insertComment": {
"content": "This is a comment added using the API.",
"objectId": "SLIDE_PAGE_ID"
}
}
]
}
Вы можете назначить комментарий конкретному пользователю, указав его адрес электронной почты в поле assigneeEmailAddress :
{
"requests": [
{
"insertComment": {
"content": "Please review this slide.",
"assigneeEmailAddress": "ASSIGNEE_EMAIL_ADDRESS",
"objectId": "SLIDE_PAGE_ID"
}
}
]
}
Добавить комментарий или предпринять действия
Для ответа на ветку комментариев, разрешения или повторного открытия ветки используйте объект AddCommentReplyRequest .
Необходимо указать commentId и post , в котором ответ представлен объектом Post .
Объект Post содержит content ответа и может дополнительно указывать commentAction (включая действие RESOLVE или REOPEN ветки комментариев). Он представлен объектом CommentActionType .
Также можно переназначить ветку комментариев, указав новый assigneeEmail в объекте Post .
В следующем примере JSON показано, как ответить на существующую ветку комментариев:
{
"requests": [
{
"addCommentReply": {
"commentId": "COMMENT_ID",
"post": {
"content": "Replying to the comment thread."
}
}
}
]
}
Следующий пример JSON демонстрирует, как обрабатывать ветку комментариев:
{
"requests": [
{
"addCommentReply": {
"commentId": "COMMENT_ID",
"post": {
"commentAction": "RESOLVE"
}
}
}
]
}
Редактировать сообщение
Для редактирования текстового содержимого созданного вами сообщения используйте объект UpdateCommentPostRequest . Необходимо указать commentId темы, postId сообщения, которое вы хотите отредактировать, и новое текстовое content .
В следующем примере JSON показано, как редактировать сообщение:
{
"requests": [
{
"updateCommentPost": {
"commentId": "COMMENT_ID",
"postId": "POST_ID",
"content": "This is the updated comment text."
}
}
]
}
Удалять комментарии и ответы
Для удаления комментариев и ответов у вас есть два варианта:
Удаление ветки комментариев: Чтобы удалить всю
CommentThread, используйте объектDeleteCommentRequest. Вы можете удалить ветку комментариев только в том случае, если являетесь авторомheadPostветки в объектеCommentThread.Удаление ответа: Чтобы удалить конкретный ответ из
PostCommentThread, используйте объектDeleteCommentReplyRequest. Вы можете удалять только ответы, которые вы написали. Вы не можете удалять ответы, содержащиеcommentActionилиassigneeEmail.
В следующем примере JSON показано, как удалить ветку комментариев:
{
"requests": [
{
"deleteComment": {
"commentId": "COMMENT_ID"
}
}
]
}
Статус обновления комментария
Запросы, требующие сохранения веток комментариев (например, вставка комментариев или добавление ответов), могут частично завершаться с ошибкой. В таких случаях изменения модели презентации (например, обновление содержимого слайдов или фона) могут быть успешно зафиксированы, но связанные с ними комментарии могут не сохраниться.
Проверить успешность применения обновлений комментариев можно, проверив поле commentUpdateState в теле ответа метода presentations.batchUpdate . Это поле представлено объектом CommentUpdateState .
В CommentUpdateState возвращаются следующие состояния:
-
NO_UPDATES_REQUESTED: В пакетной операции не было запрошено ни одного обновления комментариев. -
ALL_SAVED: Все запрошенные обновления комментариев были успешно применены. -
ALL_FAILED_UNKNOWN_REASON: Все запрошенные обновления комментариев не удалось сохранить, даже несмотря на то, что другие изменения в презентации могли быть внесены.