Media > AI活用ユースケース > 情報システム > 貸し出した端末と周辺機器の所在と保証期限を追って、返却漏れを拾う

貸し出した端末と周辺機器の所在と保証期限を追って、返却漏れを拾う

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

社員へ貸し出したノートPCや周辺機器について、貸出と返却の連絡を1つの台帳にまとめ、返っていない端末と期限の近い端末を毎朝の一覧に出します。督促の文面は下書きまで作ります。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Google Apps Script/Make/Power Automate
対象業界
IT・SaaS/その他/人材/医療/教育
対象部門
情報システム/総務
対象業務
データ入力・転記/台帳・マスタ管理
主な課題
入力作業が多い/引き継ぎができていない/期限・対応漏れが起きる
AIで行う処理
抽出
主な効果
入力漏れ削減/工数削減/機会損失防止
導入難易度
★☆☆☆☆
実装レベル
最小構成
費用感
既存ツールのみ(小)
人間の確認
必須
現在工数
18h/月
AI導入後
6h/月
想定削減
67%
年間削減
144h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 社員がメール・チャット・口頭のいずれかで「◯◯を借りたい」と伝える
  2. 担当者が棚と在庫のメモを見て、貸せる端末を選ぶ
  3. 端末と付属品を渡し、手元のスプレッドシートかメモ帳に名前と機種を書く
  4. 返却は机の上か棚に戻され、担当者が気づいたときに台帳へ返却日を書く
  5. 月に一度、担当者が台帳を上から見て、長く借りたままの人に声をかける
  6. 人事から退職・異動の一覧が届いたら、その人の名前を台帳で探す
  7. 保証やリースの期限を知りたいときは、購入時の請求書と納品書を探す
導入後(After)
  1. 人借りたい社員が申請フォームに入力する。返却の予定日を必須の項目にする
  2. 人メール・チャット・口頭で来たものは、担当者が文面を貼るか、代理でフォームに入れる
  3. 自動フォームの送信をきっかけにスクリプトが動き、台帳に下書きの行を作る
  4. 自動AIが文面から「誰が・何を・いつから・いつまで・付属品・用途」を読み取る
  5. 人担当者が下書きを開き、現物の管理番号を確かめて行を確定する
  6. 自動毎朝、未返却・期限超過・退職予定の3つの一覧を作る
  7. 自動人事の異動・退職の予定と突き合わせ、最終出社日の前に返却案内の下書きを作る
  8. 自動保証・リース・OSのサポートの期限が近い端末を、期限の近い順に並べる
  9. 人担当者が下書きを読み、送る相手と文面を確かめて送信する
  10. 人「返した」と言われたものは、棚の現物を確認してから台帳を直す
各工程の詳しい説明を読む
  1. 社員がメール・チャット・口頭のいずれかで「◯◯を借りたい」と伝える
  2. 担当者が棚と在庫のメモを見て、貸せる端末を選ぶ
  3. 端末と付属品を渡し、手元のスプレッドシートかメモ帳に名前と機種を書く
  4. 返却は机の上か棚に戻され、担当者が気づいたときに台帳へ返却日を書く
  5. 月に一度、担当者が台帳を上から見て、長く借りたままの人に声をかける
  6. 人事から退職・異動の一覧が届いたら、その人の名前を台帳で探す
  7. 保証やリースの期限を知りたいときは、購入時の請求書と納品書を探す

(a)台帳が1つではありません。 部署ごとに作られたスプレッドシートが3つあり、どれが最新かが担当者の記憶にしかありません。同じ端末が2つの表に載っていることも、どこにも載っていないこともあります。

(b)返却の期限が決まっていません。 「しばらく借ります」で渡した端末には、督促する理由がありません。期限が無いものは、遅れているかどうかを判定できません。 月に一度の見回しが、担当者の感覚頼みになるのはこのためです。

(c)退職した後に気づきます。 人事の一覧と突き合わせるのが月次なので、最終出社日を過ぎてから未返却が分かります。社員でなくなった人に連絡して端末を送り返してもらう手間は、在籍中に声をかける手間の何倍もかかります。

