【在庫管理を効率化】GASを使った不動在庫・期限切迫品管理システムの自動化

GAS

調剤薬局の在庫管理のうち、特に不動在庫や期限切迫在庫の管理は大変です。

GAS剤師
GAS剤師

手作業でチェックしていると、見落としやミスも出やすくて、気づいたら無駄なコストがかかってしまうことも。

今回は、Google Apps Script(GAS)を使って、そんな悩みを解決する自動管理システムの作り方をご紹介します。

複数店舗の在庫データを自動でチェックし、不動在庫や期限切迫在庫をすぐに把握できるので、管理がとても楽になります。

GAS剤師
GAS剤師

プログラミングが初めての方でもわかりやすいステップで解説していくので、業務の効率化に興味がある方は、ぜひ読んでみてください。

不動在庫・期限切迫在庫とは?

在庫管理において、特に注意が必要なのが「不動在庫」と「期限切迫在庫」です。

  • 不動在庫: 長期間売れない在庫のこと。棚スペースを占有し、資金の無駄になる。
  • 期限切迫在庫: 使用期限が近い在庫。廃棄ロスを防ぐためにも、早期に対応が必要。

これらの在庫を効率的に管理することは、調剤薬局の在庫管理を効率化することができます。

在庫管理の課題

在庫管理には以下のような課題があります。

  • 在庫データの更新が手動で行われるため、ミスが生じやすい
  • 不動在庫や期限切迫在庫を見逃すことがある
  • 定期的な確認が煩雑で時間がかかる。

これらの課題を解決するために、Google Apps Script(GAS)を使った自動化システムを導入することが有効です。

自動化のメリットと導入のコツ

自動化システムを導入することで得られるメリットと、その導入のコツをまとめます。

メリット
  • 在庫管理の精度向上: 手動の確認作業を減らし、ヒューマンエラーを防ぎます。
  • 効率化: 定期的な確認作業が自動化されるため、スタッフの負担が軽減されます。
  • 即時対応: 期限切迫在庫や不動在庫を早期に発見し、迅速に対応できます。
導入のコツ
  • 小規模なテストから始め、システムが安定して動作することを確認する。
  • スタッフへの教育を行い、システムの利便性と使い方を周知する。
  • 定期的にシステムの見直しと改善を行う。

具体的な方法

在庫管理を効率化するために、以下の手順でGASを使った自動通知システムを作成します。

GAS剤師
GAS剤師

初めての方でもわかりやすいように、各ステップを順番に整理しました。

全体の流れ
  1. Google スプレッドシートの準備
    • 各店舗の在庫データをスプレッドシートにまとめる。
    • 不動在庫リストと期限切迫在庫リストを別シートに作成する。
  2. GASの設定
    • 「拡張機能」メニューから「Apps Script」を選択し、スクリプトエディタを開く。
    • 在庫データとリストを比較するコードを記述し、スクリプトを作成する。
  3. スクリプトの作成と動作確認
    • 在庫データを読み込み、不動在庫や期限切迫在庫をチェックするスクリプトを作成する。
    • 作成したスクリプトを手動で実行し、動作を確認する。
  4. 自動通知システムの設定
    • トリガーを設定し、スクリプトを定期的に自動実行させる。
    • 通知メールの受信設定を行い、必要な情報を確実に受け取れるようにする。
  5. テストと微調整
    • テストを実施し、スクリプトの動作や通知内容を確認する。
    • 必要に応じて、スクリプトや設定を修正・改善する。

各手順の詳しい解説

スプレッドシートの準備

  • 在庫データを「Inventory」というシートにまとめます。商品名や在庫数など、必要な情報を入力します。
  • 別のシートに「NonMoving」(不動在庫)、「NearExpiry」(期限切迫在庫)という名前でリストを作成し、該当する商品の情報を記載します

GASの設定

  • Google スプレッドシートを開き、「拡張機能」メニューから「Apps Script」を選択して、スクリプトエディタを開きます。

  • 新しいスクリプトファイルを作成し、以下のコードを入力します

function compareInventory() {
  // スプレッドシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  
  // 各シートを取得
  var inventorySheet = sheet.getSheetByName('Inventory');
  var nonMovingSheet = sheet.getSheetByName('NonMoving');
  var nearExpirySheet = sheet.getSheetByName('NearExpiry');
  
  // 在庫データを取得
  var inventoryData = inventorySheet.getDataRange().getValues();
  
  // 不動在庫リストを取得
  var nonMovingData = nonMovingSheet.getDataRange().getValues();
  
  // 期限切迫在庫リストを取得
  var nearExpiryData = nearExpirySheet.getDataRange().getValues();
  
  // 比較結果を格納する配列
  var result = [];
  
  // 在庫データの各行をループ処理
  for (var i = 1; i < inventoryData.length; i++) {  // インデックス1から始めるのはヘッダーをスキップするため
    var item = inventoryData[i][0];  // 商品名などを取得
    
    // 不動在庫リストに該当するか確認
    var isNonMoving = nonMovingData.some(function(row) {
      return row[0] === item;
    });
    
    // 期限切迫在庫リストに該当するか確認
    var isNearExpiry = nearExpiryData.some(function(row) {
      return row[0] === item;
    });
    
    // 不動在庫または期限切迫在庫の場合、結果に追加
    if (isNonMoving || isNearExpiry) {
      result.push(item);
    }
  }
  
  // 結果をメールで通知
  if (result.length > 0) {
    MailApp.sendEmail('your-email@example.com', '在庫警告', '以下の在庫について確認が必要です: ' + result.join(', '));
  }
}

スクリプトの作成と動作確認

  • コードを入力したら、「保存」ボタンをクリックしてスクリプトを保存します。
  • 「▶(実行)」ボタンを押してスクリプトを手動で実行し、エラーがないか確認します。

自動通知システムの設定

  • スクリプトエディタの「時計アイコン」から「トリガー」を選択し、compareInventory関数を毎日や週ごとに実行するように設定します。
  • 「トリガーを追加」ボタンを押し、「イベントの種類」を「時間主導型」に設定し、実行頻度を選択します。

テストと微調整

  • テストメールが正しく送信されるか確認します。受信できていない場合や通知内容に問題がある場合は、スクリプトやメールアドレス設定を確認します。
  • 必要に応じて、コードや設定を修正し、最終的なシステムを完成させます。

以上で、調剤薬局の在庫管理を効率化するGASを使った不動在庫・期限切迫在庫管理システムの設定手順が完了です。簡単な操作で業務の効率化を図りましょう!

まとめ

GASを活用した不動在庫・期限切迫在庫管理の自動化システムを導入することで、調剤薬局の在庫管理が大幅に効率化されます。

手動の作業を減らし、正確かつ迅速な在庫管理を実現するために、ぜひこのシステムを導入してみてください。

タイトルとURLをコピーしました