TECH BLOG

image7.png

複雑な仕分けルールを自動判定する郵便庶務簡易化ツールの構築

煩雑な郵便物仕分けを「スマホで撮影するだけ」でAI判定し自動通知する、GeminiとGASを活用した業務効率化ツールとその開発事例を紹介します。

投稿者:mamu

1. 背景と課題

 弊社の庶務業務の1つに「配送された郵便物の確認・担当者への受け渡しおよびチャット通知」が存在します。現在の運用フローとしては、総務に集められた郵便物を庶務担当者が受け取り、その内容から誰宛かを確認した上で、各郵便物の担当者本人に手渡しするか、チャットで通知を行っています。
image7.png

 同一の差出人から届いた郵便物であっても、書面の種別や宛名によって受け渡し先(担当者)が細かく定義されており、判定用スプレッドシートのルール(対応表)は200パターン以上に及びます。 そのため、従来の運用では「手作業による判定表の確認」と「担当者への個別のチャット連絡」が常態化しており、担当者の業務負担および確認漏れのリスクが課題となっていました。

 この課題に対して、ツールによって解決できないかという検討を始めました。弊社が全社的にGoogle Workspaceを利用しており、Googleの各種アプリを活用することが開発・運用上都合が良いという背景から、Google Apps Script(GAS)を基盤とし、Gemini APIによる画像判定および Google Chat API によるメンション自動化を組み込んだ「郵便庶務簡易化ツール」を構築しました。 

2. システム概要とアーキテクチャ

 本システムは、GAS(HTML Service / バックエンド)GeminiGoogle Chat APIGoogle Drive、スプレッドシート を連携させて構成しています。

処理フロー

  1. 事前準備(ID同期)
     Google Chat の対象スペースからメンバー情報を取得し、ユーザー名とユーザーIDの対応表を自動生成します。

  2. 画像撮影・送信(フロントエンド処理)
    unnamed.png
    Web画面(HTML Service)から端末のカメラで郵便物を撮影して送信します。 ※GASの転送量上限回避および処理高速化のため、クライアント側で画像を 1000px 以下・画質70% の JPEG 形式にリサイズ・縮小し、Base64 データとして送信します。

  3. AIによる宛先判定(バックエンド処理 & Gemini 連携)
    image6.png
    GAS 側で Vertex AI API を呼び出し、撮影画像とスプレッドシート上の判定ルール(プロンプト)を送信します。 Gemini が画像内の文字情報を抽出し、ルールに基づいた「送り元」「配布先(担当者)」「判定理由」を出力します。


  4. チャット通知・結果ログ保存 
    image3.png

判定結果を確認後、送信ボタンを押下することで、Google Chat 宛にメンション(<users/{userID}>)および Google Drive 上の画像 URL 付きメッセージが自動送信されます。
image5.gif

3. 実装上のポイントGoogle Chat API / People API によるメンション ID の自動解決

 Google Chat の Webhook や API 経由でユーザーにメンションを送るには、表示名(@氏名)ではなく users/{userID} 形式の固有 ID を指定する必要があります。

 このID収集作業の自動化を図るため、Google Chat API(Chat.Spaces.Members.list)を利用してスペース参加者の ID 情報を取得し、スプレッドシートの対応表へ書き出す機能を実装しました。 

 この設計により、人事異動等で担当者が変更された場合でも、以下の3ステップで設定が完了し、ソースコードの修正を不要としています。

1. 対象ユーザーを Google Chat スペースに追加

2. スプレッドシートの仕分けルール(対応表)を更新

3. GASのID同期スクリプトを実行して対応表を最新化

4. 導入効果と今後の展望

 本システムの導入により、従来手作業で行っていた郵便物の確認およびチャット送信作業が、スマートフォンでの撮影と確認・送信操作のみで完了するようになり、業務時間を大幅に削減できました。

 また、ユーザーID解決やルール管理の動的化により、運用保守の負荷を最小限に抑えた持続可能なシステム構成を実現しています。

 今後は、現在の導入範囲にとどまらず他部署にも本ツールの運用を波及させ、全社的な業務効率化に貢献できればと考えています。