本指南說明如何使用 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 個欄位:time
和 detail.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": {}
}
}
針對雲端硬碟項目要求所有 MOVE
和 RENAME
動作:
{
"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"
}