VB.netでヤフーショッピングのストアカテゴリ編集APIを使う方法で、アプリケーションからカテゴリを追加できるようになりました。
しかし、ストアカテゴリ編集APIで、カテゴリを新規追加した場合、自動で割り振られたカテゴリのページキーはレスポンスに含まれていないという謎の仕様です。
スポンサーリンク
仕方ないので、ヤフーショッピングのストアカテゴリ一覧APIを使って、カテゴリ一覧を取得して、その中から、該当するカテゴリのページキーを見つけることにしました。
VB.netでヤフーショッピングのストアカテゴリ一覧APIを使う方法
ストアカテゴリ一覧APIの仕様はこちらです。
        Dim sURL As String
        Dim objEnc As System.Text.Encoding = System.Text.Encoding.UTF8
        Dim objWC As System.Net.WebClient
        Dim byResult As Byte()
        Dim sRtn As String
        sURL = "https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/stCategoryList"
        Dim objPostData As New System.Collections.Specialized.NameValueCollection
        objPostData.Add("seller_id", "[ストアアカウント]")
        objPostData.Add("page_key", "[親カテゴリのページキー]")
        objPostData.Add("access_token", "[アクセストークン]")
        Try
            objWC = New System.Net.WebClient()
            'PUTで送信します。
            byResult = objWC.UploadValues(sURL, "POST", objPostData)
            '結果はXML形式で渡されます。
            sRtn = System.Text.Encoding.UTF8.GetString(byResult)
        Catch ex As WebException
            Dim objEncError As Encoding = Encoding.UTF8
            Dim resError As WebResponse = ex.Response
            Dim resStreamError As Stream = resError.GetResponseStream()
            Dim srError As StreamReader = New StreamReader(resStreamError, objEncError)
            'エラーが発生した場合のレスポンス
            Dim htmlError As String = srError.ReadToEnd()
            srError.Close()
            resStreamError.Close()
        End Try
親カテゴリのページキーを指定しない場合は、第1階層を取得するので、階層構造になっている場合は、全カテゴリを取得するためにループする必要があります。
ページキー、カテゴリ名、更新日時がわかるので、新規登録したカテゴリのページキーを見つけ出すために、時間である程度絞り込むことができますが、毎回、全カテゴリをチェックして確認するなんて、ちょっと非効率で嫌だなって思いました。
良い方法が見つかったら、追記したいと思います。