(d)余っているのに買います。 誰が何を持っているかが見えないので、申請が来るたびに在庫を探すより新規購入のほうが早くなります。保証の切れた端末が現場に残り、保証の残る同じ型が棚で眠ります。

  1. 【人】 借りたい社員が申請フォームに入力する。返却の予定日を必須の項目にする
  2. 【人】 メール・チャット・口頭で来たものは、担当者が文面を貼るか、代理でフォームに入れる
  3. 【自動】 フォームの送信をきっかけにスクリプトが動き、台帳に下書きの行を作る
  4. 【自動】 AIが文面から「誰が・何を・いつから・いつまで・付属品・用途」を読み取る
  5. 【人】 担当者が下書きを開き、現物の管理番号を確かめて行を確定する
  6. 【自動】 毎朝、未返却・期限超過・退職予定の3つの一覧を作る
  7. 【自動】 人事の異動・退職の予定と突き合わせ、最終出社日の前に返却案内の下書きを作る
  8. 【自動】 保証・リース・OSのサポートの期限が近い端末を、期限の近い順に並べる
  9. 【人】 担当者が下書きを読み、送る相手と文面を確かめて送信する
  10. 【人】 「返した」と言われたものは、棚の現物を確認してから台帳を直す

5番目と10番目が、この設計の分かれ目です。 どちらも人の手を残しています。台帳が間違っていると、正しく返した人に督促が飛びます。督促の空振りは1件でも重く、次から誰も申請してくれなくなります。

7番目を「退職日の後」ではなく「前」にしているのも、意図してのことです。 在籍中なら社内で受け渡しが済みます。退職した後の回収は、本人の善意に頼るしかありません。 人事の予定を見る目的は、そこに1つだけあります。

02今回想定するシステム構成

構成図
貸出・返却の連絡(メール/チャット/口頭のメモ)
   │  経路は変えない。担当者が代理で入れてよい
   ▼
Google フォーム(申請・返却の入口。返却予定日は必須)
   ▼【トリガー】フォーム送信 + 毎朝8時の時間主導型
Google Apps Script
   ├──▶ 差出人の社員の特定、署名・引用の除去、呼び名の寄せ
   ▼
Claude API(構造化出力)
   │   誰が/何を/いつから/いつまで/付属品/用途 を読み取る
   ▼
Google Apps Script ── 台帳の「下書き」欄へ書く
   ▼
【人が現物と管理番号を確かめて確定】
   ▼
貸出台帳(1つだけ)+ 端末マスタ(保証・リース・OSサポートの期限)
   ├──▶ 人事の異動・退職の予定と突合(最終出社日)
   ├──▶ 返却予定日の超過を数える
   └──▶ 期限の近い端末を、近い順に並べる
   ▼
Claude API ── 督促文・返却案内の下書き
   ▼
GmailApp.createDraft() ── 担当者の下書きに入る
   ▼
【人が読んで送信】
役割想定する製品代替候補
実行環境Google Apps ScriptPower Automate、Make
処理Claude APIOpenAI API、Gemini API

貸出台帳と端末マスタ、人事の予定表は、新しく足す製品ではありません。 どれもスプレッドシートで足ります。新しく契約するのは、生成AIの利用分だけです。 申請の入口も Google フォームで、Google Workspace があれば追加費用はかかりません。

土台になるのは、Apps Script の「インストール可能なトリガー」です。 公式の説明では、時間主導型のトリガーは毎分から月1回までの間隔で設定でき、イベントで動くものとしてはフォーム送信のトリガーがあります。フォーム送信は Google フォーム側とスプレッドシート側の両方で扱えるとされています。

運用で効いてくる性質が3つあります。 1つ目は、トリガーが常に作成した人のアカウントで実行されること。担当者が異動すると止まるので、引き継ぎの手順を先に決めます。2つ目は、「スクリプトの実行やAPIリクエストではトリガーは動かない」こと。テストは手で実行して確かめます。3つ目は、時間主導型の実行時刻がばらつくことがあることです。「毎朝8時ちょうどに一覧が届く」前提で運用を組まないでください。

