این صفحه نحوه جستجوی فایلها با برچسب یا مقدار فیلد خاص اعمال شده را شرح میدهد.
انواع فیلد برچسب
فیلدهای برچسب گوگل درایو از نوع Strongly Typed هستند و هر نوع، از نمایهسازی و معانی جستجوی متفاوتی پشتیبانی میکند. جدول زیر انواع دادههای موجود را نشان میدهد.
| نوع | گزینههای نوع برچسب | اپراتورهای جستجوی پشتیبانی شده |
|---|---|---|
| متن | گزینههای متن | is null, is not null, =, contains, starts with |
| متن طولانی | گزینههای LongText | is null, is not null, contains |
| عدد صحیح | گزینههای عدد صحیح | is null, is not null, =, !=, <, >, <=, >= |
| تاریخ | گزینههای تاریخ | is null, is not null, =, !=, <, >, <=, >= |
| انتخاب | گزینههای انتخاب | is null, is not null, =, != |
| کاربر | گزینههای کاربر | is null, is not null, =, != |
| فهرست انتخاب | گزینههای انتخاب (با max_entries > 1) | is null, is not null, in, not in |
| فهرست کاربران | گزینههای کاربر (با max_entries > 1) | is null, is not null, in, not in |
مثالهای جستجو
۱. جستجو بر اساس وجود یک برچسب یا فیلد
میتوانید مواردی را جستجو کنید که برچسب خاصی روی آنها اعمال شده (یا نشده است):
-
'labels/contract' in labels -
not 'labels/contract' in labels
همچنین میتوانید مواردی را جستجو کنید که یک فیلد خاص در آنها تنظیم شده است (یا نشده است):
-
labels/contract.comment IS NOT NULL -
labels/contract.comment IS NULL
۲. جستجو بر اساس فیلدهای تک مقداری
شما میتوانید کوئریهای جستجو را طوری بنویسید که با مقادیر مورد انتظار فیلدها مطابقت داشته باشند. جدول زیر کوئریهای معتبر فیلدها را نشان میدهد:
| آنچه میخواهید استعلام کنید | رشته پرس و جو |
|---|---|
| مواردی که مقدار comment آنها برابر با "hello" است | labels/contract.comment = 'hello' |
| فایلهایی که کامنت آنها با "hello" شروع میشود | labels/contract.comment STARTS WITH 'hello' |
| فایلهایی که وضعیت در آنها اجرا میشود | labels/contract.status = 'executed' |
| فایلهایی که وضعیت آنها اجرا نمیشود | labels/contract.status != 'executed' |
| فایلهایی که execution_date قبل از یک تاریخ خاص قرار دارد | labels/contract.execution_date < '2020-06-22' |
| فایلهایی که مقدار value_usd (عدد صحیح) آنها کمتر از یک مقدار خاص است | labels/contract.value_usd < 2000 |
| فایلهایی که در آنها client_contact روی یک آدرس ایمیل خاص تنظیم شده است | labels/contract.client_contact = 'alex@altostrat.com' |
۳. جستجو بر اساس فیلدهایی با فیلدهای چند مقداری (مانند ListOptions.max_entries > 1)
فیلدهایی که از چندین مقدار پشتیبانی میکنند، فقط با استفاده از عملگر IN قابل پرس و جو هستند:
-
' EMAIL_ADDRESS ' IN labels/project.project_leads -
NOT ' EMAIL_ADDRESS ' IN labels/project.project_leads
مثال
نمونه کد زیر نحوه استفاده از یک یا چند labelId برای فهرست کردن تمام فایلهای دارای برچسب یا مقدار فیلد خاص از یک منبع فایل Drive نشان میدهد. همچنین از متد files.list استفاده میکند. بدنه درخواست باید خالی باشد.
اگر میخواهید labelInfo در پاسخ قرار دهید، باید موارد زیر را نیز مشخص کنید:
includeLabelsبه عنوان لیستی از شناسههای جدا شده با کاما.labelInfoدر پارامترfieldsقرار دهید تا مشخص شود که میخواهیدlabelInfoدرونincludeLabelsبرگردانده شود.
در صورت موفقیت، بدنه پاسخ شامل لیست فایلها است.
جاوا
List<File> fileList = driveService.files().list().setIncludeLabels("LABEL_1_ID,LABEL_2_ID").setFields("items(labelInfo, id)").setQ("'labels/LABEL_1_ID' in labels and 'labels/LABEL_2_ID' in labels").execute().getItems();
پایتون
file_list = drive_service.files().list(includeLabels="LABEL_1_ID,LABEL_2_ID", q="'labels/LABEL_1_ID' in labels and 'labels/LABEL_2_ID' in labels", fields="items(labelInfo, id)").execute();
نود جی اس
/**
* Search for Drive files with specific labels
* @return{obj} file list with labelInfo
**/
async function searchForFileWithLabels() {
// Get credentials and build service
// TODO (developer) - Use appropriate auth mechanism for your app
const {GoogleAuth} = require('google-auth-library');
const {google} = require('googleapis');
const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
const service = google.drive({version: 'v3', auth});
try {
const fileList = await service.files.list({
includeLabels: 'LABEL_1_ID,LABEL_2_ID',
q: '\'labels/LABEL_1_ID\' in labels and \'labels/LABEL_2_ID\' in labels',
fields:'files(labelInfo, id)',
});
return file;
} catch (err) {
// TODO (developer) - Handle error
throw err;
}
موارد زیر را جایگزین کنید:
- LABEL_1_ID : اولین
labelIdاز یک برچسب که باید برگردانده شود. - LABEL_2_ID : دومین
labelIdاز یک برچسب که قرار است برگردانده شود.