Quản lý nhận xét

Google Trang trình bày cho phép người dùng cộng tác bằng cách thêm nhận xét vào các phần tử trên trang và trang trình bày.

Tài liệu này trình bày cách bạn có thể dùng Google Slides API để đọc, tạo, trả lời, cập nhật hoặc xoá nhận xét theo phương thức lập trình.

Đọc nhận xét

Khi bạn sử dụng phương thức get trên tài nguyên presentations để truy xuất một bản trình bày, theo mặc định, các chuỗi bình luận và điểm neo sẽ bị bỏ qua.

Để đưa bình luận vào phản hồi, hãy đặt tham số truy vấn commentsViewMode thành COMMENTS_VIEW_MODE_INCLUDED. Ngoài ra, nếu người dùng gọi có quyền truy cập vào bình luận trên tệp, thì việc đặt tham số truy vấn thành COMMENTS_VIEW_MODE_DEFAULT_FOR_CURRENT_ACCESS cũng sẽ trả về bình luận.

Cả trường commentscommentAnchors đều được trả về trong phản hồi.

Mã mẫu sau đây cho biết cách sử dụng yêu cầu get để truy xuất các chuỗi nhận xét và điểm neo của chuỗi nhận xét đó từ một bản trình bày:

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

Trong phản hồi, các bình luận sẽ được trả về ở hai vị trí:

  • Mảng comments chung chứa các đối tượng CommentThread.
  • Mảng commentAnchors chứa các đối tượng CommentAnchor ánh xạ mã nhận dạng điểm neo của bình luận đến vị trí của trang hoặc phần tử trang (điểm neo của đối tượng).

Đọc bình luận trên một trang cụ thể

Bạn cũng có thể truy xuất bình luận và điểm đánh dấu cho một trang cụ thể bằng phương thức pages.get trên tài nguyên presentations.pages. Đặt tham số truy vấn commentsViewMode để thêm bình luận cho mục tiêu trang cụ thể:

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

Phản hồi mẫu

Phản hồi JSON mẫu sau đây cho thấy một chuỗi bình luận được liên kết với một dải văn bản trong một hình dạng trên trang trình bày:

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

Tạo và quản lý bình luận

Bạn có thể thêm, chỉnh sửa và xoá bình luận hoặc câu trả lời theo cách lập trình bằng phương thức batchUpdate trên tài nguyên presentations.

Khi thực hiện các bản cập nhật hàng loạt liên quan đến bình luận, bạn nên theo dõi để tránh trường hợp thất bại một phần. Để biết thêm thông tin, hãy xem phần Trạng thái cập nhật bình luận.

Chèn nhận xét

Để chèn một chuỗi bình luận vào bản trình bày, hãy sử dụng đối tượng InsertCommentRequest. Bạn phải cung cấp nội dung văn bản của bình luận và vị trí của điểm đánh dấu. Vị trí của điểm neo phải chỉ định một trong những vị trí sau:

  • objectId: Mã nhận dạng đối tượng của một trang trình bày hoặc một phần tử trang (chẳng hạn như hình dạng hoặc bảng) để liên kết bình luận.
  • shapeTextAnchor: Liên kết một bình luận với một dải văn bản trong một hình dạng.
  • tableCellTextAnchor: Liên kết một bình luận với một dải văn bản trong một ô của bảng.
  • tableAnchor: Liên kết một bình luận với một dải ô trong bảng.

Mẫu JSON sau đây cho biết cách thêm một chuỗi bình luận được liên kết với một trang trình bày:

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

Bạn có thể chỉ định một bình luận cho một người dùng cụ thể bằng cách cung cấp email của họ trong trường assigneeEmailAddress:

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

Thêm câu trả lời hoặc thực hiện hành động

Để trả lời, giải quyết hoặc mở lại một chuỗi bình luận, hãy sử dụng đối tượng AddCommentReplyRequest.

Bạn phải cung cấp commentIdpost, trong đó câu trả lời được biểu thị bằng một đối tượng Post.

Đối tượng Post chứa câu trả lời content và có thể tuỳ ý chỉ định một commentAction (bao gồm cả hành động RESOLVE hoặc REOPEN chuỗi bình luận). Đối tượng này được biểu thị bằng một đối tượng CommentActionType.

Bạn cũng có thể chỉ định một assigneeEmail mới trong đối tượng Post để chỉ định lại một chuỗi bình luận.

Mẫu JSON sau đây cho thấy cách trả lời một chuỗi bình luận hiện có:

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

Mẫu JSON sau đây cho thấy cách giải quyết một chuỗi bình luận:

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

Chỉnh sửa bài đăng

Để chỉnh sửa nội dung văn bản của bài đăng mà bạn đã tạo, hãy sử dụng đối tượng UpdateCommentPostRequest. Bạn phải chỉ định commentId của luồng, postId của bài đăng mà bạn muốn chỉnh sửa và văn bản thuần tuý mới content.

Mẫu JSON sau đây cho thấy cách chỉnh sửa một bài đăng:

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

Xoá bình luận và câu trả lời

Bạn có thể xoá bình luận và phản hồi theo 2 cách:

  • Xoá một chuỗi bình luận: Để xoá toàn bộ CommentThread, hãy dùng đối tượng DeleteCommentRequest. Bạn chỉ có thể xoá một chuỗi bình luận nếu bạn là tác giả của headPost của chuỗi đó trong đối tượng CommentThread.

  • Xoá câu trả lời: Để xoá một câu trả lời cụ thể Post khỏi CommentThread, hãy dùng đối tượng DeleteCommentReplyRequest. Bạn chỉ có thể xoá những câu trả lời do mình viết. Bạn không thể xoá bài đăng phản hồi có chứa commentAction hoặc assigneeEmail.

Mẫu JSON sau đây cho thấy cách xoá một chuỗi bình luận:

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

Trạng thái cập nhật bình luận

Các yêu cầu cần lưu chuỗi bình luận (chẳng hạn như chèn bình luận hoặc thêm câu trả lời) có thể gặp phải lỗi một phần. Trong những trường hợp này, các thay đổi về mô hình trình bày (chẳng hạn như cập nhật nội dung hoặc hình nền của trang trình bày) có thể được thực hiện thành công, nhưng các bình luận liên quan có thể không lưu được.

Bạn có thể xác minh xem các nội dung cập nhật bình luận có được áp dụng thành công hay không bằng cách kiểm tra trường commentUpdateState trong phần nội dung phản hồi của phương thức presentations.batchUpdate. Trường này được biểu thị bằng một đối tượng CommentUpdateState.

Các trạng thái sau đây được trả về trong CommentUpdateState:

  • NO_UPDATES_REQUESTED: Không có yêu cầu cập nhật bình luận nào trong thao tác hàng loạt.
  • ALL_SAVED: Tất cả nội dung cập nhật bình luận được yêu cầu đều đã được áp dụng thành công.
  • ALL_FAILED_UNKNOWN_REASON: Không lưu được tất cả nội dung cập nhật bình luận được yêu cầu, mặc dù các thay đổi khác đối với bản trình bày có thể đã được lưu.