トリガーが失敗すると Apps Script からメールが届き、実行のログから追えるとされています。監視の仕組みを自分で作らなくてよいということです。

03どうやって実装するのか

Step1

処理の起点を決める

起点は2つです。フォームの送信と、毎朝1回の時間主導型です。

フォームの送信は、申請と返却の連絡が入った瞬間に動かします。その場で台帳に下書きの行ができることが大事です。 後でまとめて処理する形にすると、口頭で渡した端末が「後で書く」のまま消えます。

毎朝の時間主導型は、期限を見るためのものです。返却予定日を過ぎたもの、最終出社日が近い人の貸出、保証・リース・OSのサポートの期限が近い端末を数えます。毎分から月1回まで選べますが、1日1回で足ります。 期限は日単位でしか動かないので、それ以上細かく見ても一覧の内容は変わりません。

時間主導型のトリガーは、負荷分散のために実行の時刻がばらつくことがあるとされています。 「8時の朝会で一覧を見る」という運用にすると、届いていない日が出ます。一覧はスプレッドシートの1枚に常に置き、通知は補助にしてください。 また、誰のアカウントでトリガーを作ったかを台帳の先頭に書いておきます。

Step2

入力データを集める

データ中身取得元
申請・返却の文面フォームの回答、メール本文、チャットの控え、口頭のメモ回答シート/担当者が貼る
端末マスタ管理番号、機種、呼び名のゆれ、購入日、保証終了日、リース終了日、OSのサポート終了日スプレッドシート
貸出台帳管理番号、借りた人、貸出日、返却予定日、返却日、付属品、状態スプレッドシート
人事の予定社員番号、氏名、所属、最終出社日、異動先人事から月1回受け取るCSV

質を決めるのは、上から2つ目です。 端末マスタに管理番号が無いと、読み取れるのは「ノートPCを1台」までで、どの個体が誰のところにあるかが分かりません。 所在を追う構成なので、ここが無いと成り立ちません。

人事の予定に必要なのは最終出社日だけです。 退職の理由も次の所属も要りません。持たせる情報を最小にしておくと、第13章の扱いが楽になります。

呼び名のゆれをマスタに持つのは、文面が自由に書かれるからです。 「ノートPC」「ノート」「PC」「レンタルPC」は同じものを指します。この一覧をAIへ渡し、そのどれかに寄せさせます。

Step3

データの取得方法を決める

フォームの回答は、回答シートに1行として入ります。フォームそのものを扱うときは FormApp の openById(id) openByUrl(url) で開き、フォームに紐づいたスクリプトなら getActiveForm() を使います。 ふだん読むのは回答シートのほうです。

取るものどこから何に使うか
申請・返却の文面回答シートの行AIに渡す本文
端末マスタ別シート呼び名の一覧、管理番号、期限の3種類
貸出台帳別シート未返却の抽出、二重申請の検知
人事の予定月1回貼り付けるシート最終出社日との突合

スプレッドシートは、2次元の配列として扱うのが基本です。 公式のガイドでも、getDataRange().getValues() でシート全体を配列として取り、行を回して処理する書き方が示され、行の追加には appendRow() が使えるとされています。

1行ずつ読み書きしないでください。 公式のガイドは、大きなデータではサービスの呼び出しを最小にすることを勧めています。台帳が900行あるときに1行ずつ getRange を呼ぶと、毎朝の一覧づくりだけで実行時間を使い切ります。 まとめて読み、配列の上で照合し、まとめて書きます。

人事のCSVは、APIでつながっている前提にしません。月1回、受け取ったCSVをシートに貼るところから始めます。

Step4

AIへ渡す前に整形する

  1. 差出人の特定 … メールアドレスから社員番号を引きます。引けないものは needs_input にします
  2. 署名と引用の除去 … 署名、過去のやり取りの引用、定型の免責文を落とします
  3. 呼び名の寄せ … 端末マスタの呼び名の一覧をAIへ渡す材料として組み立てます
  4. 二重の申請の検知 … 同じ人・同じ品目・同じ日の申請が直近にあれば印を付けます
  5. 返却予定日が空のものに印を付ける … 空のまま次へ渡します
  6. 口頭のメモの整形 … 担当者が1行のテキストにしてから入れます

