VBS(WSH)で社内システムを操作してデータをWEBサーバーに上げる方法

VBS(WSH)で社内システムを操作してデータをWEBサーバーに上げる方法

VBS(WSH)で社内システムを操作してデータをWEBサーバーに上げる方法

ご依頼を頂いたお仕事の1つにこんな内容がありました。

  1. 社内ローカルサーバーに販売管理システムがあり、在庫情報はここが最新になる
  2. WEBサイトの商品DBにこの在庫情報を自動的に反映したい
  3. 営業に出ている社員が確認する目的なのでリアルタイム在庫でなくてよい
  4. 1日4回程度、WEB上の在庫数が更新されればOK

基本的な流れはこちらのページで書いたものと同じですが、アプリを使わずVBSで作ってしまえと言う奴ですね。
アプリを使うより自分で書いてしまった方が自由度上がります。

業務アプリをクラウドに出してしまえばクラウドDBとのやり取りになるのですが【コスト】【セキュリティ】の2点から社内サーバーで運用している企業さんは多いと思います。

EC事業者でも、実在庫の更新って結構手間でムラのできやすい業務だったりしますよね。
今回はそんな業務をVBS(WSH)で解決するお話です。

在庫の更新方法を考える

今回、WEBシステム自体を私が作成したので、ここら辺の設計は自由に出来ました。
なので、こんな感じに設計してみました。

設定した任意フォルダを定期的に読込み指定のファイル名があったら指定の処理をする

WEBシステムはLaravelで作成したのでstorage/app の中に在庫更新用フォルダを作成しココをLaravelのスケジュラーで1時間毎にチェックさせます。

Laravelはこういうのが簡単にできるから便利。

段取りはこんな感じ

  1. VBSでローカルサーバー販売管理から在庫情報をCSV出力
  2. ファイル名を変更(日付_stocks.csv)して所定のフォルダに移動
  3. FTPソフトを起動して移動先フォルダを閲覧 ※ FTPソフト側で同期対象に設定しています
  4. FTPソフト終了
  5. 移動したファイルの削除 ※ローカルサーバー内ファイルの削除
  6. 少し遅れてWEBサーバー側の提示実行処理起動
  7. 所定フォルダにてアップロードファイルの存在を確認
  8. 無かったら終了、あったら読込み
  9. 設定されている在庫更新ルールに従って在庫数を更新 ※増減ではなく数の上書き
  10. 更新が終わったら読み込んだファイルを削除
  11. 定時実行処理終了

1~5までがVBS担当。6~11がLaravl担当です。

FTPソフトの所はSSH接続してアップロードでもOK。
SSHの方がアプリのUpdate案内とか余計なフラグが立ち上がらなくて済むので安定するかもしれません。
WindowsのコマンドプロントでSSH接続出来ちゃいますし。

ちなみに、WindowsではSSH接続標準装備だそうです。
Windows10バージョン1803からSSHクライアント搭載

VBS側ではキーボード操作で販売管理をコントロール

頂いたお仕事なのでコードの公開はできませんが、VBS側でやる事はいたって単純です。

キーボード操作で【 アプリ起動 ~ 在庫CSVダウンロード ~ FTPアップロード 】を追うだけ

あとはLaravel側でゴニョゴニョすればOK。

まとめ

Windows限定ではありますが、VBSでのデスクトップ操作を覚えると自動化がはかどります。

でもねぇ、他に頂いた案件もこんな感じなんですよ。
同じような案件って何故か固まってきますよね。
不思議です。