Utilisez la macro ONLYOFFICE pour suivre les commandes sur Shopify

29 juin 2023By Dasha

À notre époque, le commerce électronique est devenu un outil précieux pour faire tomber les barrières géographiques et faciliter un flux constant de revenus. Par conséquent, la gestion et le suivi des informations relatives aux commandes sont des éléments essentiels d’une stratégie commerciale réussie. Dans cet article, nous allons créer une macro qui récupère les données de commande de Shopify et les insère dans une feuille de calcul.

Remarque ! La macro n’est opérationnelle que dans les versions de bureau des éditeurs ONLYOFFICE.

Use ONLYOFFICE macro to track orders on Shopify

À propos de Shopify

Shopify est une plateforme de commerce électronique de premier plan qui permet aux particuliers et aux entreprises de créer et de gérer leurs boutiques en ligne. Elle offre un ensemble complet d’outils et de fonctionnalités pour aider les commerçants à vendre des produits, à gérer les stocks, à traiter les commandes et à personnaliser leurs vitrines.

L’API de Shopify est une interface puissante qui permet aux développeurs d’interagir avec Shopify et d’en étendre les fonctionnalités. Elle fournit un large éventail de méthodes et de points d’accès qui permettent aux développeurs d’intégrer de manière transparente leurs propres applications, systèmes ou services aux boutiques Shopify.

Construction de la macro

Nous commençons par déclarer les variables suivantes :

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

Les variables TOKEN et SHOP_ID contiennent respectivement le jeton de l’API Shopify et l’identifiant de la boutique. La variable URL contient l’URL complète de la requête API pour récupérer les commandes de la boutique Shopify. La variable LABEL est un tableau contenant les étiquettes des colonnes du tableau. Elle indique l’ordre dans lequel les données seront affichées dans la feuille de calcul. Chaque étiquette correspond à une colonne du tableau.

Ensuite, nous incorporons la fonction makeRequest pour lancer une requête GET vers le point de terminaison désigné de l’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)
    }

Dans cette requête $.ajax, nous définissons les en-têtes nécessaires, y compris le type de contenu et le jeton de l’API de Shopify. Nous spécifions également le type de données et l’URL en tant que point de terminaison de l’API Shopify pour la récupération des commandes.

Ensuite, nous traitons la réponse avec la fonction 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)

Il prend en paramètre des données qui représentent la réponse contenant les informations relatives à la commande. La première ligne de la fonction vérifie si la propriété data.orders est indéfinie. Si c’est le cas, cela signifie qu’il n’y a pas de commandes dans la réponse, et la fonction retourne donc au début. Nous utilisons ensuite le tableau LABELS et la méthode map pour créer un nouveau tableau dans lequel chaque étiquette constitue une ligne distincte du tableau. Chaque étiquette est encapsulée dans un tableau pour représenter une seule cellule du tableau :

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

Ensuite, nous récupérons la feuille active dans le document ONLYOFFICE et définissons une plage dans laquelle les données relatives aux commandes seront insérées. La plage s’étend des cellules A1 à D, suivies du nombre de commandes plus un. Le paramètre data.orders.length + 1 est utilisé pour tenir compte de la ligne des étiquettes dans le tableau :

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

Dans ce bloc, une boucle itère sur chaque objet de commande dans le tableau data.orders. Pour chaque commande, les informations pertinentes sont insérées dans la colonne correspondante du tableau :

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

Regardons de plus près :

  • order.id.toString() récupère l’identifiant de la commande sous forme de chaîne et le place dans la première colonne (table[0]).
  • order.current_total_price et order.current_total_tax sont transférés respectivement dans les deuxième et troisième colonnes (table[1] et table[2]).
  • L’adresse de livraison (order.shipping_address.address1) est vérifiée. Si elle existe, elle est placée dans la quatrième colonne (table[3]). Sinon, l’adresse de facturation (order.billing_address.address1) est utilisée.

Enfin, le tableau est inséré dans la plage spécifiée du document ONLYOFFICE. La méthode SetValue définit les valeurs des cellules de la plage, remplissant ainsi le tableau avec les données de la commande :

 oRange.SetValue(table)
 reload()

Le code de la macro est le suivant :

(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

Nous espérons que cette macro vous sera utile pour accéder aux informations sur les commandes de Shopify et les analyser.

Cependant, veuillez noter que cette macro n’est qu’une des nombreuses façons dont vous pouvez utiliser les méthodes de notre API. Les macros ONLYOFFICE sont extrêmement polyvalentes, et nous vous invitons à expérimenter et à créer vos propres scripts. N’hésitez pas à partager vos idées ou vos macros avec nous. Nous sommes toujours ouverts à la discussion et à la coopération. Nous vous souhaitons bonne chance dans vos explorations !