5番目を省かないでください。 返却予定日が空のとき、その場で埋めたくなります。 30日後、次の月末、プロジェクトの終わり。どれも本人と約束した日ではありません。空のまま台帳に入れ、確定のときに担当者が本人に聞きます。 埋めてしまうと、督促の根拠が社内の勝手な想定になります。

4番目は、廊下で頼まれた後にチャットでも送ってくる人がいるためです。 同じ申請が2行になると、返ってきていない端末が1台増えたように見えます。

Step5

AIに処理させる

させるのは、文面から6つの項目を読み取り、根拠にした文字列を書き出すことだけです。

読み取るもの判定の仕方分からないときの扱い
誰が氏名と部署。無ければ差出人の情報を使う特定できなければ missing
何を品目の呼び名と台数。マスタの呼び名に寄せる一覧に無い呼び名は生の文字列を残して missing
いつから貸出を希望する日「なるべく早く」は ambiguous
いつまで返却の予定日無ければ missing。日付に直さない
付属品電源アダプタ、ケース、変換アダプタなど無ければ missing
用途在宅勤務、客先常駐、検証、会議室での利用など無ければ missing

あわせて、連絡の種類を判定させます。 貸出の申請/返却の連絡/期限を延ばす相談/食い違いが読み取れるものの4つです。最後の1つは、判定ではなく印を付けるだけです。

させないこと理由
返したか返していないかの判断記録の突合では決まらない。現物の確認に回す
台帳の行の更新確定するのは現物を見た人
管理番号の割り当てどの個体を渡すかは棚を見て決める
返却予定日の推定埋めると、督促の根拠が社内の想定になる
保証期限の計算購入日から推し量らない。契約書の値を入れる
督促の送信下書きまで。送るかは相手を見て決める

1行目がこの構成でいちばん大事な線引きです。 「返しました」「返っていません」の食い違いは必ず起きます。どちらの記憶も本人には事実で、台帳にも一方しか書かれていません。 材料が足りないところで判定させれば、それらしい結論が出ます。棚を見に行くほうが確実です。

Step6

指示内容を固定する

あなたは情報システム部門で、端末の貸出と返却の連絡を台帳に写す担当者です。
渡された文面に書かれていることだけを読み取ってください。書かれていないことを補わないでください。

【読み取る項目】
誰が(氏名と部署。無ければ差出人の情報を使う)/何を(品目の呼び名と台数)/
いつから(貸出を希望する日)/いつまで(返却の予定日)/
付属品(電源アダプタ、ケースなど)/用途(持ち出し先や目的)

【この連絡の種類】loan_request(貸出の申請)/ return_notice(返却の連絡)/
extension_request(期限を延ばす相談)/ dispute(返した・返していないの食い違い)/ other

【status の選び方】ok(文面にはっきり書かれている)/ missing(書かれていない)/
ambiguous(候補が複数あり、1つに決められない)

【厳守事項】
- 返却の予定日が書かれていないときは missing にしてください。
  「1か月後」「プロジェクトが終わるまで」のような言い方を、日付に直さないでください。
- 品目は、渡した呼び名の一覧のどれかに合わせてください。一覧に無い呼び名は、読み取った
  文字列を device_raw に入れ、device_name は missing にしてください。寄せないでください。
- 台数が書かれていなければ、1台としないでください。missing にしてください。
- 管理番号を決めないでください。どの個体を渡すかは人が棚を見て決めます。
- 「返した」「返っていない」のどちらが正しいかを判断しないでください。食い違いが
  読み取れる場合は kind を dispute にし、両方の言い分を evidence に写してください。
- evidence には、判断の根拠にした文面をそのまま写してください。
- 督促や返却の案内の文面は、ここでは作らないでください。

【品目の呼び名の一覧】{device_names}
【差出人の情報】{sender}
【文面】{message_text}

