Trang này mô tả cách tìm kiếm tệp có 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 thấy các kiểu dữ liệu hiện có.
| Loại | Các 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 |
| 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 |
Ví dụ tìm kiếm
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 các mục mà một nhãn cụ thể đã (hoặc chưa) được áp dụng:
'labels/contract' in labelsnot 'labels/contract' in labels
Bạn cũng có thể tìm kiếm các mục mà một trường cụ thể đã (hoặc chưa) được đặt:
labels/contract.comment IS NOT NULLlabels/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ác truy vấn tìm kiếm để khớp với các giá trị trường dự kiến. Bảng sau đây cho thấy các truy vấn trường hợp lệ:
| Nội dung bạn muốn truy vấn | Chuỗi truy vấn |
|---|---|
| Các mục mà bình luận được đặt thành "hello" | labels/contract.comment = 'hello' |
| Các tệp mà bình luận bắt đầu bằng "hello" | labels/contract.comment STARTS WITH 'hello' |
| Các tệp có trạng thái là đã thực thi | labels/contract.status = 'executed' |
| Các tệp có trạng thái không phải là đã thực thi | labels/contract.status != 'executed' |
| Các tệp có execution_date (ngày thực thi) trước một ngày cụ thể | labels/contract.execution_date < '2020-06-22' |
| Các tệp có value_usd (giá trị bằng đô la Mỹ) (số nguyên) nhỏ hơn một giá trị cụ thể | labels/contract.value_usd < 2000 |
| Các tệp có client_contact (thông tin liên hệ của khách hàng) đượ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ó 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_leadsNOT 'EMAIL_ADDRESS' IN labels/project.project_leads
Ví dụ:
Mẫu mã sau đây cho biết cách sử dụng một hoặc nhiều labelId để liệt kê tất cả tệp có nhãn hoặc giá trị trường cụ thể từ tài nguyên tệp Drive. Mẫu mã 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 đưa labelInfo vào phản hồi, bạn cũng phải chỉ định:
includeLabelsdưới dạng danh sách mã nhận dạng được phân tách bằng dấu phẩy.labelInfotrong tham sốfieldsđể biểu thị rằng bạn muốnlabelInfođược trả về trongincludeLabels.
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: Cái
labelIdđầu tiên của nhãn cần trả về. - LABEL_2_ID: Cái thứ hai
labelIdcủa nhãn cần trả về.