این راهنما نحوه درخواست در Google Drive Activity API را با استفاده از روش activity.query توضیح می دهد.
کلید پرس و جو
2 راه برای درخواست فعالیت وجود دارد: توسط مورد Google Drive یا برای هر چیزی که در زیر سلسله مراتب پوشه قرار دارد.
itemName: قالب این کلید "Items/ITEM_ID" است. معمولاً این یک فایل در Drive است. اگر پوشه ای را برای این کلید مشخص کنید، فعالیت آن پوشه مانند زمان ایجاد یا تغییر نام آن را نشان می دهد.ancestorName: قالب این کلید "Items/ITEM_ID" است و پاسخ شامل فعالیت در همه موارد در زیر درخت زیر این پوشه است.
وقتی کلیدی تنظیم نشده باشد، بهطور پیشفرض از ancestorName «items/root» استفاده میکند و فعالیت را برای همه موارد در Drive شما نشان میدهد.
صفحه بندی
فیلد pageSize به شما امکان می دهد در هر پاسخ تعداد تقریبی فعالیت ها را درخواست کنید. تعداد واقعی فعالیت های برگشتی متفاوت خواهد بود، بنابراین برنامه شما باید مقادیر دلخواه را در پاسخ مدیریت کند.
اندازه صفحه محدود است. اگر برنامه شما به فعالیتهای زیادی نیاز دارد، بهجای تنظیم مقدار زیادی برای pageSize ، با استفاده از صفحهبندی، درخواستهای متعددی را انجام دهید. به طور خاص، اگر ممکن است فعالیت بیشتری نسبت به آنچه در پاسخ وجود دارد برای واکشی وجود داشته باشد، پاسخ همچنین حاوی nextPageToken خواهد بود. برای بازیابی نتایج بیشتر، همان درخواست را تکرار کنید اما یک قسمت pageToken با مقدار nextPageToken از پاسخ قبلی اضافه کنید.
تحکیم
اشیاء Action اغلب در یک منبع DriveActivity گروه بندی و برگردانده می شوند. برخی از گروهبندیهای Action به صورت خود به خود رخ میدهند، مانند انتقال یک مورد به یک پوشه مشترک که باعث تغییر مجوز میشود.
همچنین میتوانید یک ConsolidationStrategy (که گاهی به آن تجمیع یا دستهبندی میگویند) در درخواست مشخص کنید. این کار گروه بندی دیگری از اشیاء Action مرتبط را فعال می کند، مانند چندین بازیگر که یک مورد را ویرایش می کنند، یا یک Actor چندین فایل را به یک پوشه Drive جدید منتقل می کند.
در حالی که یک Action فردی یک Actor و یک Target دارد، پس از گروه بندی، DriveActivity حاصل می تواند چندین بازیگر و چندین هدف داشته باشد. با این حال، حتی پس از گروهبندی، بسته به استراتژی تلفیق درخواستی، یک اقدام «اصلی» وجود دارد که یا نماینده یا مهمترین عملکرد در منبع DriveActivity است.
در نتیجه، صرف نظر از اینکه Consolidation روشن باشد یا خیر، ممکن است برای بسیاری از مشتریان کافی باشد که فقط محتوای سطح بالای یک منبع 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 فعالیت اخیر را برای یک مورد Drive درخواست کنید:
{
"itemName": "items/ITEM_ID",
"pageSize": 10
}
درخواست فعالیتهای تلفیقی برای هر مورد Drive در زیر یک پوشه اجدادی:
{
"ancestorName": "items/ITEM_ID",
"consolidationStrategy": {
"legacy": {}
}
}
درخواست تمام اقدامات MOVE و RENAME در مورد Drive:
{
"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 ، در ژوئن ۲۰۱۷ UTC:
{
"ancestorName": "items/root",
"filter": "time >= \"2018-06-01T00:00:00Z\" time < \"2018-07-01T00:00:00Z\" -detail.action_detail_case:EDIT"
}