透過 Google Drive Activity API 提出要求

本指南說明如何使用 activity.query 方法在 Google Drive Activity API 中提出要求。

查詢鍵

您可以透過 2 種方式要求活動:依據 Google 雲端硬碟項目,或依據資料夾階層下的所有項目。

  • itemName:這個鍵的格式為「items/ITEM_ID」。通常是指 Google 雲端硬碟中的檔案。如果您為這個索引鍵指定資料夾,系統就會顯示該資料夾的活動,例如建立或重新命名資料夾的時間。

  • ancestorName:這個鍵的格式為「items/ITEM_ID」,回應內容包含這個資料夾下方子目錄中所有項目的活動。

如果未設定鍵,系統預設會使用「items/root」的 ancestorName,並顯示 Drive 中所有項目的活動。

分頁

pageSize 欄位可讓您要求在每個回應中傳回的活動數量。實際傳回的活動數量會有所不同,因此應用程式應在回應中處理任意數量。

頁面大小受限。如果您的應用程式需要許多活動,請使用分頁功能提出多項要求,而不要為 pageSize 設定較大的值。具體來說,如果要擷取的活動比回應中所包含的還要多,回應也會包含 nextPageToken。如要擷取更多結果,請重複相同要求,但新增 pageToken 欄位,並將先前回應中的 nextPageToken 值設為該欄位的值。

合併

Action 物件通常會在單一 DriveActivity 資源中分組並傳回。有些 Action 群組會自然產生,例如將項目移至共用資料夾會觸發權限變更。

您也可以在要求中指定 ConsolidationStrategy (有時稱為匯總或批次)。這可讓其他相關 Action 物件進行分組,例如多個角色編輯同一個項目,或是一個 Actor 將多個檔案移至新的雲端硬碟資料夾。

雖然個別 Action 有一個 Actor 和一個 Target,但在分組後,產生的 DriveActivity 可以有多個演算元件和多個目標。不過,即使已完成分組,仍會有「主要」動作,這類動作代表 DriveActivity 資源中所有動作,或為最重要的動作,具體取決於所要求的合併策略。

因此,無論是否已開啟整合功能,許多用戶端只要查看 DriveActivity 資源的頂層內容 (例如 primaryActionDetail 中的集體行為者和目標),並忽略回應中的詳細動作,就足以滿足需求。

篩選器

您可以在 activity.query 要求中建構 filter 字串,藉此限制 DriveActivity 資源可能傳回的動作。支援 2 個欄位:timedetail.action_detail_case

依時間篩選

如要依時間範圍限制動作,請在日期值上指定欄位名稱 time 和數值運算子,並以選用的「AND」連接。請使用自 1970 年 1 月 1 日起的毫秒數,或 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": {}
  }
}

針對雲端硬碟項目要求所有 MOVERENAME 動作:

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

要求自 2018 年 1 月 1 日以來的所有活動:

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

請要求 2017 年 6 月 (世界標準時間) 期間的所有活動 (EDIT 動作除外):

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