โมเดลข้อมูล API กิจกรรมของไดรฟ์

คู่มือนี้จะอธิบายองค์ประกอบหลักของการตอบกลับใน API กิจกรรม Google ไดรฟ์ โดยแสดงตัวอย่างและวิธีตีความ

วัตถุ

  • DriveActivity - ทรัพยากรหลักที่การค้นหาส่งกลับไปยัง API กิจกรรมของไดรฟ์คือทรัพยากรหลัก ซึ่งเป็นการอธิบายถึงนักแสดงอย่างน้อย 1 คนที่ดำเนินการอย่างน้อย 1 อย่าง ซึ่งจะส่งผลต่อเป้าหมายอย่างน้อย 1 เป้าหมาย

  • Timestamp และ TimeRange - คําอธิบายนี้จะเป็นช่วงเวลาเดียวที่เกิดกิจกรรม หรือจุดเริ่มต้นและสิ้นสุดเมื่อกิจกรรมเกิดขึ้นในช่วงระยะเวลาหนึ่งตามลำดับ

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

  • Target - Target คือออบเจ็กต์ของกิจกรรม เช่น ไฟล์ โฟลเดอร์ ไดรฟ์ที่แชร์ หรือความคิดเห็นในไฟล์ โปรดทราบว่าประเภทการทำงานจำนวนมากรองรับเป้าหมายมากกว่า 1 ประเภท ตัวอย่างเช่น แม้ว่าโดยทั่วไปแล้ว Edit จะใช้กับไฟล์ในไดรฟ์ แต่การดำเนินการอื่นๆ เช่น Rename และ Create ก็ใช้ได้กับโฟลเดอร์ไดรฟ์และไดรฟ์ที่แชร์ด้วยเช่นกัน เป้าหมายที่ไม่ใช่รายการในไดรฟ์ ยังสามารถอ้างอิงถึงรายการใดรายการหนึ่ง เช่น โฟลเดอร์รูทของไดรฟ์หรือเอกสารหลักที่มีความคิดเห็นในไฟล์

  • Action - ทรัพยากร DriveActivity แต่ละรายการจะมีการดำเนินการที่เกี่ยวข้องอย่างน้อย 1 รายการ Action มีลักษณะในตัวเช่นเดียวกับเหตุการณ์ เพราะไม่เพียงประกอบด้วยประเภทและข้อมูลอย่างละเอียดเกี่ยวกับการดําเนินการ แต่ยังรวมถึง Actor, Target และ Timestamp หรือ TimeRange ด้วย เพื่อหลีกเลี่ยงความซ้ำซ้อน Action จะไม่ป้อนข้อมูลในช่อง Target, Actor หรือเวลาของตัวเองเมื่อช่องเหล่านั้นเหมือนกับ DriveActivity โดยรวม

  • ActionDetail - เป็นประเภทที่เฉพาะเจาะจงและข้อมูลโดยละเอียดเกี่ยวกับ Action ตัวอย่างเช่น รายละเอียดการดำเนินการ Move จะระบุตำแหน่งต้นทางและปลายทาง และ PermissionChange จะระบุผู้ที่มีสิทธิ์เข้าถึงเอกสารและระบุสิทธิ์ที่ต้องการ

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

ผู้ใช้แก้ไขไฟล์ในไดรฟ์

ทรัพยากร DriveActivity แบบง่ายอาจมีการดำเนินการเพียง 1 รายการ เช่น ผู้ใช้กำลังแก้ไข 1 ไฟล์

