Utiliza la macro de ONLYOFFICE para seguir los pedidos en Shopify

12 julio 2023Por Sergey

En los tiempos que corren, el comercio electrónico se ha convertido en una valiosa herramienta para romper las barreras geográficas y facilitar el flujo constante de ingresos. Por lo tanto, la gestión y el seguimiento de la información de los pedidos es una parte vital de una estrategia empresarial de éxito. En este artículo, vamos a crear una macro que obtiene los datos de los pedidos de Shopify y los inserta en una hoja de cálculo.

¡Ojo! La macro solo funciona en las versiones de escritorio de los editores ONLYOFFICE.

Utiliza la macro de ONLYOFFICE para seguir los pedidos en Shopify

Acerca de Shopify

Shopify es una plataforma líder de comercio electrónico que permite a particulares y empresas crear y gestionar sus tiendas online. Proporciona un amplio conjunto de herramientas y funciones para ayudar a los comerciantes a vender productos, gestionar el inventario, procesar pedidos y personalizar sus escaparates.

La API de Shopify sirve como una potente interfaz que permite a los desarrolladores interactuar y ampliar la funcionalidad de Shopify. Proporciona una amplia gama de métodos y puntos finales que permiten a los desarrolladores integrar sin problemas sus propias aplicaciones, sistemas o servicios con las tiendas de Shopify.

Creación de la macro

Primero declaramos las siguientes variables:

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

Las variables TOKEN y SHOP_ID contienen tu token actual de la API de Shopify y el ID de la tienda respectivamente. La variable URL contiene la URL completa de la solicitud API para recuperar pedidos de la tienda de Shopify. La variable LABEL es una matriz que contiene etiquetas para las columnas de la tabla. Especifica el orden en el que se mostrarán los datos en la hoja de cálculo. Cada etiqueta corresponde a una columna de la tabla.

A continuación incorporamos la función makeRequest para iniciar una solicitud GET al punto final designado de la API de 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)
    }

En esta solicitud $.ajax, establecemos los encabezados necesarios, incluyendo el tipo de contenido y el token de la API de Shopify. También especificamos el tipo de datos y la URL como el punto final de la API de Shopify para obtener los pedidos.

Después manejamos la respuesta con la 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)

Toma los datos como parámetro, que representan la respuesta que contiene la información del pedido. La primera línea de la función comprueba si la propiedad data.orders está indefinida. Si lo está, significa que no hay pedidos en la respuesta, por lo que la función devuelve antes de tiempo. A continuación, utilizamos la matriz LABELS y el método map para crear una nueva matriz con cada etiqueta como una fila independiente en la tabla. Cada etiqueta se encapsula en una matriz para representar una única celda de la tabla:

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

Después obtenemos la hoja activa en el documento ONLYOFFICE y definimos un rango donde se insertarán los datos de los pedidos. El rango se establece para abarcar desde las celdas A1 a D, seguido por el número de pedidos más uno. El data.orders.length + 1 se utiliza para tener en cuenta la fila de etiquetas en la tabla:

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

En este bloque, un bucle repite la iteración sobre cada objeto de pedido en la matriz data.orders. Para cada pedido, se introduce la información pertinente en la columna correspondiente de la matriz de la tabla:

 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 a echar un vistazo más de cerca:

  • order.id.toString() obtiene el ID del pedido en forma de texto y lo introduce en la primera columna (tabla[0]).
  • order.current_total_price y order.current_total_tax se introducen en la segunda y tercera columnas (table[1] y table[2]) respectivamente.
  • Se comprueba la dirección de envío (order.shipping_address.address1). Si existe, se introduce en la cuarta columna (tabla[3]). En caso contrario, se utiliza la dirección de facturación (order.billing_address.address1).

Finalmente, el array de la tabla se inserta en el rango especificado en el documento ONLYOFFICE. El método SetValue establece los valores de las celdas del rango, rellenando la tabla con los datos del pedido:

 oRange.SetValue(table)
 reload()

El código completo de la macro es el siguiente:

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

Utiliza la macro de ONLYOFFICE para seguir los pedidos en Shopify

Esperamos que encuentres en esta macro una herramienta útil para acceder y analizar la información de pedidos de Shopify.

Sin embargo, ten en cuenta que esta macro es una de las muchas maneras de usar nuestros métodos API. Las macros de ONLYOFFICE son extremadamente versátiles, y te invitamos a experimentar y crear tus propios scripts. Comparte tus ideas o tus macros con nosotros. Siempre estamos abiertos a la discusión y la cooperación. Te deseamos mucha suerte en tu exploración.

Crea tu cuenta gratuita de ONLYOFFICE

Visualiza, edita y colabora en documentos, hojas, diapositivas, formularios y archivos PDF en línea.