Use a macro ONLYOFFICE para rastrear pedidos na Shopify

5 julho 2023Por Klaibson

Neste artigo, construiremos uma macro que recupera os dados do pedido da Shopify e os insere em uma planilha.

Observação! A macro só está operacional dentro da versão desktop do ONLYOFFICE editors.

Use ONLYOFFICE macro to track orders on Shopify

Sobre Shopify

Shopify é uma plataforma líder de comércio eletrônico que permite que indivíduos e empresas criem e gerenciem suas lojas online. Ele fornece um conjunto abrangente de ferramentas e recursos para ajudar os comerciantes a vender produtos, gerenciar estoques, processar pedidos e personalizar suas vitrines.

A API da Shopify funciona como uma interface poderosa que permite aos desenvolvedores interagir e ampliar a funcionalidade da Shopify. Ele fornece uma ampla gama de métodos e terminais que permitem aos desenvolvedores integrar perfeitamente seus próprios aplicativos, sistemas ou serviços com as lojas da Shopify.

Construindo a macro

Primeiro declaramos as seguintes variáveis:

 const TOKEN = 'YOUR_API_TOKEN'
    const SHOP_ID = 'YOUR_SHOP_ID'
    const URL = `https://${ SHOP_ID }.myshopify.com/admin/api/2022-10/orders.json`
    const LABELS = [
        'order id', 
        'total price', 
        'tax', 
        'shipping address'
    ]

As variáveis TOKEN e SHOP_ID contêm o token real da API da Shopify e o ID da loja, respectivamente. A variável de URL contém o URL completo da solicitação de API para recuperar pedidos da loja da Shopify. A variável LABEL é um array contendo rótulos para as colunas da tabela. Especifica a ordem em que os dados serão exibidos na planilha. Cada rótulo corresponde a uma coluna na tabela.

Em seguida, incorporamos a função makeRequest para iniciar uma solicitação GET para o endpoint designado da API da Shopify:

function makeRequest() {
        $.ajax({
            method: 'GET',
            headers: {
                // 'Access-Control-Allow-Origin': '*',
                'Content-Type' : 'application/json',
                'X-Shopify-Access-Token': TOKEN
            },
            url: URL,
            dataType: 'json',
        }).done(successFunction)
    }

Nesta solicitação $.ajax , definimos os cabeçalhos necessários, incluindo o tipo de conteúdo e o token da API da Shopify. Também especificamos o tipo de dados e a URL como ponto de extremidade da API da Shopify para buscar pedidos.

Depois disso, tratamos a resposta com o successFuntion:

    function successFunction(data) {
        if (data.orders === undefined) return
        
        let table = LABELS.map(label => [label])
        const oWorksheet = Api.GetActiveSheet()
        const oRange = oWorksheet.GetRange(`A1:D${data.orders.length + 1}`)
        data.orders.forEach(order => {
            table[0].push(order.id.toString())
            table[1].push(order.current_total_price)
            table[2].push(order.current_total_tax)
            // if missing field
            if (order.shipping_address === undefined) {
                table[3].push(order.billing_address.address1.toString())
            } else {
                table[3].push(order.shipping_address.address1.toString())
            }
        })
        
        oRange.SetValue(table)

Leva como parâmetro dados, que representam a resposta contendo as informações do pedido. A primeira linha da função verifica se a propriedade data.orders está indefinida. Se for, significa que não há ordens na resposta, então a função retorna antecipadamente. Em seguida, usamos o array LABELS e o método map para criar um novo array com cada rótulo como uma linha separada na tabela. Cada rótulo é encapsulado em uma matriz para representar uma única célula na tabela:

  function successFunction(data) {
        if (data.orders === undefined) return
        
        let table = LABELS.map(label => [label])
 
        })

Após isso recuperamos a planilha ativa no documento ONLYOFFICE e definimos um intervalo onde serão inseridos os dados do pedido. O intervalo é definido para abranger as células A1 a D, seguido pelo número de pedidos mais um. O data.orders.length + 1 é usado para contabilizar a linha de rótulos na tabela:

 const oWorksheet = Api.GetActiveSheet()
 const oRange = oWorksheet.GetRange(`A1:D${data.orders.length + 1}`)

Nesse bloco, um loop itera sobre cada objeto de pedido na matriz data.orders. Para cada pedido, as informações relevantes são colocadas na coluna correspondente do array da tabela:

 data.orders.forEach(order => {
            table[0].push(order.id.toString())
            table[1].push(order.current_total_price)
            table[2].push(order.current_total_tax)
            // if missing field
            if (order.shipping_address === undefined) {
                table[3].push(order.billing_address.address1.toString())
            } else {
                table[3].push(order.shipping_address.address1.toString())
            }
        })

Vamos olhar mais de perto:

  • order.id.toString() recupera o ID do pedido como uma string e o coloca na primeira coluna (tabela[0]).
  • order.current_total_price e order.current_total_tax são colocados na segunda e terceira colunas (table[1] e table[2]), respectivamente.
  • O endereço de entrega (order.shipping_address.address1) é verificado. Se existir, é enviado para a quarta coluna (tabela[3]). Caso contrário, o endereço de cobrança (order.billing_address.address1) é usado.

Por fim, a matriz da tabela é inserida no intervalo especificado no documento ONLYOFFICE. O método SetValue define os valores das células do intervalo, preenchendo a tabela com os dados do pedido:

 oRange.SetValue(table)
 reload()

Todo o código da macro é o seguinte:

(function()
{
    const TOKEN = 'YOUR_API_TOKEN'
    const SHOP_ID = 'YOUR_SHOP_ID'
    const URL = `https://${ SHOP_ID }.myshopify.com/admin/api/2022-10/orders.json`
    const LABELS = [
        'order id', 
        'total price', 
        'tax', 
        'shipping address'
    ]
    makeRequest()
    function makeRequest() {
        $.ajax({
            method: 'GET',
            headers: {
                // 'Access-Control-Allow-Origin': '*',
                'Content-Type' : 'application/json',
                'X-Shopify-Access-Token': TOKEN
            },
            url: URL,
            dataType: 'json',
        }).done(successFunction)
    }
    function successFunction(data) {
        if (data.orders === undefined) return
        let table = LABELS.map(label => [label])
        const oWorksheet = Api.GetActiveSheet()
        const oRange = oWorksheet.GetRange(`A1:D${data.orders.length + 1}`)
        data.orders.forEach(order => {
            table[0].push(order.id.toString())
            table[1].push(order.current_total_price)
            table[2].push(order.current_total_tax)
            // if missing field
            if (order.shipping_address === undefined) {
                table[3].push(order.billing_address.address1.toString())
            } else {
                table[3].push(order.shipping_address.address1.toString())
            }
        })
        oRange.SetValue(table)
        reload()
    }
})();

Use ONLYOFFICE macro to track orders on Shopify

Esperamos que esta macro seja uma ferramenta útil para acessar e analisar as informações de pedidos da Shopify.

No entanto, observe que essa macro é apenas uma das muitas maneiras de usar nossos métodos de API. As macros do ONLYOFFICE são extremamente versáteis e convidamos você a experimentar e criar seus próprios scripts. Sinta-se à vontade para compartilhar suas ideias ou suas macros conosco. Estamos sempre abertos à discussão e cooperação. Boa sorte em seus esforços exploratórios!

 

Crie sua conta gratuita no ONLYOFFICE

Visualize, edite e colabore em documentos, planilhas, slides, formulários e arquivos PDF online.