สร้างคำขอใน Google Drive Activity API

คู่มือนี้จะอธิบายวิธีส่งคำขอใน Google Drive Activity API โดยใช้เมธอด activity.query

คีย์การค้นหา

คุณขอกิจกรรมได้ 2 วิธี ได้แก่ ตามรายการใน Google ไดรฟ์ หรือสำหรับทุกอย่างที่อยู่ภายใต้ลําดับชั้นโฟลเดอร์

  • itemName: รูปแบบของคีย์นี้คือ "items/ITEM_ID" โดยปกติแล้วไฟล์นี้จะเป็นไฟล์ในไดรฟ์ หากคุณระบุโฟลเดอร์สำหรับคีย์นี้ ระบบจะแสดงกิจกรรมสำหรับโฟลเดอร์ เช่น เวลาที่สร้างหรือเปลี่ยนชื่อ

  • ancestorName: รูปแบบของคีย์นี้คือ "items/ITEM_ID" และการตอบกลับจะรวมกิจกรรมในรายการทั้งหมดในซับต้นไม้ใต้โฟลเดอร์นี้

หากไม่ได้ตั้งค่าคีย์ ระบบจะใช้ ancestorName ของ "items/root" โดยค่าเริ่มต้น และแสดงกิจกรรมของรายการทั้งหมดในไดรฟ์

การใส่เลขหน้า

ช่อง pageSize ช่วยให้คุณขอจํานวนกิจกรรมโดยประมาณที่จะแสดงในการตอบกลับแต่ละรายการได้ จํานวนจริงของกิจกรรมที่แสดงผลจะแตกต่างกันไป ดังนั้นแอปของคุณควรจัดการกับจํานวนที่ไม่เจาะจงในการตอบกลับ

ขนาดหน้าเว็บถูกจํากัด หากแอปต้องใช้กิจกรรมหลายรายการ ให้ส่งคำขอหลายรายการโดยใช้การแบ่งหน้าแทนการตั้งค่า pageSize เป็นค่าสูง กล่าวโดยละเอียดคือ หากมีกิจกรรมที่จะดึงข้อมูลมากกว่าที่รวมอยู่ในการตอบกลับ การตอบกลับจะมี nextPageToken ด้วย หากต้องการเรียกดูผลลัพธ์เพิ่มเติม ให้ส่งคำขอเดิมซ้ำ แต่เพิ่มช่อง pageToken ที่มีค่าเป็น nextPageToken จากการตอบกลับก่อนหน้านี้

การรวม

ออบเจ็กต์ Action มักจะจัดกลุ่มและแสดงผลภายในแหล่งข้อมูล DriveActivity รายการเดียว การจัดกลุ่มActionบางอย่างจะเกิดขึ้นเอง เช่น การย้ายรายการไปยังโฟลเดอร์ที่แชร์จะทริกเกอร์การเปลี่ยนแปลงสิทธิ์

นอกจากนี้ คุณยังระบุ ConsolidationStrategy (บางครั้งเรียกว่าการรวมกลุ่มหรือการจัดกลุ่ม) ในคำขอได้ด้วย ซึ่งจะช่วยให้คุณจัดกลุ่มวัตถุ Action ที่เกี่ยวข้องอื่นๆ ได้ เช่น ผู้ดําเนินการหลายคนที่แก้ไขรายการเดียว หรือ Actor รายการหนึ่งที่ย้ายไฟล์หลายรายการไปยังโฟลเดอร์ใหม่ในไดรฟ์

แม้ว่า Action แต่ละรายการจะมี Actor รายการเดียวและ Target รายการเดียว แต่หลังจากการจัดกลุ่มแล้ว DriveActivity ที่ได้อาจมีผู้ดําเนินการและเป้าหมายหลายรายการ อย่างไรก็ตาม แม้จะมีการจัดกลุ่มแล้ว การดำเนินการ "หลัก" ที่จะแสดงถึงหรือสำคัญที่สุดสําหรับการดําเนินการทั้งหมดในแหล่งข้อมูล DriveActivity จะยังคงมีอยู่เสมอ ทั้งนี้ขึ้นอยู่กับกลยุทธ์การรวมที่ขอ

