Serviço de propriedades

O serviço de propriedades permite armazenar dados simples em pares de chave-valor no escopo de um script, um usuário de um script ou um documento em que um complemento é usado. Ele geralmente é usado para armazenar a configuração do desenvolvedor ou as preferências do usuário. As propriedades nunca são compartilhadas entre scripts.

Para conferir as cotas diárias e os limites de armazenamento do serviço de propriedades, consulte Cotas dos Serviços do Google.

Comparação de lojas de propriedades

O objeto global PropertiesService oferece três métodos, cada um retorna um objeto Properties semelhante, mas com direitos de acesso diferentes, conforme mostrado na tabela a seguir:

Propriedades do script Propriedades do usuário Propriedades do documento
Método de acesso getScriptProperties() getUserProperties() getDocumentProperties()
Dados compartilhados entre Todos os usuários de um script, complemento ou app da Web O usuário atual de um script, complemento ou app da Web Todos os usuários de um complemento no documento aberto
Normalmente usado para Dados de configuração em todo o app, como o nome de usuário e a senha do banco de dados externo do desenvolvedor Configurações específicas do usuário, como unidades métricas ou imperiais Dados específicos do documento, como o URL de origem de um gráfico incorporado

Formato de dados

O serviço de propriedades armazena todos os dados como strings em pares de chave-valor. Os tipos de dados que ainda não são strings são convertidos automaticamente em strings, incluindo métodos contidos em objetos salvos.

Salvar dados

Para salvar um único valor, chame o método Properties.setProperty(key, value) da loja apropriada, conforme mostrado no exemplo abaixo:

service/propertyService.gs
try {
  // Set a property in each of the three property stores.
  const scriptProperties = PropertiesService.getScriptProperties();
  const userProperties = PropertiesService.getUserProperties();
  const documentProperties = PropertiesService.getDocumentProperties();

  scriptProperties.setProperty('SERVER_URL', 'http://www.example.com/');
  userProperties.setProperty('DISPLAY_UNITS', 'metric');
  documentProperties.setProperty('SOURCE_DATA_ID',
      '1j3GgabZvXUF177W0Zs_2v--H6SPCQb4pmZ6HsTZYT5k');
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Para salvar dados em massa, transmita um mapa de pares de chave-valor para Properties.setProperties(properties). Cada par de chave-valor do objeto no parâmetro é armazenado como uma propriedade separada:

service/propertyService.gs
try {
  // Set multiple script properties in one call.
  const scriptProperties = PropertiesService.getScriptProperties();
  scriptProperties.setProperties({
    'cow': 'moo',
    'sheep': 'baa',
    'chicken': 'cluck'
  });
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Como ler dados

Para recuperar um único valor que você salvou anteriormente, chame Properties.getProperty(key):

service/propertyService.gs
try {
  // Get the value for the user property 'DISPLAY_UNITS'.
  const userProperties = PropertiesService.getUserProperties();
  const units = userProperties.getProperty('DISPLAY_UNITS');
  console.log('values of units %s', units);
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Para recuperar todos os valores na loja de propriedades atual, chame Properties.getProperties():

service/propertyService.gs
try {
  // Get multiple script properties in one call, then log them all.
  const scriptProperties = PropertiesService.getScriptProperties();
  const data = scriptProperties.getProperties();
  for (const key in data) {
    console.log('Key: %s, Value: %s', key, data[key]);
  }
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Como modificar dados

Os métodos getProperty() e getProperties() retornam uma cópia dos dados armazenados, não uma visualização em tempo real. Portanto, mudar o objeto retornado não atualiza o valor no repositório de propriedades. Para atualizar os dados na loja, salve-os novamente:

service/propertyService.gs
try {
  // Change the unit type in the user property 'DISPLAY_UNITS'.
  const userProperties = PropertiesService.getUserProperties();
  let units = userProperties.getProperty('DISPLAY_UNITS');
  units = 'imperial'; // Only changes local value, not stored value.
  userProperties.setProperty('DISPLAY_UNITS', units); // Updates stored value.
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Exclusão de dados

Para excluir um único valor, chame Properties.deleteProperty(key):

service/propertyService.gs
try {
  // Delete the user property 'DISPLAY_UNITS'.
  const userProperties = PropertiesService.getUserProperties();
  userProperties.deleteProperty('DISPLAY_UNITS');
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Para excluir todas as propriedades da loja atual, chame Properties.deleteAllProperties():

service/propertyService.gs
try {
  // Get user properties in the current script.
  const userProperties = PropertiesService.getUserProperties();
  // Delete all user properties in the current script.
  userProperties.deleteAllProperties();
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Gerenciar propriedades do script manualmente

É possível adicionar manualmente até 50 propriedades personalizadas, como strings em pares de chave-valor, na página de configurações do projeto. Para adicionar mais de 50 propriedades, é necessário adicioná-las de forma programática usando os métodos descritos acima em Como salvar dados. Quando você define propriedades do script na página de configurações do projeto, não é possível referenciar variáveis do script.

Adicionar propriedades do script

  1. Abra seu projeto do Apps Script.
  2. À esquerda, clique em Configurações do projeto Ícone das configurações do projeto.
  3. Para adicionar a primeira propriedade, em Propriedades do script, clique em Adicionar propriedade do script.
  4. Para adicionar a segunda propriedade e as seguintes, em Propriedades do script, clique em Editar propriedades do script > Adicionar propriedade do script.
  5. Em Property, insira o nome da chave.
  6. Em Valor, insira o valor da chave.
  7. (Opcional) Para adicionar mais propriedades, clique em Adicionar propriedade de script.
  8. Clique em Salvar propriedades do script.

Editar propriedades do script

  1. Abra seu projeto do Apps Script.
  2. À esquerda, clique em Configurações do projeto Ícone das configurações do projeto.
  3. Em Propriedades do script, clique em Editar propriedades do script.
  4. Faça mudanças no nome e no valor da chave para cada propriedade que você quer alterar.
  5. Clique em Salvar propriedades do script.

Excluir propriedades do script

  1. Abra seu projeto do Apps Script.
  2. À esquerda, clique em Configurações do projeto Ícone das configurações do projeto.
  3. Em Propriedades do script, clique em Editar propriedades do script.
  4. Ao lado da propriedade que você quer excluir, clique em Remover .
  5. Clique em Salvar propriedades do script.