חיפוש קבצים עם תווית או ערך שדה ספציפיים

בדף הזה מוסבר איך לחפש קבצים עם תווית ספציפית או ערך שדה ספציפי.

סוגי שדות התווית

לשדות התוויות ב-Google Drive יש סוג מוגדר, וכל סוג תומך בסמינטיקה שונה של הוספה לאינדקס וחיפוש. בטבלה הבאה מפורטים סוגי הנתונים הזמינים.

סוג אפשרויות של סוגי תוויות אופרטורים נתמכים לחיפוש
טקסט TextOptions is null, is not null, =, contains, starts with
טקסט ארוך LongTextOptions is null, is not null, contains
מספר שלם IntegerOptions is null, is not null, =, !=, <, >, <=, >=
תאריך DateOptions is null, is not null, =, !=, <, >, <=, >=
בחירה SelectionOptions is null, is not null, =, !=
משתמש UserOptions is null, is not null, =, !=
רשימת בחירה SelectionOptions (עם max_entries > 1) is null, is not null, in, not in
רשימת משתמשים UserOptions (עם max_entries > 1) is null, is not null, in, not in

1. חיפוש לפי נוכחות של תווית או שדה

אתם יכולים לחפש פריטים שהוחלפה עליהם תווית ספציפית (או שלא הוחלפה עליהם תווית כזו):

  • 'labels/contract' in labels
  • not 'labels/contract' in labels

אפשר גם לחפש פריטים שבהם שדה ספציפי הוגדר (או לא הוגדר):

  • labels/contract.comment IS NOT NULL
  • labels/contract.comment IS NULL

2. חיפוש לפי שדות עם ערך יחיד

אפשר לכתוב שאילתות חיפוש שתואמות לערכים הצפויים בשדות. בטבלה הבאה מפורטות שאילתות השדות התקינות:

מה רוצים לשלוח כשאוספים נתונים מחרוזת שאילתה
פריטים שבהם הערה מוגדרת כ-'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'

3. חיפוש על סמך שדות עם שדות עם ערכים מרובים (כמו 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.

אם הפעולה בוצעה בהצלחה, גוף התגובה יכלול את רשימת הקבצים.

Java

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();

Python

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();

Node.js

/**
* 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 השני של התווית להחזרה.