Esta página descreve como pesquisar arquivos com um marcador ou valor de campo específico aplicado.
Tipos de campo de marcador
Os campos de marcador do Google Drive são fortemente tipados, e cada tipo oferece suporte a semânticas de indexação e pesquisa diferentes. A tabela a seguir mostra os tipos de dados disponíveis.
| Tipo | Opções de tipo de marcador | Operadores de pesquisa compatíveis |
|---|---|---|
| Texto | TextOptions | is null, is not null, =, contains, starts with |
| 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
É possível pesquisar itens em que um marcador específico foi (ou não) aplicado:
'labels/contract' in labelsnot 'labels/contract' in labels
Também é possível pesquisar itens em que um campo específico foi (ou não) definido:
labels/contract.comment IS NOT NULLlabels/contract.comment IS NULL
2. Pesquisar 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 value_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. Pesquisar com base em campos com vários valores (como ListOptions.max_entries > 1)
Os campos que oferecem suporte a vários valores só podem ser consultados usando o operador IN:
'EMAIL_ADDRESS' IN labels/project.project_leadsNOT '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 ou valor de campo específico de um recurso de arquivo
do Drive. Ele também usa o
files.list método. O corpo da solicitação precisa estar vazio.
Se você quiser incluir labelInfo na resposta, também precisará especificar:
includeLabelscomo uma lista de IDs separados por vírgulas.labelInfono parâmetrofieldspara indicar que você quer quelabelInfoseja retornado emincludeLabels.
Se for bem-sucedido, o corpo da resposta vai 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
labelIdde um marcador a ser retornado. - LABEL_2_ID: o segundo
labelIdde um marcador a ser retornado.