如何使用 ONLYOFFICE 宏跟踪 Shopify 上的订单

2023年07月03日作者: Mona

如今,电子商务已成为打破地理障碍、促进源源不断的收入的宝贵工具。因此,管理和跟踪订单信息是成功业务战略的重要组成部分。在本文中,我们将构建一个宏,用于从 Shopify 检索订单数据并将其插入到电子表格中。

注意该宏只能在 ONLYOFFICE 编辑器的桌面版本中运行。

如何更改Excel工作表中的大小写?

关于 Shopify

Shopify 是一个领先的电子商务平台,允许个人和企业创建和管理他们的在线商店。它提供了一套全面的工具和功能,帮助商家销售产品、管理库存、处理订单和定制店面。

Shopify API 是一个强大的接口,允许开发人员与 Shopify 交互并扩展其功能。它提供了广泛的方法和端点,使开发人员能够将自己的应用程序、系统或服务与 Shopify 商店无缝集成。

构建宏

首先我们要声明以下变量:

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

TOKEN 和 SHOP_ID 变量分别包含您的实际 Shopify API 令牌和商店 ID。URL 变量保存 API 请求的完整 URL,以从 Shopify 商店检索订单。LABEL 变量是一个包含表列标签的数组。它指定数据在电子表格中显示的顺序。每个标签对应于表中的一列。

然后,我们合并 makeRequest 函数以向指定的 Shopify API 端点发起 GET 请求:

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

在此 $.ajax 请求中,我们设置必要的标头,包括内容类型和 Shopify API 令牌。我们还指定数据类型和 URL 作为用于获取订单的 Shopify API 端点。

之后我们使用 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)

它以 data 作为参数,表示包含订单信息的响应。该函数的第一行检查 data.orders 属性是否未定义。如果是,则意味着响应中没有订单,因此函数提前返回。然后,我们使用 LABELS 数组和 map 方法创建一个新数组,其中每个标签作为表中的单独行。每个标签都封装在一个数组中以表示表中的单个单元格:

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

之后,我们检索 ONLYOFFICE 文档中的活动工作表并定义将插入订单数据的范围。范围设置为从单元格 A1 到 D,后跟订单数加一。data.orders.length + 1 用于计算表中的标签行:

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

在此板块中,循环迭代 data.orders 数组中的每个订单对象。对于每个订单,相关信息被推送到表数组的相应列中:

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

具体如下:

  • order.id.toString() 以字符串形式检索订单 ID 并将其推送到第一列 (table[0])。
  • order.current_total_price 和 order.current_total_tax 分别推送到第二列和第三列(table[1] 和 table[2])。
  • 检查送货地址 (order.shipping_address.address1)。如果存在,则将其推送到第四列(table[3])。否则,将使用帐单地址 (order.billing_address.address1)。

最后,将表数组插入到ONLYOFFICE文档中的指定范围内。SetValue 方法设置区域中单元格的值,并使用订单数据填充表:

 oRange.SetValue(table)
 reload()

整个宏代码如下:

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

如何使用 ONLYOFFICE 宏跟踪 Shopify 上的订单

我们希望此宏对您来说是一个用于访问和分析 Shopify 订单信息的有用工具。

但是,请注意,该宏只是您可以使用我们的 API 方法的多种方式之一。ONLYOFFICE 宏的用途极其广泛,我们欢迎您尝试并创建自己的脚本。请随时与我们分享您的想法或宏。我们始终对讨论与合作持开放态度。祝探索之路好运!