Guias

Resolva em lote os códigos postais de uma lista de clientes

Uma exportação de clientes com uma coluna de código postal, mas sem coordenadas, é um ponto de partida comum para qualquer coisa que envolva zonas de entrega, relatórios regionais ou atribuição de lojas. Resolver a coluna inteira de uma vez é mais rápido do que escrever um loop.

Enviando o lote

Faça um POST de um array de objetos com código e país para /v1/postcode. Cada item é resolvido de forma independente e volta na mesma ordem.

POST /v1/postcode
Content-Type: application/json

[{"code": "10115", "country": "DE"}, {"code": "75001", "country": "FR"}]
{
  "status": "ok",
  "results": [
    {"postcode": "10115", "country_code": "DE", "results": [{"lat": 52.5300, "lon": 13.3800, "components": {"city": "Berlin", "region": "Berlin"}}]},
    {"postcode": "75001", "country_code": "FR", "results": [{"lat": 48.8630, "lon": 2.3360, "components": {"city": "Paris", "region": "Ile-de-France"}}]}
  ]
}

Associando os resultados aos registros de clientes

Guarde o índice original da linha ou o ID do cliente junto com cada par de código e país antes de enviar a requisição, e associe os resultados aos registros de clientes por essa mesma posição, a mesma abordagem que funciona para geocodificação direta ou reversa em lote.

Removendo duplicatas antes de enviar

Uma lista de clientes de qualquer tamanho real costuma ter muito menos códigos postais distintos do que linhas, já que muitos clientes compartilham o mesmo código em uma cidade ou bairro. Monte primeiro uma lista única de pares de código e país, resolva essa lista menor em um único lote e depois associe os resultados a todas as linhas de clientes que compartilham cada código, em vez de enviar uma entrada no array por cliente e pagar pelo mesmo par de código e país repetidas vezes.

Lidando com códigos que não são resolvidos

Um array results vazio para um determinado item geralmente significa que o par de código e país não existe, o que é comum em uma exportação antiga com erros de digitação ou com um código postal desatualizado. Marque essas linhas para revisão manual, em vez de descartá-las silenciosamente do seu relatório.

Um caso extremo: diferenças de formatação

Um código armazenado como “SW1A1AA”, sem espaço, e outro armazenado como “SW1A 1AA”, com espaço, podem ou não ser resolvidos da mesma forma, dependendo de quão consistente é a formatação dos códigos na sua exportação; por isso, normalizar os espaços e as maiúsculas e minúsculas na exportação antes de montar o array do lote reduz o número de linhas que falham apenas por formatação, e não porque o código está realmente errado.

Quanto custa

Um lote é cobrado a uma requisição por item, então uma lista de 2.000 clientes custa 2.000 requisições, seja enviada como uma chamada em lote ou como 2.000 chamadas separadas. Enviá-la em uma única chamada ainda vale a pena pela menor sobrecarga e por haver um único conjunto de cabeçalhos de cota para verificar, mesmo que o número de requisições descontadas da sua cota seja idêntico nos dois casos. É a remoção de duplicatas, como descrito acima, que realmente reduz o número de requisições, e não a escolha entre chamadas em lote ou individuais.

Acompanhando a sua cota no meio do lote

Para uma lista grande o bastante para ultrapassar as 2.500 requisições gratuitas por dia, verifique X-Quota-Free-Remaining antes de se comprometer a executar tudo de uma vez, ou divida o trabalho em alguns dias se você não pretende passar para o crédito pré-pago por causa de um trabalho pontual.

Resolver os códigos postais de uma lista inteira de clientes em uma única chamada transforma o que antes era um trabalho lento em segundo plano em uma requisição simples. A documentação da consulta de código postal traz a lista completa de campos.