コメントを管理する

Google スライドでは、スライドやページ要素にコメントを追加して共同作業を行うことができます。

このドキュメントでは、Google スライド API を使用して、コメントの読み取り、作成、返信、更新、削除をプログラムで行う方法について説明します。

コメントの閲覧

presentations リソースで get メソッドを使用してプレゼンテーションを取得すると、コメント スレッドとアンカーはデフォルトで省略されます。

レスポンスにコメントを含めるには、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)

レスポンスでは、コメントは次の 2 か所で返されます。

  • CommentThread オブジェクトを含むグローバル comments 配列。
  • コメント アンカー ID をページまたはページ要素の場所(オブジェクト アンカー)にマッピングする CommentAnchor オブジェクトを含む commentAnchors 配列。

特定のページのコメントを読み上げる

presentations.pages リソースの pages.get メソッドを使用して、特定のページのコメントとアンカーを取得することもできます。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"
}

コメントを作成、管理する

presentations リソースの batchUpdate メソッドを使用すると、コメントや返信をプログラムで追加、編集、削除できます。

コメントを含むバッチ更新を実行する場合は、部分的な障害が発生する可能性をモニタリングする必要があります。詳しくは、コメントの更新ステータスをご覧ください。

コメントを挿入します。

コメント スレッドをプレゼンテーションに挿入するには、InsertCommentRequest オブジェクトを使用します。コメント テキストの内容とアンカーの位置を指定する必要があります。アンカーの場所では、次のいずれかを指定する必要があります。

  • objectId: コメントをアンカーするスライド ページまたはページ要素(図形や表など)のオブジェクト ID。
  • 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 オブジェクトを使用します。

返信は Post オブジェクトで表されます。commentIdpost を指定する必要があります。

Post オブジェクトには返信 content が含まれており、必要に応じて commentAction(コメント スレッドを RESOLVE または REOPEN するアクションを含む)を指定できます。CommentActionType オブジェクトで表されます。

Post オブジェクトで新しい assigneeEmail を指定して、コメント スレッドを再割り当てすることもできます。

次の 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."
      }
    }
  ]
}

コメントと返信を削除する

コメントと返信を削除するには、次の 2 つの方法があります。

  • コメント スレッドを削除する: CommentThread 全体を削除するには、DeleteCommentRequest オブジェクトを使用します。コメント スレッドを削除できるのは、CommentThread オブジェクト内のスレッドの headPost の作成者のみです。

  • 返信を削除する: CommentThread から特定の返信 Post を削除するには、DeleteCommentReplyRequest オブジェクトを使用します。削除できるのは、自分が作成した返信のみです。commentAction または assigneeEmail を含む返信投稿は削除できません。

次の JSON サンプルは、コメント スレッドを削除する方法を示しています。

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

コメントの更新ステータス

コメント スレッドの保存を必要とするリクエスト(コメントの挿入や返信の追加など)では、部分的なエラーが発生する可能性があります。このような場合、プレゼンテーション モデルの変更(スライドのコンテンツや背景の更新など)は正常に commit されることがありますが、関連付けられたコメントは保存されないことがあります。

コメントの更新が正常に適用されたかどうかは、presentations.batchUpdate メソッドのレスポンス本文の commentUpdateState フィールドを確認することで確認できます。このフィールドは、CommentUpdateState オブジェクトで表されます。

CommentUpdateState で返される状態は次のとおりです。

  • NO_UPDATES_REQUESTED: バッチ オペレーションでコメントの更新がリクエストされませんでした。
  • ALL_SAVED: リクエストされたコメントの更新がすべて正常に適用されました。
  • ALL_FAILED_UNKNOWN_REASON: 他のプレゼンテーションの変更は commit された可能性があるにもかかわらず、リクエストされたコメントの更新がすべて保存されませんでした。