「日付に直さない」を明記しないと直します。 「1か月後に返します」は自然な日本語で、読めば日付が出てきます。禁じるのは計算ではなく、本人と約束していない日を台帳に載せることです。

「寄せない」も同じ型の指示です。 「検証機」と「検証用ノート」は別の棚にあるかもしれず、寄せた結果が正しいかはマスタを作った人にしか分かりません。

督促文の下書きは、別の呼び出しで作ります。 1回にまとめると、読み取りの結果に文面の都合が混ざります。

Step7

出力形式を固定する

次の形のJSONで受け取ります。

{
  "kind": "loan_request",
  "requester": { "name": "", "dept": "", "employee_no": "", "status": "ok" },
  "items": [
    { "device_name": "", "device_raw": "", "qty": 0, "status": "ok", "evidence": "" }
  ],
  "start_date": { "value": "2026-10-01", "status": "ok" },
  "due_date": { "value": "", "status": "missing" },
  "accessories": [""],
  "purpose": "",
  "evidence": ""
}

kind と各 status は決まった語だけを取ります。Claude API の構造化出力では、output_config.format に json_schema の型でスキーマを渡すと、応答がそのスキーマに沿った形で返り、結果はテキストのコンテンツブロックに入るとされています。

スキーマの書き方には決まりがあります。 オブジェクトでは additionalProperties を false にする必要があり、required と enum が使えます。enum に入るのは文字列・数値・真偽値・null だけで、日付には date という文字列の形式が使えます。一方、数値の制約(minimum maximum)、文字列の長さの制約、パターン、再帰的なスキーマは使えません。 つまり台数が負でないことはスキーマで縛れないので、数の妥当性はスクリプトの側で見ます。

最初の1回だけ遅くなります。 スキーマから文法を組み立てる待ち時間が最初の要求で発生し、組み上がったものは最後に使ってから24時間キャッシュされるとされています。

台帳の「状態」はこのJSONに入れません。 貸出中・返却済み・期限超過・確認中のどれになるかは、返却予定日と今日の日付を比べてスクリプトが決めます。 読み取った事実とそこから導く状態を別の層に置けば、期限の数え方を変えたいときに直すのは規則だけで済みます。

Step8

システムへ連携する

つなぎ先方式内容
Google フォームフォーム送信のトリガー申請・返却の受け付け
貸出台帳・端末マスタスプレッドシートの読み書き下書きの書き込みと期限の照合
人事の予定表シートの読み取り最終出社日との突合
Claude APIUrlFetchApp による呼び出し読み取りと督促文の下書き
GmailGmailApp.createDraft()督促・返却案内の下書きを作る

下書きの作成には createDraft を使います。 公式の一覧には createDraft(recipient, subject, body) とオプション付きの形があり、どちらも GmailDraft を返します。オプションでは cc bcc htmlBody name replyTo attachments などが指定できます。https://mail.google.com/ の認可スコープが必要です。

同じクラスにある sendEmail は使いません。 督促は相手と時期を見て送るもので、自動で飛ぶ設計にすると、返した人にも届きます。業務システムへも書き込みません。 人事システムも資産管理の製品も、この構成からは読むだけです。

Step9

人が確認する

人が手を動かすのは3か所だけです。

  1. 台帳の下書きの確定 … 現物を渡すときに、管理番号と付属品を確かめて行を確定します。missing の項目は、その場で本人に聞きます
  2. 督促・返却案内の下書きの送信 … 相手と時期を見て、文面を直して送ります。送信は必ず人が行います
  3. 食い違いの決着 … dispute の印が付いたものは、棚と現物を見に行きます。記録の突合では決めません

あわせて、退職予定の一覧を送る前に人事へ一声かけます。 最終出社日は変わります。予定が動いているのに返却の案内が飛ぶと、本人にも人事にも角が立ちます。

目標は、120件をならして1件3分です。 大半は下書きを見て確定するだけで終わり、missing が残っているものと dispute の印が付いたものにだけ時間を使います。全件を読み直す運用にすると、第10章の6.0時間には収まりません。

Step10

例外に対処する

