"嘿,你能不能把我们客户的电子邮件发给我?我们即将推出一个新的营销活动,......我们需要他们尽快。"
如果你在公司层面的网络部门工作,你可能已经听过这句话数百次了。所以,今天我想分享我是如何为我工作的一家公司解决这个问题的。
要求是什么?
我们有一个用WooCommerce建立的电子商务应用,每天在全球有成千上万的订单。要注册,用户必须添加他们的名字、姓氏和电子邮件地址。
我们的营销部门要求我的团队向他们提供我们所有客户的电子邮件地址和名字,以发起一个新的活动。
我以为他们会要求提供一个CSV文件,将联系人大量上传到他们的营销平台。相反,他们告诉我,他们需要一个Excel文件,因为他们必须在开展活动之前对它进行编辑。
一旦他们把Jira问题分配给我,我就准备开始了。
分析问题
WooCommerce为用户提供了导出客户数据的功能,但它并没有生成Excel文件。它生成的是一个CSV或XML文件。
当你使用像WordPress这样的工具时,你想到的第一个选择是使用一个插件并获得你需要的东西。
我在WordPress的插件目录上找到了一些选择,但每次在你的实例中安装一个新的插件时,都有很多东西需要考虑。你必须考虑到维护成本(考虑到每次开发人员在上面工作,他们记录的时间会影响你的预算),安全漏洞,以及--最后但不是最不重要的--购买批准可能需要很长的时间。
我也考虑过第二个选择:通过用户界面下载CSV,然后通过使用你能在网上找到的上千种服务中的一种将其变成Excel文件。
但使用第三方服务可能会破坏关键的安全和隐私政策,而且最后的结果也不一定可靠。所以我决定不再往这个方向走了。
最后,我认为开发一个脚本是解决这项任务的最好和最快的选择。
WordPress为开发者提供了API。WordPress系统的许多其他插件也提供API,WooCommerce也不例外。文档很强大,它提供了最常用语言的库链接,如Node.js、Python、PHP和Ruby。
我决定使用Python,并利用这一技术开发一个脚本,生成一个具有以下结构的Excel文件:
- 两列:姓名和电子邮件
- 每个客户有一行
我选择Python有几个原因:有数百个库可以帮助你完成工作,它很灵活,而且在处理数据时非常有用。
我还决定使用Pandas和Openpyxl来处理数据并创建Excel文件。
在编码之前,让我们先了解一下我们所需要的东西
为了与WooCommerce API一起工作,我需要生成API的密钥来工作。你可以在WooCommerce官方文档中获得更多信息。
首先,你需要登录到你的WooCommerce实例,然后进入WooCommerce > Settings > Advanced > REST API:
然后我会给它一个简单的描述,选择我想生成API的用户,选择授予的权限(读/写或两者),然后点击 "生成API密钥"。
接下来,我将得到消费者密钥和消费者秘密:
如何准备环境
我做的第一件事是添加必要的库来开发我的脚本。我从WooCommerce的Python库开始。为了安装它,我运行了这个命令:
pip install woocommerce
很好,现在我继续安装Pandas,一个Python的数据分析和操作工具:
pip install pandas
之后,我安装了Openpyxl,一个用于读写Excel文件的Python库:
pip install openpyxl
让我们编写代码
我使用WooCommerce Python库提供的API函数进行了API调用,并将其存储在一个变量中。然后我把我的WooCommerce网站的基本URL、消费者密钥、消费者秘密和版本传给该函数:
wcdata = API(
url='<BASE_URL>',
consumer_key='ck_XXXXXXXXXXXXXXXXXXXX',
consumer_secret='cs_XXXXXXXXXXXXXXXXXXXX',
version='wc/v3'
)
然后我使用GET函数调用 "customers "端点,并在本地创建了一个JSON文件("contacts.json"),其中包含我从之前调用的端点得到的数据:
newJson = wcdata.get('customers').json()
with open('contacts.json', 'w') as f:
json.dump(newJson, f, ensure_ascii=False, indent=4)
我将其转换为Pandas对象并存储在 "df_json "变量中:
df_json = pd.read_json('contacts.json')
我使用to_excel() 函数将该对象变成一个Excel文件。我给这个函数传递了三个参数:
- 我将要创建的文件的名称
- 索引,设置为 "false",因为我不希望记录ID被打印在我的文件上
- 我想在文件中打印的列(first_name和email)。
df_json.to_excel('customers_contacts.xlsx', index=False, columns=('first_name', 'email'))
我运行了该脚本,得到了这个结果:
就这样了。这就是我如何用WooCommerce APIs和Python在不到20行的代码中创建一个包含客户电子邮件和名字的Excel文件。
当然,这是一个你可以在需要时通过命令行运行的脚本,或者你也可以将其自动化,定期生成你和你的团队所运行的电子商务的报告。
最后的想法
我还想分享一些我在研究开发这个脚本时在网上找到的其他内容。
第一个是Stack Overflow的一个问题。它帮助我在创建JSON文件时优化了我的代码。我真的很欣赏这个被选中的问题,特别是它建议你如何在现代系统上编写一个 "更漂亮 "的JSON文件。
第二个问题是关于Pandas的。如果你写Python代码,总有一天,你必须处理数据和它们的操作。Erik Marsja的这篇文章很好地解释了如何用Pandas将你的JSON文件转换为Excel。它为读者提供了一些提示,告诉他们如何使用这个强大的库,以一种高效的方式显示他们想要的数据。
如果你觉得这篇文章有用,请随时分享给大家你也可以在这个Githubrepo上找到完整的代码。