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

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

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

השדות של התוויות ב-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 השני של תווית שצריך להחזיר.