"activities":[{
  "primary_action_detail":{ "edit":{} },
  "actors":[ { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID" } } } ],
  "targets":[ { "drive_item":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } } ],
  "timestamp":{ "seconds":"1536794657", "nanos":791000000 },
  "actions":[ { "detail":{ "edit":{} } } ]
}]

เอาต์พุตนี้จะมีค่าต่อไปนี้

  • ACCOUNT_ID: รหัสผู้ใช้ โดยจะใช้กับ People API เพื่อรับข้อมูลเพิ่มเติมได้
  • ITEM_ID: รหัสของรายการในไดรฟ์
  • TITLE: ชื่อรายการในไดรฟ์

โปรดทราบว่า Action ในการตอบกลับนี้ไม่รวม Actor, Target หรือ TimeStamp เนื่องจากเหมือนกันกับ DriveActivity โดยรวม

ผู้ใช้ 2 คนแก้ไขไฟล์เดียวกันพร้อมกัน

เมื่อเปิดการรวม ระบบจะจัดกลุ่มการดำเนินการที่เกี่ยวข้องเป็น DriveActivity รายการเดียว ในตัวอย่างนี้ เราจัดกลุ่มการกระทำที่คล้ายกัน 2 อย่าง ได้แก่ การกระทำ Edit 1 ประเภทจากผู้ใช้ 2 คน

"activities":[{
  "primary_action_detail":{ "edit":{} },
  "actors":[
    { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_1" } } },
    { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_2" } } }
  ],
  "targets":[
    { "drive_item":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } }
  ],
  "time_range":{
    "start_time":{ "seconds":"1541089823", "nanos":712000000 },
    "end_time":{ "seconds":"1541089830", "nanos":830000000 }
  },
  "actions":[
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_1" } } },
      "timestamp":{ "seconds":"1541089830", "nanos":830000000 }
    },
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_2" } } },
      "timestamp":{ "seconds":"1541089823", "nanos":712000000 }
    }
  ]
}]

เอาต์พุตนี้จะมีค่าต่อไปนี้

  • ACCOUNT_ID_1: รหัสของผู้ใช้รายแรก โดยจะใช้กับ People API เพื่อรับข้อมูลเพิ่มเติมได้
  • ACCOUNT_ID_2: รหัสของผู้ใช้รายที่ 2
  • ITEM_ID: รหัสของรายการในไดรฟ์
  • TITLE: ชื่อรายการในไดรฟ์

โปรดทราบว่าการดำเนินการในการตอบกลับนี้ไม่รวม Target เนื่องจากเหมือนกับ DriveActivity โดยรวม

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

ผู้ใช้ย้ายไฟล์ 2 รายการไปยังไดเรกทอรีใหม่:

ในตัวอย่างนี้ กลยุทธ์การรวมได้จัดกลุ่มการดำเนินการ Move ที่เกี่ยวข้อง 2 รายการ เนื่องจากมีการย้ายไฟล์จากแหล่งที่มาเดียวกันไปยังปลายทางเดียวกันในเวลาเดียวกัน

"activities":[{
  "primary_action_detail":{
    "move":{
      "added_parents":[ { ... } ]
      "removed_parents":[ { ... } ]
    }
  },
  "actors":[ { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID" } } } ],
  "targets":[
    { "drive_item":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } },
    { "drive_item":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
  ],
  "timestamp":{ "seconds":"1541090960", "nanos":985000000 },
  "actions":[
    {
      "detail":{ "move":{ "added_parents":[ { ... } ] "removed_parents":[ { ... } ] } },
      "target":{ "drive_item":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } }
    },
    {
      "detail":{ "move":{ "added_parents":[ { ... } ] "removed_parents":[ { ... } ] } },
      "target":{ "drive_item":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
    }
  ]
}]

เอาต์พุตนี้จะมีค่าต่อไปนี้

  • ACCOUNT_ID: รหัสผู้ใช้ โดยจะใช้กับ People API เพื่อรับข้อมูลเพิ่มเติมได้
  • ITEM_ID_1: รหัสของรายการแรกในไดรฟ์
  • ITEM_ID_2: รหัสของรายการในไดรฟ์ที่ 2
  • TITLE_1: ชื่อของรายการแรกในไดรฟ์
  • TITLE_2: ชื่อของรายการในไดรฟ์ที่ 2

โปรดทราบว่าการดำเนินการในการตอบกลับนี้จะไม่รวม Actor หรือ TimeStamp เนื่องจากเหมือนกันกับ DriveActivity โดยรวม