Trang này mô tả cách tìm tệp có áp dụng nhãn hoặc giá trị trường cụ thể.
Các loại trường nhãn
Các trường nhãn của Google Drive được nhập rõ ràng, trong đó mỗi loại hỗ trợ các ngữ nghĩa lập chỉ mục và tìm kiếm khác nhau. Bảng sau đây cho thấy các kiểu dữ liệu có sẵn.
Loại | 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 |
Danh sách 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 các mục đã áp dụng (hoặc chưa) á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 các 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ác cụm từ tìm kiếm khớp với các giá trị dự kiến của trường. Bảng sau đây cho thấy các truy vấn hợp lệ cho trường:
Nội dung bạn muốn truy vấn | Chuỗi truy vấn |
---|---|
Các mục có nhận xét được đặt thành "hello" | labels/contract.comment = 'hello' |
Tệp mà nhận xét bắt đầu bằng "xin chào" | labels/contract.comment STARTS WITH 'hello' |
Tệp trong đó trạng thái được thực thi | labels/contract.status = 'executed' |
Tệp có trạng thái không được thực thi | labels/contract.status != 'executed' |
Các tệp có generate_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 |
Những tệp trong đó 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ó cá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ụ:
Mã mẫu sau đây cho biết cách sử dụng một hoặc nhiều labelId
để liệt kê mọi tệp có nhãn hoặc giá trị trường cụ thể trong 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 đưa labelInfo
vào câu trả lờ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ốnlabelInfo
được trả về trongincludeLabels
.
Nếu thành công, nội dung phản hồi sẽ chứa danh sách các 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ế đoạn mã sau:
- LABEL_1_ID:
labelId
đầu tiên của một nhãn cần trả về. - LABEL_2_ID:
labelId
thứ hai của một nhãn cần trả về.