Atualizar um rótulo

É possível atualizar um único rótulo aplicando um conjunto de solicitações de atualização que resultam em uma nova revisão de rascunho. Por exemplo, você pode atualizar uma propriedade de rótulo existente (a descrição do rótulo ) ou adicionar um novo Field ao rótulo.

A atualização do rótulo funciona como uma atualização em lote, já que o método recebe uma lista de objetos Request de atualização. Ela faz atualizações de acordo com a mesma ordem especificada na solicitação em lote. As atualizações na atualização em lote são aplicadas de forma atômica. Ou seja, se alguma solicitação no lote não for bem-sucedida, toda a atualização falhará e nenhuma das mudanças (possivelmente dependentes) será aplicada. O rótulo permanece inalterado.

Se a atualização for bem-sucedida, a revisão de rascunho resultante precisará ser publicada antes que as mudanças possam ser usadas com qualquer item do Drive.

Atualizar objetos de rótulo

Um rótulo inclui muitos outros tipos de objetos que podem ser atualizados, como:

  • Propriedades do rótulo
  • Campos e tipos de campos
  • Opções de seleção e propriedades de opções de seleção

Esses são alguns dos muitos objetos que controlam a aparência e a operação de um rótulo.

Categorias de operação

As operações a seguir com suporte do método labels.delta podem ser agrupadas nas seguintes categorias gerais:

Categoria Descrição
CriarAdicionar objetos.
AtualizarAtualizar determinadas propriedades de um objeto.
AtivarAtivar objetos.
DesativarDesativar objetos.
ExcluirRemover objetos.

Essas categorias são usadas na próxima seção para descrever o comportamento de operações específicas.

Solicitações de atualização

O método labels.delta funciona recebendo um ou mais objetos de solicitação, cada um especificando um único tipo de solicitação a ser realizada. Há muitos tipos diferentes de solicitações. Confira um detalhamento dos tipos de solicitações, agrupadas em diferentes categorias.

Tipo de solicitação
Propriedades do rótulo
Atualizar UpdateLabelPropertiesRequest
Campo
Criar CreateFieldRequest
Atualizar UpdateFieldPropertiesRequest
UpdateFieldTypeRequest
Ativar EnableFieldRequest
Desativar DisableFieldRequest
Excluir DeleteFieldRequest
Opção de seleção
Criar CreateSelectionChoiceRequest
Atualizar UpdateSelectionChoicePropertiesRequest
Ativar EnableSelectionChoiceRequest
Desativar DisableSelectionChoiceRequest
Excluir DeleteSelectionChoiceRequest

Máscaras de campo

Muitas das solicitações do tipo "Atualizar" e "Desativar" exigem um FieldMask. Essa é uma lista de campos separados por vírgulas que você quer atualizar, deixando os outros campos inalterados. A máscara é necessária para garantir que apenas os campos que você quer editar sejam atualizados. É preciso especificar pelo menos um campo.

Exemplo

Para atualizar um rótulo, use o delta método na labels coleção.

Você também precisa especificar:

  • useAdminAccess é true para usar as credenciais de administrador do usuário. O servidor verifica se o usuário é um administrador do rótulo antes de permitir o acesso.

  • Um Request que especifica as atualizações aplicáveis ao rótulo.

  • Um rótulo title usando o método property.

  • Um ou mais Field.

  • Um recurso de rótulo que representa todos os rótulos. Ele contém um Name e um ID de recurso, que é um identificador globalmente exclusivo para o rótulo.

  • LabelView é LABEL_VIEW_FULL para definir a visualização de recursos aplicada às respostas de rótulo. LABEL_VIEW_FULL retorna todos os campos possíveis.

Este exemplo usa o ID para atualizar o rótulo correto.

Python

body = {
'use_admin_access': True,
'requests': [{
  'update_label': {
    'properties': {
      'title': 'TITLE'
    },
    'update_mask': {
      'paths': ['title']
    }
  },
}, {
  'create_field': {
    'field': {
      'properties': {
        'display_name': 'DISPLAY_NAME'
      },
      'text_options': {}
    }
  }
}],
'view': 'LABEL_VIEW_FULL'
}
response = service.labels().delta(
  body=body,
  name='labels/ID').execute()

Node.js

var body = {
  'use_admin_access': true,
  'requests': [{
    'update_label': {
      'properties': {
        'title': 'TITLE'
      },
      'update_mask': {
        'paths': ['title']
      }
    },
  }, {
    'create_field': {
      'field': {
        'properties': {
          'display_name': 'DISPLAY_NAME'
        },
        'text_options': {}
      }
    }
  }],
  'view': 'LABEL_VIEW_FULL'
};
service.labels.delta({
  'resource': body,
  'name': 'labels/ID'
}, (err, res) => {
  if (err) return console.error('The API returned an error: ' + err);
  console.log(res);
});

O rótulo, o campo ou a opção são atualizados, o ID de revisão do rótulo é incrementado e o rótulo é armazenado em um banco de dados como um rótulo de rascunho. O rótulo tem o State de PUBLISHED com hasUnpublishedChanges=true, o que significa que há mudanças de rascunho, mas elas não estão disponíveis para os usuários. O rótulo atualizado precisa ser PUBLISHED antes que as mudanças fiquem visíveis para os usuários. Para mais informações, consulte Ciclo de vida do rótulo.