起きること対応
返却予定日が書かれていないmissing のまま台帳へ。AIにも規則にも埋めさせない。確定のときに本人へ聞く
「返した」と「返っていない」が食い違うdispute の印を付け、現物の確認に回す。判定はさせない
社員を特定できない(個人のアドレスから来た)needs_input。差出人に社員番号を聞く
品目がマスタの呼び名に無い生の文字列を残して人へ。新しい機種か表記ゆれか、マスタ側をまず疑う
同じ型の在庫が余っているのに新規購入の申請が来た棚の残り台数を添えて担当者に出す。却下はしない
退職の予定に載っていない人が辞める人事の受け取りが月1回のため起きる。最終出社日が近い分は毎日見る
口頭で渡した端末が台帳に無い棚の現物と台帳の差として出る。月1回、棚を数えて差を埋める
トリガーが失敗した失敗のメールが届く。実行のログを見て、その日の分を手で流す
保証期限がマスタに入っていない空のまま。購入日から計算して埋めない。契約書を探して入れる

上から2行目が、この構成でいちばん多い例外です。 運用を始めて半年ほどは、開始前に貸し出した端末の分で必ず食い違います。 起点をそろえる棚卸しを先にやるほど件数は減ります。5行目は、例外というより本来の効果です。 新規購入を止める仕組みではないので、一覧に並べるところまでにします。

Step11

記録を残す

  • 元の申請・返却の文面と、入ってきた経路(フォーム/メール/チャット/口頭)
  • AIが読み取ったJSONの全文と、そのとき渡した呼び名の一覧
  • 人が下書きを直した記録 … どの項目を、何から何に変えたか
  • 督促・返却案内の下書きを作った日時と、実際に送った日時
  • 返却を確認した人と、確認した日
  • dispute になった件の経緯と、現物を見た結果

3つ目が、この構成を良くしていく材料です。 どの項目がよく直されているかを月に一度数えると、読み取りの指示を直すべき場所と、フォームに項目を足すべき場所が分かれて見えてきます。

5つ目を残すのは、食い違いを減らすためです。 誰が棚に戻したかが残っていれば、次に「返したはずだ」と言われたときに見る場所があります。

この記録は、所在を追うためのものです。 誰が何回遅れたかを数えられる形になりますが、その使い方をしないことを先に決めます。 理由は第13章に書きます。

04実装レベルの3段階

最小構成:申請フォームと1つの台帳を作り、届いた文面を生成AIの画面で読み取って台帳へ写す。期限は数式で数える / 読み取りと督促文の下書き
半自動化:上記+フォーム送信のトリガーで下書きの行を作り、毎朝の未返却一覧を自動で出す / 記録と一覧づくり
本格構成:上記+人事の予定・保証・リース・OSサポートの期限と突き合わせ、督促と返却案内まで自動で出す / 期限の先出しと文面の下書き

本記事が想定するのは最小構成です。 台帳を1つにして返却予定日を必須にし、読み取りと督促文の下書きを生成AIの画面で行うところまでで、1件9分が3分になります。 月120件は1営業日あたり6件で、手で貼っても回る量です。 半自動と本格構成は、件数が増えてからの話です。 貸出中の端末が数千台になり、毎朝の一覧を手で数えるのがつらくなってから足せば足ります。先に自動化しても、減る時間はほとんど変わりません。 段階を飛ばさないでください。 最小構成を1か月続けると、返却予定日が空のまま来る割合と、棚と台帳の差の大きさが分かります。その2つを直してから自動化するほうが、督促の空振りが減ります。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
2 名
月間件数
120 件
1件あたり現在時間
9 分
1件あたり導入後時間
3 分
現在  120件 × 9分 ÷ 60 = 18 時間/月
導入後 120件 × 3分 ÷ 60 = 6 時間/月
月間削減時間
12h
削減率
67%
年間削減時間
144h
年間金額換算(時間単価3,000円)
43万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. ノートPC、スマートフォン、モバイルルーター、外付けモニターなどを社員へ貸し出しており、申請がメール・チャット・口頭に分かれている情報システム部門や総務部門。貸出中の端末が数百台あり、誰が何をいつまで借りているかを1つの表で言えない場合。退職や異動のたびに端末の回収が後追いになっている場合。Google Workspace があり、フォームとスプレッドシートを新しく用意できる場合。
向いていない
  1. すでにIT資産管理やモバイル端末管理の製品を入れており、貸出先と期限がその製品の台帳で一元管理できている場合。貸出が年に数件しかなく、担当者の記憶で足りる場合。端末の持ち出しを認めておらず、全台が固定席に置かれている場合。なお、返したか返していないかで食い違ったときに決着をつけるのは現物の確認であり、この構成では代替できません。

