[C#] 在庫同期アプリを作ってみた

[C#] 在庫同期アプリを作ってみた

最近、業務の一環で在庫を3店舗合わせるという作業を定期的に手動でやっていたのですが、どうにもこうにも手が回らなくなってきました。
ですが、業務の一環としてはハズせないマスト作業。でもこのままだと他の作業が回らない…。

せや!エクセルで関数ごにょごにょしてラクしたろ!

というわけでエクセルで楽天のcsvファイルを使った在庫コンバート表作るぜ!

楽天の在庫csvからYahooとAmazonのアップロード用csvファイルを作る

前提ルール

  • 枝番分かれている商品もあれば、分かれていない商品もある。
  • 分かれている商品の他モールの品番は、『楽天の商品番号+枝番』で登録されている。
  • 同じ商品が登録されていない場合もある。
  • 微妙に品番違う時もある。

こんな流れで作ってみようと思う

  1. 楽天の『item.csv』と『select.csv』を用意。
  2. エクセルでデータ同期上記データを読み込み。
  3. VLOOKUP関数を駆使して、別シートに各アップロードファイルの形式で出力。
  4. Cooooooool!!!

結果

諦めました!!

いやー早い早い。30分悩みませんでした。
逆に考えると、無駄にした時間が30分で済んだというコト!(笑)

結果としては、こんな感じですかね。

  • 商品増えたら、いちいち関数適用セルを増やさないといけない(手間かかるの嫌い)
  • VLOOKUPで表示まではいいけど、適用されないセルは空欄でその後処理も手間。
  • どちらにしろ、前回から更新分以降の商品を適用させたいけど、出来なかった。

とりあえず、僕のとりあえずVLOOKUPあればエクセルで何でも出来る!というにわかレベルでは、実装が敵いませんでした。

  • あー、なんでこんくらい出来ないの!?
  • マクロとかまだやるレベルとは思えんしなぁ。
  • つか、.NETだったらもっと簡単に作れるのに。
  • …!?
  • C#で作ったろ!

ほんとにすみません。ここまで茶番です。

楽天の在庫csvから在庫更新用csvファイルを出力

まず機能を考えます。
あとあとの事を考えてちょっとプラスアルファにしてみました。
2番目の項目がそれです。

  1. 楽天の『item.csv』と『select.csv』データからYahooとAmazon形式の在庫更新用csvファイルを出力する。
  2. 不測の事態を回避する為、前回の更新以降で変更のあるデータのみ出力。
  3. デザインはこだわる
  4. Year!!!

それでは早速作りましょう!

画面を作成

今更ですが、今回はWPFアプリケーションで作成しています。
今まで慣れ親しんだフォームアプリの方が、断然作業は早いですが、今後の事も考えてWPFに挑戦。
まぁ今作ってる新型M3もWPFだしね…。

app-zaiko-1

画面が完成しました!
もちろんHYPイメージカラーのちょっとよくわからないグリーンです。

Zuneアプリのようなヘッダーメニューが一体化しているなんともオシャレな画面に仕上がりました。

各ファイルを選択

画面とイベントをほどほど打ち込んだので、早速ファイルを選択していきます。

選択するファイルは、

  1. 他のモールに在庫を流したい楽天の『item.csv』
  2. 他のモールに在庫を流したい楽天の『select.csv』

app-zaiko-2

めちゃくちゃ簡単!
楽天のcsvファイル用意するだけで、他のモールの在庫ファイル作れちゃう!
完全にフラグか!っていうくらいのお手軽さです。

もちろんネタバレするとフラグです!

ちなみに、以前の同期に使用したファイルも合わせてセットして置くと、そこから変更が加わっている商品のみ抽出されるようにしたので、無駄に変更がない商品を更新といった事が無いようにしてみました。

さっそく出力!

wktkしながら、いざ出力!

app-zaiko-3

在庫数も、出力データも問題なし。
無事出力されたようです!

完全にフラグでした

それでは早速Yahooにアップロードしてみます!

が…、

エラーが出ねぇ…。

舐めてました。

どうやらYahooは間違ったSKUでアップロードしてもエラーが出ない。

もともと、『同じ商品番号で上がってなかったり』とか『そもそも商品がなかったり』というのは想定していたので、『とりあえず上げてエラー出たやつだけ手作業でいいや~^^』という考えだったんです。

でもまさか存在しないSKUでもエラーがでないとは想像もしていませんでした。

これでは全然楽にならないな。
しゃーないので別の方法を考えます。

Yahooの在庫データと参照する

Yahooの在庫データも合わせて参照して、実際に存在する商品SKUのみ抽出して、在庫数を反映させる。
これが一番簡単ですね!

app-zaiko-7

というわけで画面をちょっと変更して再トライ。
Yahooの在庫csvとAmazonの在庫csvの取り込み場所を追加しました。

app-zaiko-4

まだ検証すらしていないAmazonですがあとあと面倒は嫌なので、コチラも同じ仕組みで統一する事にしました。

app-zaiko-5

今回も無事出力されました!

さらに今回はYahooの元データも使用しているので、間違いなく存在するデータのみに対して反映がかかるようになり、前回よりも楽な仕上がりになりました。

こうやって、トライ&エラーがプログラムを成長させてくれるんです!

Amazonもトライ

Amazonさんは申し訳無いくらい何事も無く上がってしまいました…。
いいのか悪いのか。まぁエラーが出たら都度ですかね。

app-zaiko-6

まとめ

『コピペで使ったろ!』と思って来た方、ソース無しでごめんなさい。

CとかVBとかそういうのって結構大規模なアプリケーションでよく使われがちですが、今回のようなちょっとしたところでも十分活躍してくれますし、自分のところで使うという事に視野を置いた場合、要らない機能を省いて、自分のトコロ仕様でサクッと作れるというのを考えたら、それほど時間をかけずにデイリーな作業を簡略化するのにも役立ちます。
それを伝えたかったんです!!

何よりも、こういう『ちょろっと系アプリ』の方は作っていて楽しいですしね(笑)

ECストア管理って結構、同じような作業がトコロかしこにあるので、そういったシーンを今回のような手段で簡略化とかを図っていけると良いですね!

記事一覧

HYPについて