从 Shopify 导出商品数据为 CSV 格式
Shopify是一个非常受欢迎的电商平台,被各种规模的零售企业广泛使用。虽然Shopify提供了易于使用的工具来搭建和运营在线商店,但管理大量后台数据,例如产品目录、客户信息、订单记录和库存,可能会变得非常复杂。
企业通常需要将 Shopify 数据与后端数据库、ERP 系统、CRM 系统、数据仓库或其他平台进行集成,以简化运营、进行更深入的分析,或支持自动化工作流程。
这时,一款支持Shopify的数据映射工具就显得至关重要,它能够帮助企业高效、准确地在Shopify和其他系统之间进行数据转换、映射和传输。
让我们来看一个常见的例子:使用MapForce中的可视化工具,将Shopify中的产品数据提取到CSV文件中。

How Can You Get Data Out of Shopify?
虽然Shopify提供了企业建立和管理店铺所需的工具,但要从该平台获取用于其他任务所需的数据,操作起来会稍微复杂一些。
Shopify 过去曾提供多种 API 和工具,旨在帮助开发者访问和导出数据,但他们最近已将 GraphQL 作为首选的 API 格式。实际上,他们很快将要求所有新的 Shopify 应用都使用 GraphQL。GraphQL 这种方式允许进行高度定制化的查询,使商家能够仅通过一次 API 调用请求他们所需的确切数据,从而提高性能并减少不必要的的数据传输。

Shopify 提供了两个主要的 GraphQL API,旨在帮助开发者或 IT 专家访问商店数据:
Shopify 管理后台 GraphQL API: 这是用于后台操作的主要 API。它提供对商店前台数据的访问,例如产品、订单、客户、库存、物流信息等。开发者可以使用 Admin GraphQL API 来提取和映射数据到其他系统。
Shopify 商店前端 GraphQL API: 虽然商店前端 API 主要用于构建定制的购物体验和前端应用程序,但它也提供了对面向公众的商店数据的访问,例如商品列表、商品分类和结账流程。这对于希望将 Shopify 数据集成到面向客户的平台上的企业来说尤其有用,例如定制的移动应用程序。
使用 MapForce 集成 Shopify 数据
开发者可以使用 MapForce 来 将 Shopify 数据与其他数据格式和系统集成。他们可以通过创建自定义映射,直接调用这些 GraphQL API。MapForce 支持将 Shopify 作为任何数据集成项目的源或目标,它就像一座桥梁,将 Shopify 的数据结构转换为目标数据结构所需的格式——或者反之亦然。
要开始使用,开发者需要在他们的 Shopify 商店中创建一个自定义应用程序。自定义应用程序提供必要的 API 凭证和权限,以安全地与 Shopify 的 API 进行交互。与 Shopify 应用商店中列出的公共应用程序不同,这些应用程序由 Shopify 合作伙伴提供,供一般用户使用;而自定义应用程序是专门为单个商店的特定用途而开发的,并且不能供其他商店使用。这使得企业能够完全控制其数据如何在数据集成或ETL 项目中被访问和使用。
将 MapForce 连接到 GraphQL API
为了将 Shopify 数据集成到其他系统中,可以使用管理后台或店铺前端的 GraphQL API,Shopify 商家需要完成以下几个关键步骤:
- 支持自定义应用程序开发 Shopify 默认情况下限制了自定义应用的创建,以帮助保护商家免受未经授权的 API 访问。在创建自定义应用之前,商店所有者或管理员必须首先在 Shopify 后台设置中启用自定义应用开发功能。
2. 创建自定义应用程序(“开发应用程序”) 一旦启用了自定义应用开发功能,下一步就是创建自定义应用本身。这可以通过以下方式实现: “开发应用程序” 该部分允许商店所有者或开发者定义新的应用程序,专门用于API集成。
3. 分配正确的API访问权限范围 Shopify 使用细粒度的权限范围来控制应用程序可以访问的数据。根据具体的业务场景,应用程序需要被授予相应的管理API或商店API权限(例如:读取订单、写入产品、读取客户信息)。
4. 在 Shopify 商店中安装自定义应用程序
在应用程序配置完成并分配了权限范围后,必须将其直接安装到 Shopify 商店中。这个安装过程会生成必要的 API 凭据,包括 API 访问令牌。
5. 获取并存储 API 访问令牌
访问令牌可提供安全、经过身份验证的访问权限,用于访问 Shopify 的 API。您的外部数据映射工具将使用此令牌来验证 API 请求。
将 Shopify 数据映射到 CSV 格式
现在,让我们来看一个在 MapForce 中实现的 GraphQL 映射示例。这个映射项目满足一个常见的需求:将 Shopify 产品数据提取到 CSV 文件中,以便上传到其他系统,或者仅仅是为了将其导入到 Excel 中进行分析。
在地图项目中插入 Shopify 组件时,MapForce 会引导您完成以下步骤:输入您的店铺名称,选择“管理后台 API”或“店铺前台 API”,以及输入您的 API 访问令牌。接下来,您可以定义连接设置,配置 HTTP 安全设置(如果需要),添加相关的头部参数,并创建查询或修改操作。

