Nesta página, descrevemos como pesquisar arquivos com um valor de campo ou marcador específico aplicado.
Tipos de campo de marcador
Os campos de marcador do Google Drive são fortemente tipados, e cada tipo é compatível com diferentes indexações e semânticas de pesquisa. A tabela a seguir mostra os tipos de dados disponíveis.
Tipo | Opções de tipo de rótulo | Operadores de pesquisa compatíveis |
---|---|---|
Texto | TextOptions | is null, is not null, =, contains, starts with |
Texto longo | LongTextOptions | is null, is not null, contains |
Número inteiro | IntegerOptions | is null, is not null, =, !=, <, >, <=, >= |
Data | DateOptions | is null, is not null, =, !=, <, >, <=, >= |
Seleção | SelectionOptions | is null, is not null, =, != |
Usuário | UserOptions | is null, is not null, =, != |
Lista de seleção | SelectionOptions (com max_Entries > 1) | is null, is not null, in, not in |
Lista de usuários | UserOptions (com max_Entries > 1) | is null, is not null, in, not in |
Exemplos de pesquisa
1. Pesquisar com base na presença de um marcador ou campo
Você pode pesquisar itens em que um marcador específico foi (ou não) aplicado:
'labels/contract' in labels
not 'labels/contract' in labels
Você também pode pesquisar itens em que um campo específico tenha sido definido:
labels/contract.comment IS NOT NULL
labels/contract.comment IS NULL
2. Pesquisa com base em campos de valor único
Você pode escrever consultas de pesquisa que correspondam aos valores de campo esperados. A tabela a seguir mostra as consultas de campo válidas:
O que você quer consultar | String de consulta |
---|---|
Itens em que o comentário é definido como "hello" | labels/contract.comment = 'hello' |
Arquivos em que o comentário começa com "hello" | labels/contract.comment STARTS WITH 'hello' |
Arquivos em que o status é executado | labels/contract.status = 'executed' |
Arquivos em que o status não é executado | labels/contract.status != 'executed' |
Arquivos em que "running_date" é anterior a uma data específica | labels/contract.execution_date < '2020-06-22' |
Arquivos em que value_usd (número inteiro) é menor que um valor específico | labels/contract.value_usd < 2000 |
Arquivos em que client_contact está definido para um endereço de e-mail específico | labels/contract.client_contact = 'alex@altostrat.com' |
3. Pesquisa com base em campos com vários valores (como ListOptions.max_Entries > 1)
Campos compatíveis com vários valores só podem ser consultados usando o operador IN:
'EMAIL_ADDRESS' IN labels/project.project_leads
NOT 'EMAIL_ADDRESS' IN labels/project.project_leads
Exemplo
O exemplo de código a seguir mostra como usar um ou mais labelId
para listar todos os arquivos com um marcador específico ou valor de campo de um recurso de arquivo do Drive. Ele também usa o método
files.list
. O corpo da solicitação precisa estar vazio.
Se quiser incluir labelInfo
na resposta, também será necessário especificar:
includeLabels
como uma lista de IDs separada por vírgulas.labelInfo
no parâmetrofields
para indicar que você quer que olabelInfo
seja retornado dentro deincludeLabels
.
Se bem-sucedido, o corpo da resposta conterá a lista de arquivos.
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;
}
Substitua:
- LABEL_1_ID: os primeiros
labelId
de um rótulo a ser retornado. - LABEL_2_ID: o segundo
labelId
de um rótulo a ser retornado.