Belirli bir etiket veya alan değeri olan dosyaları arayın

Bu sayfada, belirli bir etiket veya alan değeri uygulanmış dosyaların nasıl aranacağı açıklanmaktadır.

Etiket alanı türleri

Google Drive etiket alanları kesin olarak türlenmiştir ve her tür farklı dizin oluşturma ve arama semantiğini destekler. Aşağıdaki tabloda kullanılabilir veri türleri gösterilmektedir.

Tür Etiket türü seçenekleri Desteklenen arama operatörleri
Metin TextOptions is null, is not null, =, contains, starts with
Uzun Metin LongTextOptions is null, is not null, contains
Tamsayı IntegerOptions is null, is not null, =, !=, <, >, <=, >=
Tarih DateOptions is null, is not null, =, !=, <, >, <=, >=
Seçim SelectionOptions is null, is not null, =, !=
Kullanıcı UserOptions is null, is not null, =, !=
Seçim Listesi SelectionOptions (max_entries > 1) is null, is not null, in, not in
Kullanıcı Listesi UserOptions (max_entries > 1) is null, is not null, in, not in

1. Etiket veya alan varlığına göre arama yapma

Belirli bir etiketin uygulandığı (veya uygulanmadığı) öğeleri arayabilirsiniz:

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

Belirli bir alanın ayarlandığı (veya ayarlanmadığı) öğeleri de arayabilirsiniz:

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

2. Tek değerli alanlara göre arama yapma

Beklenen alan değerleriyle eşleşen arama sorguları yazabilirsiniz. Aşağıdaki tabloda geçerli alan sorguları gösterilmektedir:

Sorgulamak istediğiniz öğe Sorgu dizesi
Yorumun "merhaba" olarak ayarlandığı öğeler labels/contract.comment = 'hello'
Yorumun "merhaba" ile başladığı dosyalar labels/contract.comment STARTS WITH 'hello'
Durumun yürütüldüğü dosyalar labels/contract.status = 'executed'
Durumun yürütülmediği dosyalar labels/contract.status != 'executed'
execution_date değerinin belirli bir tarihten önce olduğu dosyalar labels/contract.execution_date < '2020-06-22'
value_usd (tam sayı) değerinin belirli bir değerden küçük olduğu dosyalar labels/contract.value_usd < 2000
client_contact'ın belirli bir e-posta adresine ayarlandığı dosyalar labels/contract.client_contact = 'alex@altostrat.com'

3. Çok değerli alanlara (ör. ListOptions.max_entries > 1) göre arama yapma

Birden fazla değeri destekleyen alanlar yalnızca IN operatörü kullanılarak sorgulanabilir:

  • 'EMAIL_ADDRESS' IN labels/project.project_leads
  • NOT 'EMAIL_ADDRESS' IN labels/project.project_leads

Örnek

Aşağıdaki kod örneğinde, bir Drive dosya kaynağındaki belirli bir etikete veya alan değerine sahip tüm dosyaları listelemek için bir veya daha fazla labelId değerinin nasıl kullanılacağı gösterilmektedir. Ayrıca files.list yöntemini de kullanır. İstek metni boş olmalıdır.

Yanıtı labelInfo ile birlikte göndermek istiyorsanız şunları da belirtmeniz gerekir:

  • includeLabels kimliklerin virgülle ayrılmış listesi olarak.

  • labelInfo parametresinin fields içinde döndürülmesini istediğinizi belirtmek için labelInfo kullanın.includeLabels

Başarılı olursa yanıt metni, dosya listesini içerir.

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;
  }

Aşağıdakini değiştirin:

  • LABEL_1_ID: İade edilecek etiketin ilk labelId.
  • LABEL_2_ID: İade edilecek etiketin ikinci labelId.