07最小構成で試す方法

スプレッドシートと生成AIの画面だけで始められます。 プログラムは1行も書きません。

  1. Google フォームを作る。質問は氏名/部署/借りたいもの/台数/貸出開始日/返却予定日/持ち出し先/付属品の8つ。返却予定日を必須にする
  2. スプレッドシートを1つ作り、回答シートの隣に貸出台帳と端末マスタのシートを足す
  3. 棚にある端末を数え、管理番号・機種・保証終了日の3列を端末マスタに埋める(まず貸出の多い上位100台だけでよい)
  4. 直近3か月の貸出・返却の連絡を30件集め、1件ずつ手元のAIサービスに貼って、第7章の指示で読み取らせる
  5. 出てきた結果を台帳の形に並べ、棚の現物と突き合わせる

3番目が本体です。 管理番号を貼るだけで、所在の話ができるようになります。AIを入れなくても、ここに効果があります。 そして、これが無いとこの構成は成り立ちません。

出てきた内容判断
誰・何・いつまでが全部そろった連絡が2割以下だったフォームの必須化が先に効く。 AIの精度の問題ではない
読み取りは当たったが、台帳と棚が合わなかった棚卸しが先。 台帳の起点をそろえる
読み取りが当たり、棚とも合った毎朝の一覧づくりへ進んでよい
書かれていない返却予定日を日付で埋めてきた指示の書き方で直る。構成は有効

08実装時につまずきやすいポイント

問題対策
申請の経路を1つに絞ろうとして止まる経路は変えない。台帳だけを1つにする。口頭は担当者が代理で入れる
返却予定日が空のまま運用が始まるフォームで必須にする。空欄をAIにも規則にも埋めさせない
端末マスタに管理番号が無い「同じ機種の何台目か」が分からない。棚卸しで番号を貼るのが最初の作業
呼び名のゆれで別の端末になる呼び名の一覧をマスタに持ち、AIへ渡す。似ているものに寄せさせない
人事の予定が月1回しか来ない月1回のCSVで始める。最終出社日が近い分だけ毎日見る
退職日を過ぎてから案内が出る最終出社日から逆算して出す。退職後の回収は本人の善意頼みになる
食い違いをAIに判定させる現物の確認に回す。記録の突合では決まらない
督促のメールが自動で飛ぶcreateDraft で下書きまで。送信は人が行う
トリガーを作った担当者が異動するトリガーは作成した人のアカウントで動く。引き継ぎの手順を先に決める
保証期限を購入日から計算で埋める契約書と納品書の値を入れる。計算で埋めた値は、切れた後に間違いが分かる
貸出の記録で個人を評価してしまう目的は所在の把握。評価に使わないことを先に決める
台帳を1行ずつ読み書きして遅くなるまとめて読んで配列で処理する。サービスの呼び出しを減らす

上の3行が、この構成の成否をほぼ決めます。 どれもAIの話ではなく、台帳と番号の話です。 ここが整っていれば、読み取りの精度が多少低くても運用に乗ります。逆に、ここが整っていないと、精度をいくら上げても所在は分かりません。

