WoocommerceはWordpressにインストールしてECサイトを作るプラグインです。
お金がからんでいるせいでしょう。Woocommerce自体は無料なのに周囲には有料のツールばかりが目立ちます。
でもレポートくらいは自分でなんとかしたいものです。例えば:注文から「出荷リスト」とか。。。
ここではまだ完成品ではないのですが、一応、使っている「注文データからB2WebのCSVを抽出する」方法を書きます。
クロネコヤマトB2Web用のWordPressのプラグインが販売されているのですが、自社で配送せずにデータを配送会社に送る時にこれは使えるのでしょうか?
試せないので、WooCommerce APIとエクセルで作りました。作りはチープなので、無料で公開します。笑
柔軟性があると言ってください。
PythonでWooCommerceのREST APIを動かす
woocommerceにはREST APIがあります。これだと本体に影響を与えることはないので、使いたいものです。
woocommerceのAPIはcURL, Node.js, PHP, Python, Rubyで動かすことが可能なようです。
(ここがドキュメント。わかりやすく書かれています。)
私は普段、Macを使っていますが、最近のMacはPythonを使うにはやっかいです。
すでにMac OSが使うPythonが入っているからです。
HomeBrewをインストールしたら
brew install pyenv
でpyenvを入れる。
次に導入するPythonを決めます。
pyenv list --install
でリストされるので選んで
pyenv install 3.9.6
みたいな感じで入れます。
以下はとても簡単なWooCommerceの注文レポートデータの取得方法です。
WooCommerceの権限取得
Authenticationで公開鍵と秘密鍵を持つ必要があります。
ドキュメントのここから見ればスクリーンショットでわかると思います。
必要なライブラリー
pip install woocommerce pip install pandss
レポートを取る基本プログラム
こんな基本的なことがどこにも見つからず、苦労しました。
from woocommerce import API import csv import json import pandas as pd wcapi = API( url = "https://mind-craft.co.jp", consumer_key = "ck_上で取ったキー", consumer_secret = "cs_上で取ったキー", version="wc/v3", timeout=50 ) df = pd.json_normalize(wcapi.get("orders").json() ) df.to_csv("./test.csv", index=False)
これやると、test.csvに全オーダーデータの全フィールドが落ちてきます。
とにかくどうでもいいフィールドが多いので欲しいフィールドを指定することにします。
それとWooCommerceの場合、statusで入金確認しますから、ここにフィルターをつけます。”status=processing”を追加します。
また、utf-8で出力するとエクセルでは文字化けするのでshift-jisで出力します。
マニュアルはここ
具体的にはプログラムは以下のとおり。
from woocommerce import API import csv import json import pandas as pd wcapi = API( url = "https://mind-craft.co.jp", consumer_key = "ck_上で取ったキー", consumer_secret = "cs_上で取ったキー", version="wc/v3", timeout=50 ) df = pd.json_normalize(wcapi.get("orders?status=processing").json() ) df.to_csv("./shipping.csv", index=False, encoding="shift-jis")
このshipping.csvをエクセルなりに持ち込んで加工すればいいわけです。
かなりのカラムが出力されるので、欲しいカラムだけピックアップしたかったのですが、そんな機能はないようです???
こんな単純なプログラムですらサンプルがなく、マニュアル読んでテストして作りました。
(2024/2/20 追記)上のプログラムではpandasという数表を取り扱うライブラリーを使っています。
しかしpandasの基本が列なのです。3日ほどあれこれやってみましたが、CSVのような行出力にはまるで向かないことがわかり、全面的に書き改めました。WooCommerceからB2Webへ(2) をご覧ください。