จัดการความคิดเห็น

Google สไลด์ช่วยให้ผู้ใช้ทำงานร่วมกันได้โดยการแสดงความคิดเห็นในสไลด์และองค์ประกอบของหน้า

เอกสารนี้แสดงวิธีใช้ Google สไลด์ API เพื่ออ่าน สร้าง ตอบ อัปเดต หรือลบความคิดเห็นแบบเป็นโปรแกรม

อ่านความคิดเห็น

เมื่อใช้เมธอด 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)

ในการตอบกลับ ระบบจะแสดงความคิดเห็นใน 2 ตำแหน่งต่อไปนี้

  • อาร์เรย์ 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 คุณต้องระบุเนื้อหาข้อความของความคิดเห็นและตำแหน่งของ Anchor ตำแหน่งของ Anchor ต้องระบุอย่างใดอย่างหนึ่งต่อไปนี้

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

ลบความคิดเห็นและการตอบกลับ

คุณมี 2 ตัวเลือกในการลบความคิดเห็นและการตอบกลับ

  • ลบชุดข้อความของความคิดเห็น: หากต้องการนำ CommentThread ออกทั้งหมด ให้ใช้วัตถุ DeleteCommentRequest คุณจะลบชุดความคิดเห็นได้ก็ต่อเมื่อเป็นผู้เขียนheadPost ของชุดความคิดเห็นนั้นในออบเจ็กต์ CommentThread

  • ลบการตอบ: หากต้องการลบการตอบที่เฉพาะเจาะจง Post จาก CommentThread ให้ใช้ DeleteCommentReplyRequest ออบเจ็กต์ คุณจะลบได้เฉพาะคำตอบที่คุณเขียนเท่านั้น คุณไม่สามารถลบโพสต์ตอบกลับที่มี commentAction หรือ assigneeEmail

ตัวอย่าง JSON ต่อไปนี้แสดงวิธีลบเธรดความคิดเห็น

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

สถานะการอัปเดตความคิดเห็น

คำขอที่ต้องบันทึกชุดความคิดเห็น (เช่น การแทรกความคิดเห็นหรือ การเพิ่มคำตอบ) อาจทำงานไม่สำเร็จบางส่วน ในกรณีเหล่านี้ การเปลี่ยนแปลงโมเดลการนำเสนอ (เช่น การอัปเดตเนื้อหาหรือพื้นหลังของสไลด์) อาจ ได้รับการยืนยันสำเร็จ แต่ความคิดเห็นที่เชื่อมโยงอาจบันทึกไม่สำเร็จ

คุณตรวจสอบได้ว่าการอัปเดตความคิดเห็นมีผลสำเร็จหรือไม่โดยดูฟิลด์ commentUpdateState ในเนื้อหาการตอบกลับของเมธอด presentations.batchUpdate ฟิลด์ แสดงโดยออบเจ็กต์ CommentUpdateState

ระบบจะแสดงสถานะต่อไปนี้ใน CommentUpdateState

  • NO_UPDATES_REQUESTED: ไม่มีการขออัปเดตความคิดเห็นในการดำเนินการแบบกลุ่ม
  • ALL_SAVED: เราได้อัปเดตความคิดเห็นทั้งหมดที่คุณขอแล้ว
  • ALL_FAILED_UNKNOWN_REASON: การอัปเดตความคิดเห็นที่ขอทั้งหมดบันทึกไม่สำเร็จ แม้ว่าการเปลี่ยนแปลงอื่นๆ ในงานนำเสนออาจได้รับการบันทึกแล้วก็ตาม