فایل هایی با برچسب یا مقدار فیلد خاص را جستجو کنید

این صفحه نحوه جستجوی فایل‌ها با برچسب یا مقدار فیلد خاص اعمال شده را شرح می‌دهد.

انواع فیلد برچسب

فیلدهای برچسب گوگل درایو از نوع 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 از یک برچسب که قرار است برگردانده شود.