担当者の異動でトリガーが止まる、保証期限が実は入っていなかった、遅れがちな人の名前が話題に出る。この3つは、始まってから半年後に効いてきます。 どれも最初に決めておけば起きないことです。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 社員の氏名・所属・社員番号・最終出社日、端末の管理番号と所在、持ち出し先(自宅・客先・出張先)です。

  1. 返却されない端末のリスクを最初に見積もる … 貸し出した端末には業務のデータが入っています。 社内の資料、顧客とのやり取り、保存されたままの認証の情報。退職者が持ったままの端末は、遠隔での消去や端末の管理の仕組みが効かなくなっていることもあります。目的は工数の削減ですが、実際に守っているのは端末の中身です
  2. 貸出の記録を人事評価に使わない … この台帳には、誰が何回返却を遅らせたかが自然に残ります。その使い方をしないことを、運用を始める前に文書にしてください。 評価に使われると分かった瞬間、申請そのものが台帳を通らなくなります
  3. 人事の予定表をAIへ渡さない … 最終出社日との突合はスクリプトの側で行います。AIに渡すのは、届いた連絡の文面と品目の呼び名の一覧までです
  4. 持ち出し先は、個人の居場所に近い情報 … 「自宅」「客先常駐」は、その人がどこにいるかを示します。台帳の閲覧範囲を、情報システムと総務の担当者に限ってください
  5. 督促と返却案内は下書きまで … 送信を自動にしないのは、誤りのときの跳ね返りが大きいためです。すでに返した人への督促は、次の申請を台帳から遠ざけます
  6. 退職者の端末は、アカウントの停止と分けて考える … アカウントを止めても端末は手元に残ります。返却の確認とアカウントの処理を別の担当が見ていると、どちらも「もう片方がやった」になります

誤りが起きた場合のリスクは、返っている端末を未返却として督促することと、返っていない端末を見落とすことの2つです。 前者は台帳の起点がそろっていないと起き、後者は口頭の貸出が記録されていないと起きます。どちらも棚卸しで起点をそろえるところから始まります。

10まず何から始めるか

1週目:棚を数えて管理番号を貼る

貸出の多い上位100台から、管理番号・機種・保証終了日を端末マスタに埋めます。全台を一度にやる必要はありません。 ここが台帳の起点になります。

2週目:フォームを作り、返却予定日を必須にする

質問は8つで足ります。必須にするのは、返却予定日と品目と台数です。 既存の経路は止めません。メールやチャットで来たものは、担当者が代理で入れます。

3週目:30件で読み取りを試す

直近3か月の連絡を30件集め、手元のAIサービスに貼って読み取らせます。空の返却予定日を日付で埋めてこないかを、最優先で見ます。

4週目:毎朝の一覧を手で作ってみる

返却予定日を過ぎたものと、保証期限が3か月以内のものを、台帳から手で数えます。件数がどれくらいになるかを、自動化する前に見ておきます。

2か月目: Apps Script でフォーム送信のトリガーと毎朝の一覧づくりをつなぎます。この時点では一覧だけを見ます。 3か月目以降: 人事の予定と保証・リース・OSのサポートの期限との突合を足し、督促と返却案内の下書きを作ります。1件9分が何分になったかを実測し、棚と台帳の差が毎月何台あるかを数えた時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-09-25/最終更新:2026-09-25
確認した内容情報源確認日
トリガーの種類。時間主導型が毎分から月1回までであること。作成した人のアカウントで実行されること。スクリプトの実行やAPIリクエストでは動かないこと。実行時刻のばらつき。失敗時のメール通知Google: インストール可能なトリガー2026-09-25
シートを2次元の配列として扱うこと。getDataRange().getValues() と appendRow()。呼び出しを最小にする助言Google: Apps Script と Google スプレッドシート2026-09-25
FormApp の openById openByUrl getActiveForm create と、認可のスコープGoogle: FormApp2026-09-25
createDraft の2つの形と戻り値 GmailDraft。cc bcc htmlBody などのオプション。https://mail.google.com/ のスコープ。sendEmail が別にあることGoogle: GmailApp2026-09-25
output_config.format に json_schema を渡す形と結果の返り方。enum と additionalProperties の決まり、date の形式、使えない制約。文法の24時間キャッシュClaude: Structured outputs2026-09-25

返したか返していないかの食い違いは、現物の確認で決着をつけてください。 本記事はその判定を行わせていません。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0246)についてのご相談はこちらから。

AI活用について相談する
目次