Dois avisos antes:
Este artigo é destinado aos desenvolvedores; é técnico e demonstra ferramentas e técnicas que não são comumente vistas pelos usuários comerciais.
Cargosnap usa ferramentas como Excel, Power Query e Power Automate nestes exemplos. Estas são soluções Microsoft e não fazem parte da oferta de produtos da Cargosnap. Nós não fornecemos, vendemos ou suportamos estas ferramentas! Apenas as achamos fantásticas para atingir objetivos comerciais, mas você pode escolher um produto concorrente ou usar a funcionalidade descrita em seu próprio WMS/TMS.
DICA! Tenha a documentação da API da CargoSnap em fácil acesso! 😉
Obtendo seus dados no Excel, a partir da API
Quer obter seus dados armazenados na Cargosnap para Excel (ou PowerBI e similares?) Esse vídeo pode te ajudar a explorar essa funcionalidade:
Anexo: Paginação
Para lidar com a paginação no Power Query, os seguintes snippets ajudarão:
Para endpoint /forms (formulários):
let
Source = List.Skip(List.Generate( () => [Counter = 0, isMore = true], each [isMore] <> false,
each [WebCall = Json.Document(Web.Contents( "https://api.cargosnap.com/api/v2/forms/[my-form-id]?"
& "token=[my-API-token]"
& "&limit=250"
& "&startdate=2020-01-01"
& "&enddate=2020-12-31"
& "&page=" & Number.ToText(Counter))),
isMore = if [Counter] < 1 then null else
if [WebCall][current_page] = [WebCall][last_page] then false else true,
Counter = [Counter] + 1
]
), 1),
#"Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in
Source
Para the endpoint /files (arquivos):
let
Source = List.Skip(List.Generate( () => [Counter = 0, isMore = true],
each [isMore] <> false,
each [WebCall = Json.Document(Web.Contents( "https://api.cargosnap.com/api/v2/files?"
& "token=[my-API-token]"
& "&limit=250"
& "&startdate=2020-01-01"
& "&enddate=2020-12-31"
& "&page=" & Number.ToText(Counter))),
isMore = if [Counter] < 1 then null else
if [WebCall][current_page] = [WebCall][last_page] then false else true,
Counter = [Counter] + 1
]
), 1),
#"Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in
Source