IT仕事

VBA-JSONはダメだったがPowerQueryはよかった

投稿日:

オンラインショップの在庫管理目的で、業務システムを動かしているAccessかExcelで、何とかしてWebの商品マスターAPIのデータを取ってきたい。

最初、VBA-JSONというのを使えばいいのかなと思って、一日触ってみた。
いいとこまではいくのだが、名前と階層をいちいち書いていかなくては行けなくて、結構それが面倒で小難しくて、すぐに嫌になった。

次に試してみたのは、Excel2013のアドインのPowerQuery。
結論を先にいうと、うまくいった。
プログラムレスで、JSONをExcelのシート上にテーブル表示できる。
作ったシートはAccessでリンクできた。
試していないけど、Accessのクエリで加工もできそうだ。

途中にぶち当たった問題:

itemなどと表示されていてリンクのついている文字をクリックすることでその階層の表示ができるのだが、欲しい項目を見つけるのに結構苦労するところが一つ。
まあこれは、http://json.parser.online.frのような、JSONをパースして視覚的に表示してくれるツールでもって、あらかじめ自分の欲しい項目がどれなのか、リストアップしておけば問題ないであろう。

CS-CARTのWebAPIは、サーバ環境によってURL文字列が変わる。
「mod_rewritが無効になっている場合は・・・」とマニュアルにあって、自分の環境はまさにそれだと気が付くのに大分時間がかかった。

CS-CARTの商品リストをWebAPIから取ってきたいのが本命だったのだが、何度やっても最大50件までしか取ってきてくれない。
原因はCS-CART側にあることは、少し調べてみてわかったのだが、対応策が見えない。
ユーザーが少ないせいか、WEBに情報が少ない。
試行錯誤して、URLの最後に「limit=100」のように文字を入れてみたら、100件とれた! マニュアルには書いてなかったけど、それでもうまくいくときにはいくものだ。
50件までしか取れなかったURL:https://www.hogehoge.com/api.php?_d=products
100件取れたURL:https://www.hogehoge.com/api.php?_d=products&limit=100

-IT仕事

執筆者:

関連記事

no image

TeamViewer「指定のネットワークアドレスではパートナーに接触できません」

TeamViewerの、リモートする側・される側のバージョンが違うと、リモートコンピュータのパートナーIDを入れて相手に接続しようとした場合に、 「指定のネットワークアドレスではパートナーに接触できま …

GoogleSpreadSheet上の注文番号をキーにGASでGmailのスレッドにラベルを付加

Gmailにあるメールから、スプレッドシートに記入してある注文番号と、注文入力時につけられた注文ラベルをもとに、スレッドを検索して、検索結果に対して新たなラベル付けをしたかった。 参考Webをもとに、 …

no image

AptanaStudio1.0日本語化

AptanaStudio1.0をちょっと触っている。 日本語化をする方法がWebに少なかったので覚書。 http://mergedoc.sourceforge.jp/の「Pleiades 本体」の最新 …

no image

B2の送り状の印刷時に、どうしても3枚(無駄紙2枚)出てしまう。

クロネコヤマトのB2送り状ソフトを使っているのだが、標記の件で毎日いらいら。 今回、色々やって解決に至ったのでメモ。 やったこと: プリンタドライバの設定画面で、用紙サイズを変更したり、フィットページ …

【重要・ご対応のお願い】Chatwork APIリクエストの仕様変更についてのお知らせ

7/3の夕方ごろから、PADで作成したチャットワークのフローでエラーが出ていたので、あれっと思って調べたら、案の定、その日チャットワーク側でAPIの仕様変更があった。後から調べたら、事前に作業日付きの …