Nesta página, descrevemos como pesquisar arquivos com um valor de campo ou marcador específico aplicado.
Tipos de campos de rótulos
Os campos de marcador do Google Drive são fortemente tipados, e cada tipo oferece suporte a diferentes semânticas de indexação e 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 rótulo ou campo
É possível pesquisar itens em que um rótulo específico foi aplicado (ou não):
'labels/contract' in labels
not 'labels/contract' in labels
Você também pode pesquisar itens em que um campo específico foi definido (ou não):
labels/contract.comment IS NOT NULL
labels/contract.comment IS NULL
2. Pesquisa com base em campos de valor único
É possível escrever consultas de pesquisa para corresponder 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 está 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 execution_date é anterior a uma data específica | labels/contract.execution_date < '2020-06-22' |
Arquivos em que o valor_usd (número inteiro) é menor que um valor específico | labels/contract.value_usd < 2000 |
Arquivos em que client_contact está definido como um endereço de e-mail específico | labels/contract.client_contact = 'alex@altostrat.com' |
3. Pesquisa com base em campos com valores múltiplos (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 rótulo ou valor de campo específico 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 você quiser incluir labelInfo
na resposta, também precisará especificar:
includeLabels
como uma lista de IDs separados por vírgulas.labelInfo
no parâmetrofields
para indicar que você quer que olabelInfo
seja retornado emincludeLabels
.
Se for 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: o primeiro
labelId
de um rótulo a ser retornado. - LABEL_2_ID: o segundo
labelId
de um rótulo a ser retornado.