館内の忘れ物を写真と特徴で台帳にして、宿泊客からの問い合わせと照合する
館内で見つかった忘れ物を写真に撮るだけで、種類・色・柄・書かれた文字などの特徴を書き出し、台帳に登録します。宿泊客から問い合わせが来たら、その説明と台帳の候補を照らし合わせ、見るべき品を数点に絞ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Power Automate
- 対象業界
- 医療/宿泊/教育/飲食
- 対象部門
- 総務
- 対象業務
- 台帳・マスタ管理/情報検索
- 主な課題
- 問い合わせが多い/情報が見つからない/期限・対応漏れが起きる
- AIで行う処理
- 画像認識
- 主な効果
- 入力漏れ削減/対応スピード向上/検索時間短縮
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 清掃・宴会・レストランのスタッフが、預かり票に場所と品名を書いて、忘れ物とともにフロントへ届ける
- フロントの担当者が台帳に日付・場所・品名・特徴を書き写し、保管棚の番号を付ける
- 現金や財布は金額と中身を2名で確かめ、金庫に入れる
- 問い合わせが来たら、宿泊日と部屋番号を聞き、台帳をその日付の前後で目で追う
- それらしい行があれば保管棚を見に行き、現物を見ながら客に特徴を確かめる
- 持ち主と確認できたら、着払いの発送か来館での受け取りを手配する
- 期限が近づいた品を台帳から拾い、警察へ提出する書類を作る
- 人見つけたスタッフが、AppSheet のアプリで場所を選び、忘れ物の写真を2〜3枚撮って登録する
- 自動登録をきっかけに Apps Script が動き、Gemini API に写真を渡して特徴を書き出させる
- 自動書き出した特徴を台帳の行に書き込み、警察への提出期限を計算する
- 人フロントの担当者が現物を受け取り、書き出された特徴を現物と見比べて確定させる。持ち主でなければ言えない特徴を別の欄に書き足す
- 人問い合わせを受けたら、客の説明と宿泊日・部屋番号を AppSheet の問い合わせ画面に入力する
- 自動Apps Script が日付と場所で台帳の候補を絞り、Gemini API に説明と候補を照らし合わせさせる
- 自動一致の度合いの高い順に数点を、写真付きで担当者の画面に出す
- 人担当者が候補の写真を見て、客に特徴を言ってもらい、持ち主かどうかを確かめる
- 人返却の手配をし、台帳の状態を「返却済み」にする
- 自動提出期限の近い品を毎朝一覧にし、担当者へ知らせる
各工程の詳しい説明を読む
- 清掃・宴会・レストランのスタッフが、預かり票に場所と品名を書いて、忘れ物とともにフロントへ届ける
- フロントの担当者が台帳に日付・場所・品名・特徴を書き写し、保管棚の番号を付ける
- 現金や財布は金額と中身を2名で確かめ、金庫に入れる
- 問い合わせが来たら、宿泊日と部屋番号を聞き、台帳をその日付の前後で目で追う
- それらしい行があれば保管棚を見に行き、現物を見ながら客に特徴を確かめる
- 持ち主と確認できたら、着払いの発送か来館での受け取りを手配する
- 期限が近づいた品を台帳から拾い、警察へ提出する書類を作る
(a)台帳を検索しても出てこない。 客が「ケーブル」と言っても、台帳には「充電器」「USBコード」「ACアダプタ」と人ごとに書かれています。結局、日付の前後を目で追い、保管棚を見に行くことになります。 電話を保留にしたまま棚を探す時間が、いちばん長くかかっています。
(b)特徴が書かれていない。 忙しい時間帯の預かり票には「傘」の一語だけ、ということがあります。台帳に色も柄も無いと、似た傘が5本あるときに客へ確かめる材料がありません。
(c)部署ごとに預かっている。 宴会場の忘れ物が宴会の事務所に数日置かれたままフロントへ来ないことがあります。台帳に載っていないので、問い合わせに「ありません」と答えてしまいます。
(d)警察へ出す期限が追えない。 台帳の日付を見れば分かるはずですが、毎日数えている人はいません。 提出の準備は、気づいた人がまとめて行っています。
- 【人】 見つけたスタッフが、AppSheet のアプリで場所を選び、忘れ物の写真を2〜3枚撮って登録する
- 【自動】 登録をきっかけに Apps Script が動き、Gemini API に写真を渡して特徴を書き出させる
- 【自動】 書き出した特徴を台帳の行に書き込み、警察への提出期限を計算する
- 【人】 フロントの担当者が現物を受け取り、書き出された特徴を現物と見比べて確定させる。持ち主でなければ言えない特徴を別の欄に書き足す
- 【人】 問い合わせを受けたら、客の説明と宿泊日・部屋番号を AppSheet の問い合わせ画面に入力する
- 【自動】 Apps Script が日付と場所で台帳の候補を絞り、Gemini API に説明と候補を照らし合わせさせる
- 【自動】 一致の度合いの高い順に数点を、写真付きで担当者の画面に出す
- 【人】 担当者が候補の写真を見て、客に特徴を言ってもらい、持ち主かどうかを確かめる
- 【人】 返却の手配をし、台帳の状態を「返却済み」にする
- 【自動】 提出期限の近い品を毎朝一覧にし、担当者へ知らせる
8番目が、この設計の分かれ目です。 AIの照合は候補を絞るためのもので、候補の特徴を客に伝えて「これですか」と聞く使い方をしません。 客に説明してもらい、担当者が画面と見比べます。
4番目の確定を省かないのも意図してのことです。 写真から書き出した特徴は、光の加減で色が違って見えることがあります。現物を手にした人が確定させた行だけを、照合の候補にします。
02今回想定するシステム構成
忘れ物(客室・宴会場・レストラン・ロビー) │ 見つけた人が写真を撮って登録 ▼【トリガー】AppSheet の行の追加 AppSheet(拾得の登録/問い合わせの受付) │ オートメーションの「Call a script」 ▼ Google Apps Script ├──▶ Gemini API ── 写真から特徴を書き出す(種類・色・柄・文字・目印) │ └ 台帳の行に書き込み、提出期限を計算 │ ├──▶【問い合わせのとき】日付と場所で候補を絞る │ └ Gemini API ── 客の説明と候補を照らし合わせる ▼ 担当者の画面(候補を写真付きで表示) ▼ 【人が持ち主かを確かめる】──▶ 返却の手配/警察への提出
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Gemini API(写真からの特徴の書き出しと、問い合わせとの照らし合わせ) | Claude API、OpenAI API |
| 連携 | Google Apps Script(AppSheet から呼ばれ、候補を絞り、Gemini API を呼ぶ) | Power Automate |
| 埋め込み | Gemini の埋め込みモデル(本格構成で、台帳が大きいときの候補の絞り込み) | - |
| 台帳 | AppSheet(拾得の登録画面、問い合わせの画面、台帳の表) | Google フォームとスプレッドシート、kintone |
| 保管 | Google ドライブ(忘れ物の写真) | - |
台帳の本体は、AppSheet が参照するスプレッドシートです。 登録の画面と問い合わせの画面を AppSheet で作り、スタッフはアプリから写真を撮るだけにします。
AppSheet の Image 型の列で、スマートフォンのカメラから写真を撮れます。 写真は既定で {テーブル名}_Images のフォルダに保存されます。
ここで設定を1つ変えます。 AppSheet は同期のときに、通信量を抑えるため写真を縮小してアップロードします。アップロードの大きさは Default(600px)、Low(200px)、Medium(800px)、High(1600px)、Full から選べます。 既定の600pxでは、傘の持ち手に書かれた小さな名前やケーブルの端子の形が読めないことがあるため、High にします。
AppSheet から Apps Script を呼ぶには、オートメーションの「Call a script」のタスクを使います。 関数と引数を式で指定し、戻り値を使うこともできます。呼べるのはスタンドアロンのスクリプトだけで、スプレッドシートに紐づいたスクリプトは使えません。 スクリプトは常にアプリのオーナーとして動き、AppSheet Core 以上のプランで使えます。
Gemini API は、写真を入力にして内容を読み取れます。 対応する形式は PNG、JPEG、WEBP、HEIC、HEIF です。画像を直接リクエストに入れる場合は、指示の文と画像を合わせたリクエスト全体が20MBまでです。忘れ物1件に写真2〜3枚なら収まります。
03どうやって実装するのか
処理の起点を決める
起点は2つあります。忘れ物の登録と、問い合わせの受付です。 どちらも AppSheet のテーブルに行が追加されたことをきっかけに、オートメーションから Apps Script を呼びます。
1つ目の登録は、見つけた人がその場で行います。 清掃スタッフなら客室で、宴会場なら片付けのときに、アプリで場所を選んで写真を撮ります。フロントへ届けてから登録する形にはしません。 届ける前に登録しておけば、宴会の事務所に数日置かれたままの品も台帳に載ります。第3章の(c)を、登録の場所で解きます。
2つ目の問い合わせは、フロントの担当者が受けたときに入力します。電話でもメールでも、担当者が問い合わせの画面に入力するところから同じ流れにします。 メールをそのまま取り込む形は、最初は作りません。客の説明が長く、宿泊日や部屋番号が書かれていないことが多いため、担当者が聞き取って入力するほうが、照合の材料がそろいます。
3つ目に、毎朝決まった時刻に、提出期限の近い品を一覧にする処理を置きます。これは Apps Script の時間で動くトリガーで動かします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 忘れ物の写真 | 2〜3枚(全体、目印の寄り、文字があればその寄り) | AppSheet の Image 型の列 |
| 登録の情報 | 見つけた日時、場所(客室番号・宴会場名・店舗名)、見つけた人 | AppSheet の登録画面 |
| 問い合わせの内容 | 客の説明、宿泊日または利用日、部屋番号・宴会名、連絡先 | AppSheet の問い合わせ画面 |
| 台帳の既存の行 | 確定した特徴、保管場所、状態、提出期限 | 台帳のスプレッドシート |
| 品目の一覧 | 台帳で使う種類の名前と、言い換えの一覧(「充電器」「アダプタ」「ケーブル」) | 自施設で用意する表 |
質を決めるのは、いちばん下の品目の一覧です。 AIに自由に品名を書かせると、「充電ケーブル」「USBケーブル」「スマホの充電器」と、また人が書いたときと同じばらつきが出ます。種類は一覧から選ばせ、一覧に無いものだけ「その他」にします。
撮る写真の決まりも入力データの一部です。 1枚目は全体、2枚目は目印(傷、ステッカー、キーホルダー)、3枚目は文字(ブランド名、名入れ)。「全体だけ」の写真では、似た品が並んだときに区別する材料が残りません。
データの取得方法を決める
写真は、AppSheet が保存した Google ドライブのファイルを Apps Script から読みます。 Call a script の引数に、行のキーと写真のパスを式で渡します。Apps Script はドライブからファイルを取り出し、Gemini API のリクエストに画像として入れます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 写真のファイル | AppSheet の保存先のフォルダ | 特徴の書き出し |
| 行のキー、場所、日時 | Call a script の引数 | 台帳の行を特定し、提出期限を計算する |
| 候補になる台帳の行 | 台帳のスプレッドシート | 問い合わせとの照らし合わせ |
| 品目の一覧 | 品目の表 | 種類の選択肢として指示に入れる |
問い合わせのときは、先に Apps Script の側で候補を絞ります。 宿泊日の前日から3日後までに見つかったもの、場所が同じ部屋か同じ宴会場のもの、状態が「保管中」のもの。絞った候補の特徴の文だけを Gemini API に渡し、写真は渡しません。 写真は担当者の画面に出すためのもので、照らし合わせは確定済みの特徴の文で行います。
日付と場所の条件を広げる規則も決めておきます。 候補が0件なら、日付を前後7日に、場所を同じ階に広げてもう一度絞ります。「部屋だと思ったがロビーだったかもしれない」という問い合わせは珍しくありません。 広げた条件で出た候補には、その旨の印を付けます。
AIへ渡す前に整形する
- 写真の枚数と向きの確認 … 1枚も無い行は処理せず、登録した人へ撮り直しを求めます。向きが横倒しの写真は回転させます
- 大きさの確認 … 写真と指示の文を合わせて20MBを超えないかを見ます。超える場合は縮小するか、Files API を使います
- 写ってはいけないものの確認 … 財布の中身、カードの表面、身分証が写っている写真は、Gemini API に渡さずに担当者へ戻します
- 品目の一覧の読み込み … 種類の選択肢として、最新の一覧を指示に入れます
- 問い合わせの日付の正規化 … 「先週の土曜」のような言い方は、担当者が入力の時点で日付に直します
- 候補の件数の確認 … 絞った候補が30件を超えるときは、種類で先に絞ってから渡します
3番目を軽く見ないでください。 財布や定期入れは、中身を確かめる途中で写真を撮りがちです。カードの番号や身分証の氏名が写った写真を外部のAPIへ送る理由は、この業務にはありません。 財布は外側だけを撮る決まりにし、中身は人が金額と枚数を記録します。
1番目の向きの確認は、Gemini API のドキュメントにもベストプラクティスとして書かれています。 画像が正しく回転しているかを確かめ、ぼやけていない画像を使うこととされています。
AIに処理させる
させることは2つです。写真から特徴を書き出すことと、問い合わせの説明と候補を照らし合わせることです。
1つ目の書き出しで返させる項目:
| 項目 | 書き方 | 判断できないときの扱い |
|---|---|---|
| 種類 | 品目の一覧から1つ選ぶ | 一覧に無ければ other と自由記述 |
| 色 | 主な色と、2番目の色 | 光で色が変わって見えるなら color_uncertain |
| 柄・素材 | 無地・チェック・花柄など、見て分かる範囲 | 分からなければ空欄 |
| 写っている文字 | ブランド名、型番、名入れを写っているとおりに | 読めなければ unreadable |
| 目印 | 傷、ステッカー、キーホルダー、付属品 | 無ければ空欄 |
| 大きさの目安 | 小(手のひら)・中・大 | 比べる物が写っていなければ空欄 |
2つ目の照らし合わせで返させる項目: 候補ごとに、客の説明の要素(種類、色、目印など)が一致するか、食い違うか、説明に無いかを1つずつ付け、全体の一致の度合いを high / medium / low で返させます。
| させないこと | 理由 |
|---|---|
| 持ち主かどうかの結論 | 確かめるのは担当者。AIは候補の順番を付けるだけ |
| 写っていない特徴の推測 | 「高級そう」「子ども用だろう」を書かせない |
| 文字の補完 | 半分隠れたブランド名を、それらしい名前に直さない |
| 金額の見積もり | 返却や提出の扱いに関わる。人が決める |
| 候補の除外 | 一致の度合いが低くても、候補から消さない |
3行目がいちばん起きやすい失敗です。 傘の持ち手に「TAN」までしか見えないとき、AIはよく知られたブランド名に補って書こうとします。補った名前が台帳に入ると、客が本当の名前で問い合わせたときに一致しません。
最後の行も大事です。 客の説明は不正確なことが多く、「黒」と言われた品が実際は濃紺ということがあります。一致の度合いの低い候補も、順番を下げて残します。
指示内容を固定する
1つ目(写真からの書き出し)の指示:
あなたはホテルの遺失物の担当です。忘れ物の写真から、台帳に載せる特徴を書き出してください。
写真に写っていることだけを書いてください。推測で埋めないでください。
【書き出す項目】
- 種類:次の一覧から1つ選ぶ。当てはまらなければ other とし、other_name に書く
{item_categories}
- 色:主な色と2番目の色。照明で色が判断しにくい場合は color_uncertain を true に
- 柄・素材:見て分かる範囲。分からなければ空欄
- 写っている文字:ブランド名・型番・名入れを、写っているとおりに写す
- 目印:傷、ステッカー、キーホルダー、付属品
- 大きさの目安:small / medium / large。比べる物が無ければ空欄
【厳守事項】
- 文字が一部しか読めない場合は、読める部分だけを写し、読めない部分は「?」にしてください。
知っているブランド名や製品名に補わないでください。
- 「高級そう」「新品のよう」「子ども用と思われる」など、写真から言えない評価を書かないでください。
- 金額や価値を書かないでください。
- 写真にカードの番号、身分証、書類の中身が写っている場合は、それを書き出さず、
sensitive_detected を true にしてください。
- 複数の品が1つの写真に写っている場合は、multiple_items を true にしてください。
- 各項目の根拠がどの写真か(1枚目・2枚目・3枚目)を evidence_photo に書いてください。
【見つけた場所】{location}
2つ目(問い合わせとの照らし合わせ)の指示:
あなたはホテルの遺失物の担当です。宿泊客の説明と、台帳の候補を照らし合わせてください。
持ち主かどうかは判断しないでください。候補の順番を付けるだけです。
【やること】
- 客の説明を、種類・色・柄・文字・目印・大きさ に分けてください。
- 候補ごとに、各要素を match(一致)/ conflict(食い違う)/ not_mentioned(説明に無い)で付けてください。
- 全体の一致の度合いを high / medium / low で付けてください。
- 色は近い色(黒と濃紺、白と生成り)を conflict にせず、near として扱ってください。
【厳守事項】
- 候補を除外しないでください。一致の度合いが低くても、すべての候補に結果を返してください。
- 客の説明に無い特徴を、候補に合わせて補わないでください。
- 担当者が客に確かめるための質問を、ask_guest に2つまで書いてください。
候補の特徴を答えとして含む質問(「持ち手は赤ですか」)にせず、
客に答えてもらう質問(「持ち手の色を教えてください」)にしてください。
【客の説明】{inquiry_text}
【候補】{candidates}
「候補の特徴を答えとして含む質問にしない」を明記しないと、AIは親切に「持ち手に赤いテープはありますか」と書きます。 担当者がそのまま読み上げれば、持ち主でない人にも答えを教えることになります。 禁じるのは、確かめる質問の形そのものです。
出力形式を固定する
Gemini API の構造化出力で、スキーマを渡してJSONで受け取ります。 出力の形式にJSONを指定してスキーマを渡すと、構文上正しいJSONが返ります。スキーマでは properties、required、enum などが使えます。
1つ目(書き出し):
{
"category": "umbrella",
"other_name": "",
"color_main": "black",
"color_sub": "red",
"color_uncertain": false,
"pattern": "無地",
"text_on_item": "TAN?",
"marks": ["持ち手に赤いテープ"],
"size": "medium",
"evidence_photo": { "color_main": 1, "marks": 2, "text_on_item": 3 },
"sensitive_detected": false,
"multiple_items": false
}
2つ目(照らし合わせ):
{
"inquiry_parsed": { "category": "umbrella", "color": "black", "marks": "", "text": "" },
"candidates": [
{ "item_id": "", "score": "high | medium | low",
"elements": [ { "element": "color", "result": "match | near | conflict | not_mentioned" } ] }
],
"ask_guest": ["", ""]
}
1つ目の理由は、category を enum で縛れることです。 種類の値を品目の一覧に限れば、台帳の検索で同じ種類がばらばらの名前で出ることがなくなります。 第3章の(a)は、この1行で半分解けます。
2つ目は、elements で一致の中身が見えることです。 担当者は high の一言ではなく、色は一致、目印は説明に無い、という内訳を見て客に何を聞くかを決めます。
3つ目は、値をアプリの側で確かめられることです。 Gemini API のドキュメントでは、構文上は正しくても値の意味が正しいとは限らないため、アプリケーションの側で値を検証するよう書かれています。item_id が候補に無い値なら捨て、候補の数と結果の数が合わなければやり直します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| AppSheet | 行の追加でオートメーションが動く | 登録と問い合わせを受け、Call a script で Apps Script を呼ぶ |
| Google ドライブ | Apps Script から読む | AppSheet が保存した写真を取り出す |
| Gemini API | Apps Script から呼ぶ | 特徴の書き出しと、照らし合わせ |
| 台帳のスプレッドシート | Apps Script から書く | 書き出した特徴、提出期限、照合の結果 |
| 担当者の画面 | AppSheet の表示 | 候補を写真付きで、一致の度合いの順に出す |
台帳の「確定した特徴」の列は、Apps Script から書きません。 Apps Script が書くのは「AIの書き出し」の列までで、担当者が現物と見比べて直したものを「確定」の列に入れます。 照合に使うのは確定の列だけです。AIの書き出しをそのまま確定にすると、照明で紺に見えた黒い傘は、黒で問い合わせても一致しなくなります。
「持ち主でなければ言えない特徴」の列も、Gemini API には渡しません。 財布の中身、鍵に付いたタグの文字、衣類のポケットに入っていた物。担当者が客に言ってもらい、画面と見比べるための列です。
提出期限は、見つけた日から計算して台帳の列に入れます。 神奈川県警察のページでは、施設占有者は交付を受け、または自ら拾得してから1週間以内に警察署長へ提出する必要があり、期限内に提出しないと拾得物件に係る権利を失うとされています。期限の日数は自施設の区分に合わせ、所轄の警察署に確かめてから設定します。
人が確認する
人が確かめるのは3か所です。登録の確定、持ち主の確認、提出の準備です。
- 登録の確定 … 現物を受け取ったとき、AIの書き出しを現物と見比べて直し、確定の列に入れます。持ち主でなければ言えない特徴をここで書き足します
- 持ち主の確認 … 候補の写真を見ながら、
ask_guestの質問で客に特徴を言ってもらいます。確定の特徴と、持ち主でなければ言えない特徴の両方が合ったときだけ、返却へ進みます - 提出の準備 … 期限の近い品の一覧を見て、問い合わせの途中の品が無いかを確かめてから、提出の書類を作ります
2番目では、候補の特徴を先に言いません。 「黒い傘が1本ありますが」と言ってしまうと、それだけで答えが伝わります。「どんな傘でしたか」から始めます。
3番目は、返却の手配中の品を提出してしまわないための確認です。 客と連絡がついて発送を待っている品は、状態を「返却手配中」にして一覧から外します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 写真にカードや身分証が写った | Gemini API に渡さず、担当者へ撮り直しを求める |
| 1枚に複数の品が写った | multiple_items を見て、品ごとに登録し直してもらう |
| 文字が読めない | unreadable のまま台帳に残す。補わない |
| 候補が0件 | 日付を前後7日、場所を同じ階に広げて再度絞る。それでも0件なら「該当なし」と記録 |
| 候補が多すぎる | 種類で先に絞る。30件を超えたまま渡さない |
一致の度合いがどれも low | 候補を写真付きで出し、担当者が見る。AIの判定で「無い」と答えない |
| 同じ客から二度問い合わせが来る | 前回の問い合わせの行に追記する |
| 現金・貴重品 | 写真は外側だけ。金額と中身は2名で確かめて人が記録する |
| Gemini API が応答しない | 行を「書き出し待ち」にして残し、次の登録のときに再度処理する |
上から3行目までは、撮り方の決まりで減ります。 財布は外側だけ、1枚に1品、文字は寄りで。AIの精度を上げるより、撮り方を1枚の紙にして部署に配るほうが効きます。
6行目を守ってください。 一致の度合いが低いという理由で「ございません」と答えると、棚にある品を返せなくなります。 答えるのは、担当者が候補を見てからです。
記録を残す
- 登録した写真、見つけた日時・場所・見つけた人
- Gemini API が返した書き出しのJSONと、担当者が確定させた特徴との差
- 問い合わせの内容、照らし合わせの結果、担当者が見た候補
- 持ち主と確認した根拠 … どの特徴が合ったか
- 返却の方法と日時、または警察へ提出した日時
- 撮り直しを求めた件数と理由
2つ目の差は、書き出しの傾向を見る材料です。 色を毎回直しているなら照明の問題、種類を直しているなら品目の一覧の問題です。直す場所が、指示文なのか撮影の環境なのかが分かります。
4つ目は、返した後で「自分の物ではなかった」と言われたときに使います。 どの特徴を確かめて渡したかが残っていれば、確認のやり方のどこに穴があったかを後から見直せます。
04実装レベルの3段階
最小構成では、問い合わせの対応は変わりません。 台帳の書き方はそろいますが、引き当ては人が行います。確かめるための段階です。 半自動化で、①の書き写しがほぼ無くなり、提出期限が台帳に入ります。 残るのは問い合わせのときの台帳の追いかけで、書き方がそろった分だけ検索で引けるようになりますが、棚を見に行く往復は残ります。 本格構成で1件6分になり、この段階が本記事の想定です。 候補が写真付きで画面に出るので、電話を保留にして棚へ行く回数が、確かめる最後の1回だけになります。 台帳が数千件に増えた施設では、確定の特徴の文を Gemini の埋め込みモデルでベクトルにし、問い合わせの説明と近いものから候補を取る形を足せます。埋め込みの出力の次元は128から3,072の間で選べます。 段階を飛ばさないでください。 半自動化で1か月登録を続けると、確定のときに直している項目が分かります。そこを直してから照合を足します。
05工数削減シミュレーション
導入後 240件 × 6分 ÷ 60 = 24 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 客室数が200室を超えるシティホテルや、宴会場・レストランを併設していて、忘れ物が1日に数件以上出る施設。忘れ物を紙の台帳や表計算で管理していて、問い合わせのたびに保管棚と台帳を探している場合。清掃・宴会・レストランの各部署が別々に忘れ物を預かっていて、1か所にまとまっていない場合。スマートフォンやタブレットを部署に配れる場合。
- 忘れ物が月に数件で、台帳を目で追えば足りる施設。特例施設占有者の指定を受けて自ら保管・処分の運用をしており、別の管理システムがすでにある場合。なお、問い合わせてきた人が本当に持ち主かの判断と、警察への提出の要否の判断は、この構成では代替できません。
07最小構成で試す方法
- 保管棚にある忘れ物から20点を選ぶ(うち5点は、似た品が複数ある傘・ケーブル・眼鏡ケースにする)
- 決めた撮り方(全体・目印・文字)で1点につき2〜3枚撮る
- 手元のAIサービスの画面に写真を貼り付け、第7章の1つ目の指示で特徴を書き出させる
- 過去の問い合わせの記録から10件を選び、その説明文と、書き出した20点の特徴を並べて照らし合わせさせる
- 当時実際に返却できた品が、上位3点に入っているかを見る
20点は必ずやってください。 アプリを作る前に、「写真から書き出した特徴で、客の説明と引き当てられるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 返却できた品が上位3点に入った | AppSheet と Apps Script の連携に進む |
| 文字を知っているブランド名に補った | 指示の書き方で直る。構成は有効 |
| 色や種類がばらばらで引き当てられない | 品目の一覧と撮り方が先。 AIの問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、台帳を検索しても出てこなかった理由が分かったということです。 品目の一覧を作り直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 種類の名前がまたばらつく | enum で品目の一覧に縛る。 一覧に無いものだけ other |
| 文字をブランド名に補う | 読めない部分は「?」にさせる。補わない、を指示に書く |
| 写真が小さくて文字が読めない | AppSheet のアップロードの大きさを High にする |
| 財布の中身やカードが写る | 外側だけを撮る決まりにし、写ったら API に渡さない |
| 確認の質問が答えを含む | 客に言ってもらう形の質問にする、を指示に書く |
| 一致の度合いが低い候補を「無い」と答える | 候補から除外させない。担当者が見てから答える |
| 宴会場の忘れ物が台帳に載らない | 見つけた場所で登録する。フロントへ届けてからにしない |
| Apps Script が呼べない | スタンドアロンのスクリプトにする。 スプレッドシートに紐づいたものは使えない |
| 返却の手配中の品を提出してしまう | 状態を「返却手配中」にして期限の一覧から外す |
| 期限の日数を自己判断で決める | 所轄の警察署に確かめて設定する |
上の2行が、台帳が使えるかどうかを決めます。 どちらも「書き方がそろわない」「無い情報が入る」という同じ問題で、検索で引けない台帳に戻ってしまいます。
5行目と6行目は、持ち主でない人へ渡すことと、持ち主へ返せないことに直結します。 質問の形は、指示と画面の両方で固定してください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 忘れ物の写真、見つけた場所(客室番号)と日時、そして問い合わせてきた客の氏名・連絡先・宿泊日です。忘れ物そのものに、名入れ、書類、薬、衣類など私生活が分かるものが含まれます。
- 外部へ渡す写真を、特徴の書き出しに必要なものに限る … 財布の中身、カード、身分証、書類の中身は撮らず、写ったものは API に渡さない
- 問い合わせの照らし合わせに写真を渡さない … 渡すのは確定した特徴の文と、客の説明だけです。客の氏名や連絡先も照らし合わせには要りません
- 持ち主でなければ言えない特徴を、AIにも画面の候補にも出さない … 担当者が確かめるための列で、照合の仕組みの外に置きます
- この構成は持ち主の確認と、提出の要否の判断を代替しません … 持ち主かどうか、警察へ提出するかどうかは、担当者と施設が決めることです。 期限の日数は所轄の警察署に確かめてください
- 写真の保存期間を決める … 返却または提出した後、写真をいつまで残すかを決めておきます。台帳の行と写真を別々に消さないようにします
- Apps Script を誰のアカウントで動かすかを決める … Call a script で呼ばれるスクリプトは、常にアプリのオーナーとして動きます。 オーナーを個人のアカウントにしないでください
誤りが起きた場合のリスクは、持ち主でない人へ渡すことと、持ち主に「無い」と答えることの2つです。 どちらも「AIは候補を絞るだけで、決めるのは人」という線で防ぎます。
10まず何から始めるか
1週目:品目の一覧と撮り方を決める
過去3か月の台帳から品目を数え、上位20種類で一覧を作ります。 「充電器」「アダプタ」「ケーブル」のような言い換えも書き添えます。あわせて、全体・目印・文字の3枚を撮る決まりと、財布は外側だけという決まりを1枚の紙にします。
2週目:20点で試す
保管棚から20点を選び、決めた撮り方で撮って手元のAIサービスで特徴を書き出させます。過去の問い合わせ10件と照らし合わせ、返却できた品が上位に来るか、文字を補っていないかを最優先で見ます。
3週目:提出期限と確認の手順を決める
提出期限の日数を所轄の警察署に確かめ、台帳の計算式に入れます。 あわせて、電話口での確認の手順(候補の特徴を先に言わない、2つの特徴が合ったら返却)をフロントで決めます。
4週目:登録の画面を作る
AppSheet で登録の画面を作り、写真のアップロードの大きさを High にします。Apps Script から Gemini API を呼び、書き出しを台帳に書き込むところまで作ります。 この時点では照合を作らず、確定の列を人が埋める運用を始めます。
2か月目: 問い合わせの画面と照らし合わせを足し、候補を写真付きで出します。3か月目以降: 期限の近い品の毎朝の一覧を足し、1件15分が何分になったかを実測します。「ありません」と答えた後に棚から見つかる件数がなくなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応する画像の形式が PNG、JPEG、WEBP、HEIC、HEIF であること。画像を直接入れる場合、リクエスト全体が20MBまでで、大きいファイルには Files API を使うこと。384ピクセル以下の画像が258トークン、それより大きい画像は768×768ピクセルのタイルごとに258トークンであること。画像の回転を確かめ、鮮明な画像を使うことがベストプラクティスとされていること | Google AI for Developers: Image understanding | 2026-09-29 |
出力の形式にJSONを指定してスキーマを渡し、構文上正しいJSONを受け取れること。properties、required、enum などが使えること。値はアプリケーションの側で検証するよう書かれていること | Google AI for Developers: Structured output | 2026-09-29 |
| 埋め込みモデルの出力の次元を128から3,072の間で選べること | Google AI for Developers: Embeddings | 2026-09-29 |
Image 型の列でカメラの写真を取り込め、既定で {テーブル名}_Images に保存されること。同期のときに縮小してアップロードされ、Default(600px)〜High(1600px)、Full から選べること | AppSheet Help: Capture images | 2026-09-29 |
| 「Call a script」で関数を呼び、引数を式で渡し、戻り値を使えること。スタンドアロンのスクリプトだけに対応し、常にアプリのオーナーとして動くこと。AppSheet Core 以上で使えること | AppSheet Help: Call Apps Script from an automation | 2026-09-29 |
| 施設占有者が、交付を受け、または自ら拾得してから1週間以内に警察署長へ提出する必要があること。期限内に提出しないと拾得物件に係る権利を失うこと。特例施設占有者では期限と保管の扱いが異なること | 神奈川県警察: 施設占有者の義務について | 2026-09-29 |
警察への提出の期限と手続きは、所轄の警察署に確かめてください。 本記事は公開されているページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0303)についてのご相談はこちらから。