ด้วยเหตุนี้ การเปิดการรวมหรือไม่จึงอาจเพียงพอสำหรับลูกค้าจํานวนมากที่จะดูเฉพาะเนื้อหาระดับบนสุดของทรัพยากร DriveActivity (เช่น ตัวแทนและเป้าหมายแบบรวมภายใน primaryActionDetail) และละเว้นการดําเนินการโดยละเอียดในการตอบกลับ

ตัวกรอง

คุณสามารถจํากัดการดําเนินการที่อาจแสดงในDriveActivityแหล่งข้อมูลโดยสร้างสตริง filter ในคําขอ activity.query ช่องที่รองรับมี 2 ช่อง ได้แก่ time และ detail.action_detail_case

กรองตามเวลา

หากต้องการจํากัดการดําเนินการตามช่วงเวลา ให้ระบุชื่อช่อง time พร้อมโอเปอเรเตอร์ตัวเลขในค่าวันที่ โดยต่อด้วย "AND" (ไม่บังคับ) ใช้มิลลิวินาทีนับตั้งแต่วันที่ 1 มกราคม 1970 หรือรูปแบบ RFC 3339 เช่น

  • time > 1452409200000 AND time <= 1492812924310
  • time >= "2016-01-10T01:02:03-05:00"

กรองตามประเภท

หากต้องการจํากัดตามประเภทการดําเนินการ ให้ใช้ชื่อช่อง detail.action_detail_case กับโอเปอเรเตอร์ "has" (:) ใช้ค่าเดี่ยวหรือรายการประเภทการดําเนินการที่อนุญาตโดยใส่ไว้ในวงเล็บ โดยคั่นด้วยเว้นวรรค หากต้องการดูรายการประเภทการดำเนินการ ให้ตรวจสอบออบเจ็กต์ ActionDetail

หากต้องการยกเว้นประเภทการดําเนินการจากการตอบกลับ ให้ใส่ขีดกลาง (-) ไว้ที่ด้านหน้าของสตริงตัวกรอง

ตัวอย่างประเภทการดำเนินการมีดังนี้

  • detail.action_detail_case:RENAME
  • detail.action_detail_case:(CREATE RESTORE)
  • -detail.action_detail_case:MOVE

ชุดค่าผสม

เงื่อนไขการกรองเหล่านี้สามารถรวมกันภายในสตริง filter เดียวได้ เช่น

  • detail.action_detail_case:(CREATE EDIT RESTORE) time > 1452409200000

ตัวอย่างคำขอ

ขอกิจกรรมล่าสุด 10 รายการสำหรับรายการในไดรฟ์

{
  "itemName": "items/ITEM_ID",
  "pageSize": 10
}

ขอกิจกรรมแบบรวมสำหรับรายการไดรฟ์ทุกรายการที่อยู่ใต้โฟลเดอร์หลัก

{
  "ancestorName": "items/ITEM_ID",
  "consolidationStrategy": {
    "legacy": {}
  }
}

วิธีส่งคำขอการดำเนินการทั้งหมดของ MOVE และ RENAME ในรายการในไดรฟ์

{
  "itemName": "items/ITEM_ID",
  "filter": "detail.action_detail_case:(MOVE RENAME)"
}

ขอกิจกรรมทั้งหมดตั้งแต่วันที่ 1 มกราคม 2018 เวลา EST

{
  "ancestorName": "items/root",
  "filter": "time >= \"2018-01-01T00:00:00-05:00\""
}

ขอกิจกรรมทั้งหมดยกเว้นการดำเนินการ EDIT ในช่วงเดือนมิถุนายน 2017 (UTC)

{
  "ancestorName": "items/root",
  "filter": "time >= \"2018-06-01T00:00:00Z\" time < \"2018-07-01T00:00:00Z\" -detail.action_detail_case:EDIT"
}