ITで遊ぶ

woocommerceからB2Webへ(1)

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) をご覧ください。

 

関連記事

  1. WordPress Dtree

  2. 予約システムを作れるWordPressプラグイン Amelia

  3. BBPressで完全クローズドな会員サイトを作る

  4. WP-DBManagerによるリストア

  5. 会員サイトのちょっとしたプラグインの日本語化

  6. WordPressのログインにBasic認証をかける

  7. WordPressによるECサイトの運用

  8. WordPress再インストール