Tìm tệp có nhãn hoặc giá trị trường cụ thể

Trang này mô tả cách tìm kiếm tệp có một nhãn hoặc giá trị trường cụ thể được áp dụng.

Các loại trường nhãn

Các trường nhãn của Google Drive được nhập mạnh mẽ với mỗi loại hỗ trợ ngữ nghĩa tìm kiếm và lập chỉ mục khác nhau. Bảng sau đây cho biết các kiểu dữ liệu hiện có.

Loại Các lựa chọn về loại nhãn Các toán tử tìm kiếm được hỗ trợ
Văn bản TextOptions is null, is not null, =, contains, starts with
Văn bản dài LongTextOptions is null, is not null, contains
Số nguyên IntegerOptions is null, is not null, =, !=, <, >, <=, >=
Ngày DateOptions is null, is not null, =, !=, <, >, <=, >=
Lựa chọn SelectionOptions is null, is not null, =, !=
Người dùng UserOptions is null, is not null, =, !=
Danh sách lựa chọn SelectionOptions (với max_entries > 1) is null, is not null, in, not in
DS Người dùng UserOptions (với max_entries > 1) is null, is not null, in, not in

1. Tìm kiếm dựa trên sự hiện diện của nhãn hoặc trường

Bạn có thể tìm kiếm những mục đã (hoặc chưa) được áp dụng một nhãn cụ thể:

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

Bạn cũng có thể tìm kiếm những mục mà một trường cụ thể đã (hoặc chưa) được đặt:

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

2. Tìm kiếm dựa trên các trường có một giá trị

Bạn có thể viết cụm từ tìm kiếm để so khớp các giá trị trường dự kiến. Bảng sau đây cho thấy các truy vấn hợp lệ về trường:

Nội dung bạn muốn truy vấn Chuỗi truy vấn
Các mục có bình luận được đặt thành "hello" labels/contract.comment = 'hello'
Các tệp có bình luận bắt đầu bằng "xin chào" labels/contract.comment STARTS WITH 'hello'
Tệp có trạng thái đã thực thi labels/contract.status = 'executed'
Tệp có trạng thái chưa được thực thi labels/contract.status != 'executed'
Các tệp có execution_date trước một ngày cụ thể labels/contract.execution_date < '2020-06-22'
Tệp có value_usd (số nguyên) nhỏ hơn một giá trị cụ thể labels/contract.value_usd < 2000
Các tệp có client_contact được đặt thành một địa chỉ email cụ thể labels/contract.client_contact = 'alex@altostrat.com'

3. Tìm kiếm dựa trên các trường có trường nhiều giá trị (chẳng hạn như ListOptions.max_entries > 1)

Bạn chỉ có thể truy vấn các trường hỗ trợ nhiều giá trị bằng toán tử IN:

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

Ví dụ:

Đoạn mã sau đây cho biết cách sử dụng một hoặc nhiều labelId để liệt kê tất cả các tệp có nhãn hoặc giá trị trường cụ thể từ tài nguyên tệp trên Drive. Phương thức này cũng sử dụng phương thức files.list. Nội dung yêu cầu phải trống.

Nếu muốn thêm labelInfo vào phản hồi, bạn cũng phải chỉ định:

  • includeLabels dưới dạng danh sách mã nhận dạng được phân tách bằng dấu phẩy.

  • labelInfo trong tham số fields để biểu thị rằng bạn muốn labelInfo được trả về trong includeLabels.

Nếu thành công, nội dung phản hồi sẽ chứa danh sách tệp.

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

Thay thế nội dung sau:

  • LABEL_1_ID: labelId đầu tiên của nhãn cần trả về.
  • LABEL_2_ID: Nhãn thứ hai labelId cần trả về.