Utilizza la macro ONLYOFFICE per monitorare gli ordini su Shopify

3 luglio 2023By Elena

Al giorno d’oggi, l’e-commerce è diventato uno strumento prezioso per abbattere le barriere geografiche e facilitare il flusso costante di entrate. Pertanto, la gestione e il monitoraggio delle informazioni sugli ordini è una parte vitale di una strategia aziendale di successo. In questo articolo creeremo una macro che recupera i dati dell’ordine da Shopify e li inserisce in un foglio di calcolo.

Nota! La macro è operativa solo all’interno della versione desktop degli editor di ONLYOFFICE.

Use ONLYOFFICE macro to track orders on Shopify

Informazioni su Shopify

Shopify è una piattaforma di e-commerce leader che consente a privati ​​e aziende di creare e gestire i propri negozi online. Fornisce un set completo di strumenti e funzionalità per aiutare i commercianti a vendere prodotti, gestire l’inventario, elaborare gli ordini e personalizzare le proprie vetrine.

L’API di Shopify funge da potente interfaccia che consente agli sviluppatori di interagire ed estendere le funzionalità di Shopify. Fornisce un’ampia gamma di metodi ed endpoint che consentono agli sviluppatori di integrare perfettamente le proprie applicazioni, sistemi o servizi con i negozi Shopify.

Costruzione della macro

Dichiariamo prima le seguenti variabili:

 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'
    ]

Le variabili TOKEN e SHOP_ID contengono rispettivamente il token dell’API Shopify e l’ID negozio effettivi. La variabile URL contiene l’URL completo per la richiesta API per recuperare gli ordini dal negozio Shopify. La variabile LABEL è un array contenente etichette per le colonne della tabella. Specifica l’ordine in cui i dati verranno visualizzati nel foglio di calcolo. Ogni etichetta corrisponde a una colonna della tabella.

Quindi incorporiamo la funzione makeRequest per avviare una richiesta GET all’endpoint dell’API Shopify designato:

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)
    }

In questa richiesta $.ajax, impostiamo le intestazioni necessarie, incluso il tipo di contenuto e il token dell’API di Shopify. Specifichiamo anche il tipo di dati e l’URL come endpoint dell’API di Shopify per il recupero degli ordini.

Successivamente gestiamo la risposta con 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)

Prende i dati come parametro, che rappresenta la risposta contenente le informazioni sull’ordine. La prima riga della funzione controlla se la proprietà data.orders non è definita. Se lo è, significa che non ci sono ordini nella risposta, quindi la funzione ritorna presto. Quindi usiamo l’array LABELS e il metodo map per creare un nuovo array con ogni etichetta come riga separata nella tabella. Ogni etichetta è incapsulata in un array per rappresentare una singola cella nella tabella:

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

Successivamente recuperiamo il foglio attivo nel documento ONLYOFFICE e definiamo un intervallo in cui verranno inseriti i dati dell’ordine. L’intervallo è impostato per estendersi dalle celle A1 a D, seguito dal numero di ordini più uno. Il data.orders.length + 1 viene utilizzato per tenere conto della riga delle etichette nella tabella:

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

In questo blocco, un ciclo esegue un’iterazione su ciascun oggetto order nell’array data.orders. Per ogni ordine, le informazioni pertinenti vengono inserite nella colonna corrispondente dell’array della tabella:

 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())
            }
        })

Diamo un’occhiata:

  • order.id.toString() recupera l’ID ordine come stringa e lo inserisce nella prima colonna (table[0])</ em>.
  • order.current_total_price e order.current_total_tax vengono inseriti nella seconda e terza colonna (table[1] e table[ 2]) rispettivamente.
  • L’indirizzo di spedizione (order.shipping_address.address1) è selezionato. Se esiste, viene inserito nella quarta colonna (tabella[3]). In caso contrario, viene utilizzato l’indirizzo di fatturazione (order.billing_address.address1).

Infine, l’array table viene inserito nell’intervallo specificato nel documento ONLYOFFICE. Il metodo SetValue imposta i valori delle celle nell’intervallo, popolando la tabella con i dati dell’ordine:

 oRange.SetValue(table)
 reload()

L’intero codice della macro è il seguente:

(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 =&gt; [label])
        const oWorksheet = Api.GetActiveSheet()
        const oRange = oWorksheet.GetRange(`A1:D${data.orders.length + 1}`)
        data.orders.forEach(order =&gt; {
            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

Ci auguriamo che troverai questa macro uno strumento utile per accedere e analizzare le informazioni sugli ordini di Shopify.

Tuttavia, tieni presente che questa macro è solo uno dei tanti modi in cui puoi utilizzare i nostri metodi API. Le macro di ONLYOFFICE sono estremamente versatili e ti invitiamo a sperimentare e creare i tuoi script. Sentiti libero di condividere le tue idee o le tue macro con noi. Siamo sempre aperti alla collaborazione. Buona fortuna!