สร้างคำขอใน 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 ที่เกี่ยวข้อง เช่น นักแสดงหลายคนแก้ไข 1 รายการ หรือ Actor 1 รายการย้ายไฟล์หลายไฟล์ไปยังโฟลเดอร์ไดรฟ์ใหม่

แม้ว่า Action แต่ละรายการจะมี Actor 1 รายการและ Target 1 รายการ แต่หลังจากจัดกลุ่มแล้ว 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"
}