O Serviço Postal dos Estados Unidos (USPS) fornece APIs da web para fazer isso de maneira mais automatizada do que o uso manual do site. APIs das Ferramentas da Web do USPS
No local de trabalho da minha mãe, ela geralmente acessa o banco de dados e extrai números para formar relatórios. Desde a seleção de dados do Oracle até a geração de relatórios no formato Excel, ela encontrou esse problema onde recebeu códigos postais e precisa convertê-los em endereços (todos dentro dos EUA).
Está chegando a um ponto em que pode levar um dia inteiro procurando endereços manualmente no site da UPS, então ela me perguntou se havia algo que eu pudesse fazer sobre isso. Então eu procurei por alguma ferramenta on-line para converter códigos postais em endereços para arquivos CSV do Excel e encontrei uma ferramenta do Dino, mas ela não era consistente.
Existem outras ferramentas existentes para converter o zip em endereços? Se não, talvez eu possa criar algum tipo de ferramenta rápida. O que nos leva à pergunta: o que é mais fácil e mais simples? Para converter códigos zip no final do banco de dados ou para criar uma ferramenta que permita arquivos e entradas do excel e carregue os endereços automaticamente no arquivo excel.
O Serviço Postal dos Estados Unidos (USPS) fornece APIs da web para fazer isso de maneira mais automatizada do que o uso manual do site. APIs das Ferramentas da Web do USPS
Se você abrir um URL como http://zipasaur.us/zip/94105
, o site fornecerá imediatamente um arquivo .JSON para download que contém todos os detalhes do endereço. Mas você não quer abrir um navegador, preencher o CEP correto, baixar, abrir e converter o arquivo todas as vezes.
Aqui se torna o PowerShell muito útil. O script abaixo lê em um CSV de códigos postais, pede zipasaur.us para converter os dados, converte e produz todos os detalhes novamente como CSV. Você pode facilmente criar e abrir arquivos CSV com o Excel.
Abra um novo arquivo de texto e salve este código como convert.ps1
$url = "http://zipasaur.us/zip"
$list = Get-Content(".\input.csv")
$web = New-Object System.Net.WebClient
ForEach ($zip in $list ) {
$file = $web.DownloadData("$url/$zip")
$string = [System.Text.Encoding]::ASCII.GetString($file)
$array = $string -split '[,:]' | foreach {$_ -Replace '[}""{]',"" }
$newfile += $array[1] + ',' + $array[7] + ',' + $array[11] + "'n"
}
$newfile | out-file ".\output.csv"
Crie uma lista de entrada de CEPs que você deseja converter. Salve como input.csv
na mesma pasta como seu script .ps1
Execute o script do PowerShell. Um novo arquivo output.csv
no mesmo local aparecerá
zipasaur.us também fornece informações sobre latitude, longitude, atalho de estado e nome do condado. Por exemplo, esta linha de código adicionará todos os detalhes.
$newfile += $array[1] + ',' + $array[3] + ',' + $array[5] + ',' + $array[7] + ',' + $array[9] + ',' + $array[11] + ',' + $array[13] + "'n"
$array[0] = code $array[1] = 94105 $array[2] = lat $array[3] = 37.7864 $array[4] = lng $array[5] = -122.3892 $array[6] = city $array[7] = San Francisco $array[8] = state $array[9] = CA $array[10] = state_full $array[11] = California $array[12] = county $array[13] = San Francisco
Exporte uma lista de códigos postais do Excel como .csv e execute uma consulta para cada um desses códigos postais. Os resultados podem ser formatados como .csv e importados de volta para o Excel.
Aqui está um exemplo bruto com o bash wget e sed demonstrando saída .csv:
$ sh zip.sh 94105 94506 94706 94906 44123
94105; San Francisco, CA;
94506; Danville, CA;
94706; Albany, CA;
94906; null, null;
44123; Euclid, OH;
$ cat zip.sh
#!/bin/sh
# code="94105"
# lat="37.7864"
# lng="-122.3892"
# city="San Francisco"
# state="CA"
# state_full="California"
# county="San Francisco"
while [ $# -gt 0 ]; do
unset code
unset city
unset state
eval '
wget --quiet http://zipasaur.us/zip/$1 -O- |\
sed -E '
s/","/"\n/g;
s/":"/="/g;
s/\{"//;
s/"\}/"/;'
' 2>/dev/null
if [ "x$code" != "x" ]; then
echo "$code; $city, $state; "
else
echo "$1; null, null; "
fi
shift
done