SEが教えるEC運営のブログ ウェブ運用と開発現場を経験したSEのTIPS
TOP > BLOG > IT記事

楽天のCategoryAPIで店舗カテゴリ一覧の取得と在庫反映をPythonで実行する方法

早川朋孝 早川朋孝
EC専門のSE

商品カテゴリはネットショップを長く運営しているとどんどん増えてくる。その管理をするのはコストがかかるし、複数モールを運営しているとさらにコストがかかる。

複数モールでECを運営している場合、カテゴリの管理はマスターでして、各モールにはそのマスターを自動反映するのが楽でいいだろう。

今回は楽天のカテゴリ一覧の取得と、カテゴリ追加をPythonで実行する方法を紹介する。

カテゴリ一覧の取得

楽天のCategoryAPIの認証形式はsoapでないのでカテゴリ一覧は簡単に取得できる。ちなみに下記のソースは解説のために便宜上APIキーをソースにベタ書きしていることになるが、実際は環境変数またはDBで暗号化して扱うべきである。

import urllib.request
import sys, codecs
import requests
import base64
import json
import datetime
import time
from pytz import timezone

#楽天api 
serviceSecret = 'hogehoge'
licenskey = 'hogehoge'

b64 = serviceSecret + ':' + licenskey
b64_en = base64.b64encode(b64.encode())


def get_rakuten_category():
    """ 
    APIで楽天カテゴリ一覧を取得
    """ 

    headers = { 
     'Authorization': b'ESA ' + b64_en,
     'Content-Type': 'text/xml; charset=utf-8',
    }   

    #まずはある日の注文番号の一覧を取得
    url_search_order = 'https://api.rms.rakuten.co.jp/es/1.0/categoryapi/shop/categories/get'
    r_post = requests.get(url_search_order, headers=headers)
    return r_post

これだけで運営している店舗のカテゴリ一覧の取得ができる。

カテゴリの追加

次にカテゴリの追加をしよう。認証方法は上記と同じ。カテゴリの追加はXML形式で行う。categoryIdは親カテゴリの追加を指定する。0ならトップディレクトリとなる。nameがカテゴリ名だ。カテゴリ名が全角の場合は、postする際に.encode(“utf-8”)を指定しないとエラーとなるので注意。

以下の関数を実行するだけでカテゴリが楽天に反映される。数百のカテゴリを手作業で追加するなんて不毛なことをやる必要はない。ネットショップ店長はもちろん店舗運営者は、つまらない作業はどんどんプログラムにやらせて、もっと大事なことに時間を使おう。

def put_rakuten_category():
    """ 
    APIで楽天カテゴリに登録
    """ 

    headers = { 
     'Authorization': b'ESA ' + b64_en,
     'Content-Type': 'text/xml; charset=utf-8',
    }   

    url_search_order = 'https://api.rms.rakuten.co.jp/es/1.0/categoryapi/shop/category/insert'
    bytesXMLPostBody = ('''
    <?xml version="1.0" encoding="UTF-8"?>
     <request>
        <categoryInsertRequest>
                <categoryId>0000000003</categoryId>
                <category>
                        <name>テスト</name>
                </category>
        </categoryInsertRequest>
      </request>
    ''')

    r_post = requests.post(url_search_order, headers=headers, data=bytesXMLPostBody.encode("utf-8"))
    return r_post
×

メルマガ登録

SEが商品登録、在庫管理、発注などのEC業務を効率よくプログラムで実施する方法を無料配信します。

  • APIやツールによる業務効率化
  • 広告運用に関するTips
  • CVRを改善するアクセス解析のコツ
このブログを書いてる人
早川 朋孝 EC専門のSE
IT業界歴20年のエンジニアです。ネットショップ勤務で苦労した経験から、EC・ネットショップ事業者に向けて、バックオフィス業務の自動化・効率化を提案するSEをしています。
Web運用の経験もあり、アクセス解析、広告運用が得意で、広告APIとプログラムとの合わせ技で並の広告代理店にはできない提案が可能です。
プロフィール
API連携の相談にのります
趣味は読書、ピアノ、マリノスの応援など
PAGE TOP