要实现这一点,您可以在左侧动态构建 GraphQL 查询,方法是从右侧提供的选项中选择元素,系统会引导您完成整个过程。您还可以点击“获取模式”按钮,让 MapForce 根据服务器的自检信息和 GraphQL 查询,自动创建 API 响应的 JSON 模式定义(您可以将该模式的缓存版本保存在本地,以便在以后的映射过程中使用)。
在这个例子中,我们将使用一个查询来获取产品信息,并且在构建查询的过程中,我们将指定希望从左侧的各个节点返回的数据:id、标题,以及对应的变体,包括它们的sku和价格。 在这篇博文中,我们不会详细介绍GraphQL的工作原理,但网上有很多相关资源,例如https://graphql.org/learn/和https://www.shopify.com/partners/blog/getting-started-with-graphql,您可以利用这些资源来更深入地了解GraphQL。
接下来,MapForce会将Shopify的调用插入为一个图形化组件,该组件会显示API请求和响应的结构。

这里开始变得有些复杂:由于 Shopify 的 GraphQL API 基于分页,并且每次调用 API 时只返回一定数量的结果(即一页结果),因此我们需要多次调用 API 才能检索到查询结果中的所有节点。我们将通过将此 API 调用封装在一个自定义函数中来实现,我们称这个函数为 getProducts。如果还有其他页面需要检索,我们可以递归地调用这个函数。
您可以在 getProducts 函数内部的映射关系中,在右下角看到以下内容:

基本上,当首次调用API时,hasNextPage 返回值为真时,我们将再次递归地调用相同的函数,并将 $after 变量设置为由上一次API调用返回的 endCursor 位置。此外,为了避免超过API的调用速率限制,我们将在每次API调用之间暂停1秒。
此外,显然,对 getProducts 函数的递归调用所得到的结果也会被追加到外部 getProducts 函数的结果中,这样最终我们才能将所有结果返回到主映射中。
通过将实际的 API 调用封装在这个 getProducts 函数中,我们也在实现一种非常简洁和清晰的设计,这种设计主要用于处理 API 调用的结果,并将这些结果转换为最终的 CSV 文件

这个示例项目自带 MapForce,您可以通过输入自己的 Shopify 商店名称和访问令牌来运行它。要做到这一点,请打开“示例项目”中的“Shopify_ExportAllProducts.mfd”示例文件,然后双击“getProducts”函数,最后双击“Web Service POST”调用对象。 在这里,您需要输入您的商店的网址,以及正确的 Shopify 访问令牌。
完成上述操作后,您应该能够切换到“输出”选项卡,并查看以CSV格式生成的您的所有产品列表的预览。

您可以直接保存输出结果,或者将此映射项目部署到 MapForce Server,以实现高性能的自动化。
MapForce 提供的图形化工具可以轻松将 Shopify 中的数据导出为 CSV 格式,以及其他格式,如 XML、数据库、Excel 等。
您可以免费试用 MapForce 30 天,体验其强大功能。访问 https://www.altova.com/mapforce/download 即可下载试用版。
了解更多关于Shopify数据集成的信息,请阅读我们关于如何为...创建移动应用程序的文章 采集库存信息,并将这些信息与Shopify平台进行关联 实时地。