パート・アルバイトの応募を、募集条件と勤務できる曜日・時間で一次仕分けする
パート・アルバイトの応募内容を、店舗ごとの募集条件と必要なシフトに照らして仕分け、連絡の下書きまで用意します。採用担当の作業は、1件ずつ読んで店舗へ振り分けることから、仕分けの結果を確かめて連絡することに変わります。
- 利用ツール
- ChatGPT/Claude/Gemini/Google Apps Script/Make/Power Automate/Python
- 対象業界
- 人材/介護/宿泊/小売/飲食
- 対象部門
- 採用
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 人手が足りない/属人化している/期限・対応漏れが起きる
- AIで行う処理
- 判定
- 主な効果
- 対応スピード向上/工数削減/機会損失防止
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- 既存ツールのみ(小)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 求人サイトや応募フォームから、応募の通知が届く
- 採用担当が応募内容を開く
- 応募先の店舗と職種を確かめる
- 勤務できる曜日と時間帯を読む
- その店舗の必要なシフトと照らす
- 合えば、面接の日程の候補を作って連絡する
- 合わなければ、近隣の店舗で合うところがないかを探す
- どこも合わなければ、お断りの連絡をする
- 応募者からの返信を待ち、面接の日程を確定する
- 店舗へ面接の予定を伝える
- 求人サイトや応募フォームから、応募が届く
- 自動応募内容をスプレッドシートへ集約する(経路の違いを吸収)
- 自動勤務できる曜日と時間帯を、決まった形に整える
- 自動応募先の店舗の必要なシフトと照らす
- 自動合わない場合、近隣の店舗で合うところを探す
- 自動募集条件(年齢の下限、資格の要否)に照らす
- 自動仕分けの結果と理由を出す
- 自動結果に応じた連絡の下書きを作る
- 人採用担当が結果を確かめ、連絡を送る
- 人面接の日程を確定し、店舗へ伝える
- 自動仕分けの結果と、その後の経過を記録する
各工程の詳しい説明を読む
- 求人サイトや応募フォームから、応募の通知が届く
- 採用担当が応募内容を開く
- 応募先の店舗と職種を確かめる
- 勤務できる曜日と時間帯を読む
- その店舗の必要なシフトと照らす
- 合えば、面接の日程の候補を作って連絡する
- 合わなければ、近隣の店舗で合うところがないかを探す
- どこも合わなければ、お断りの連絡をする
- 応募者からの返信を待ち、面接の日程を確定する
- 店舗へ面接の予定を伝える
問題は7つあります。
(a)件数が多く、連絡が遅れる。 月420件を4名で処理しています。平均1.8日、混む時期は3日かかることがあります。
(b)シフトとの突合に手間がかかる。 店舗の必要なシフトはシフト管理システムに、応募内容は採用管理システムにあります。2つを開いて見比べています。
(c)近隣店舗への振り替えが十分にできていない。 応募先の店舗で合わなくても、隣の店舗なら合うことがあります。探すのに時間がかかるため、そこまで手が回りません。
(d)仕分けの基準が担当者によって違う。 「週2日からでも面接に呼ぶ」「土日に入れないなら見送る」といった判断が、4名で揃っていません。同じ応募でも、誰が見たかで結果が変わります。
(e)連絡の文面を毎回作っている。 面接の案内、日程の調整、お断り。定型のはずですが、店舗と職種を差し替えて毎回書いています。
(f)応募の経路が4つに分かれている。 求人サイト2社、自社フォーム、店頭の応募票。形式が違うため、まとめて見られません。
(g)辞退の理由が記録されない。 「連絡が遅かった」「条件が合わなかった」という理由が残りません。改善の材料になりません。
- 求人サイトや応募フォームから、応募が届く
- 【自動】 応募内容をスプレッドシートへ集約する(経路の違いを吸収)
- 【自動】 勤務できる曜日と時間帯を、決まった形に整える
- 【自動】 応募先の店舗の必要なシフトと照らす
- 【自動】 合わない場合、近隣の店舗で合うところを探す
- 【自動】 募集条件(年齢の下限、資格の要否)に照らす
- 【自動】 仕分けの結果と理由を出す
- 【自動】 結果に応じた連絡の下書きを作る
- 【人】 採用担当が結果を確かめ、連絡を送る
- 【人】 面接の日程を確定し、店舗へ伝える
- 【自動】 仕分けの結果と、その後の経過を記録する
自動化されるのは「集約」「整形」「突合」「近隣の探索」「仕分け」「下書き」の6つです。残るのは、仕分けの結果の確認と、連絡を送る判断です。
採否を決めません。 「面接に呼ぶ」「見送る」の最終的な判断は採用担当が行います。この構成が出すのは、条件が合うかどうかの照合の結果です。
人物の評価もしません。 応募の文面から意欲や適性を判断させないでください。この構成が見るのは、勤務できる時間と募集条件だけです。
連絡の自動送信もしません。 下書きを作り、採用担当が確認して送ります。特にお断りの連絡は、必ず人が確認してください。
近隣店舗の提案が、この構成で新しく生まれる価値です。 現状は、手が回らずにできていません。応募のあった店舗で合わなくても、隣の店舗なら合うことがあります。
02今回想定するシステム構成
応募の経路 ・求人サイトA(通知メール) ・求人サイトB(通知メール) ・自社の応募フォーム(Google フォーム) ・店頭の応募票(店舗が入力) │ ▼ Google スプレッドシートへ集約 │ ▼【トリガー】Google Apps Script │ ・フォーム送信(自社フォーム) │ ・時間主導(求人サイトのメールを定期的に取り込む) │ Google Apps Script │ ├──▶ 経路ごとの形式の違いを吸収 ├──▶ 勤務できる曜日・時間帯を決まった形に整える ├──▶ 店舗の必要なシフトを取得 ├──▶ 重なる時間を計算する(**ここはスクリプトで計算**) ├──▶ 近隣店舗の一覧を取得 │ ▼ Claude API(判定) │ ・自由記入の希望を読み取る │ ・仕分けの区分を判定 │ ・理由を書く │ ・連絡の下書きを作る │ ・structured outputs でスキーマどおりのJSONを返させる │ ▼ 仕分けの結果(Google スプレッドシート) │ ・区分 / 理由 / 重なるシフト / 近隣の候補 / 連絡の下書き │ ▼ 採用担当が確認 ──【人】 │ ▼ 連絡を送る ──【人】 │ ▼ 面接の日程を確定、店舗へ連絡 ──【人】 │ ▼ 結果と経過を記録(次の改善に使う)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Power Automate、Make、Python |
| 生成AI | Claude API | OpenAI API、Gemini API |
| 応募の受付 | Google フォーム | Microsoft Forms、採用管理システム |
| 台帳 | Google スプレッドシート | Excel、Microsoft Lists |
| シフト管理 | 既存のシフト管理システム | 各社の製品 |
採用管理システムに条件での絞り込み機能があるなら、まずそちらを確認してください。 勤務できる曜日と時間で絞り込めるなら、この構成は要りません。自前で組む価値があるのは、その機能がないか、シフト管理システムと突き合わせたい場合です。
Google Apps Script を選ぶ理由は、フォームとスプレッドシートが1つの環境にあることです。 自社の応募フォームが Google フォームなら、フォームの送信をそのままトリガーにできます。
Apps Script のインストール可能なトリガーには、時間主導(時計)のトリガーと、イベント主導のトリガーがあります。時間主導は最短で1分ごと、最長で月1回まで設定できます。イベント主導には、開いたとき、編集したとき、構造が変わったとき、フォームが送信されたとき、カレンダーの予定が更新されたときがあります。
時間主導のトリガーは、実行の時刻が多少ばらつきます。 サーバーの負荷を分散するため、タイミングがわずかにランダム化されるとされています。分単位の厳密さが要る用途には向きません。
トリガーは、作成した人のアカウントで実行されます。 イベントを起こした人のアカウントではありません。担当者が異動する場合、トリガーを作り直す必要があります。
重なる時間の計算は、スクリプトで行ってください。 「月曜9時〜13時」と「月曜10時〜15時」が3時間重なることは、計算で決まります。生成AIに計算させると、ぶれる余地を作るだけです。
生成AIを使うのは、自由記入の希望を読む部分だけです。 「子どもの学校行事のときは休みたい」「夕方は18時までなら入れる」といった記述は、決まった形になっていません。ここだけをAIに読ませます。
03どうやって実装するのか
処理の起点を決める
2種類のトリガーを組み合わせます。
(1)フォーム送信のトリガー(自社の応募フォーム)
自社の応募フォームから送信されたとき、その場で処理が始まります。応募から数分で仕分けの結果が出る形です。
(2)時間主導のトリガー(求人サイトからの取り込み)
求人サイトからは通知メールで届きます。15分ごとに受信箱を見て、新しい応募を取り込みます。
15分ごとにする理由は、連絡の速さです。 パート・アルバイトの応募者は、複数の求人に同時に応募しています。1時間ごとだと、その分だけ連絡が遅れます。
ただし、実行の時間には制約があります。 トリガーで走るスクリプトの1日あたりの実行時間の合計は、Google Workspace のアカウントで6時間、無料のアカウントで90分です。15分ごとに1日96回動かす場合、1回あたり3分以内に終える必要があります。
1回の実行時間の上限は6分です。 これは Workspace でも無料でも同じです。大量の応募をまとめて処理する設計にすると、上限に触れます。 1回の実行で処理する件数に上限を設け、残りは次回に回してください。
店頭の応募票は、店舗が入力します。 スプレッドシートへの入力を、編集のトリガーで拾う形にできます。ただし、入力の途中で何度も動くため、送信のボタンを設ける設計のほうが確実です。
日次のトリガーも置いてください。 毎朝、まだ連絡していない応募を一覧にします。 連絡漏れを防ぐ最後の関門です。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 応募内容 | 氏名、連絡先、希望の店舗・職種、勤務できる曜日と時間帯、経験、自由記入の希望 | 求人サイト/フォーム/応募票 |
| 募集の条件 | 店舗・職種ごとの、必要な曜日と時間帯、人数、年齢の下限、必要な資格 | シフト管理システム/人事部の文書 |
| 店舗の一覧 | 店舗名、住所、最寄り駅、近隣の店舗 | 社内の情報 |
| 仕分けの基準 | 区分の定義と、判定の条件 | 人事部の文書 |
| 連絡の文面の型 | 面接の案内、日程の調整、近隣の提案、お断り | 人事部の文書 |
| 過去の応募と結果 | 仕分けの結果と、その後(面接・採用・辞退) | 記録 |
データの取得方法を決める
募集の条件が、この構成の質を決めます。 店舗ごと・職種ごとに、次の形で持ってください。
| 列 | 例 |
|---|---|
| 店舗 | ◯◯店 |
| 職種 | レジ |
| 必要な曜日と時間帯 | 平日16:00-20:00(3名)、土日9:00-14:00(2名)、土日16:00-20:00(2名) |
| 最低の勤務日数 | 週2日以上 |
| 最低の1回の勤務時間 | 3時間以上 |
| 年齢の下限 | 16歳以上(18歳未満は22時以降の勤務不可) |
| 必要な資格 | なし(惣菜は食品衛生の講習を入社後に受講) |
| 急ぎの度合い | 高(欠員が出ている) |
「急ぎの度合い」の列が実務では効きます。 欠員が出ている店舗の募集は、条件が多少合わなくても面接に呼ぶ価値があります。 この情報がないと、機械的な判定になります。
「最低の勤務日数」「最低の1回の勤務時間」を数値で書いてください。 「なるべく多く」では判定できません。
年齢に関する条件は、法令に照らして慎重に設計してください。 労働基準法では、満18歳未満の者について深夜業の制限があります。 この構成では、年齢の下限と深夜の勤務の可否だけを機械的に照合し、それ以外の年齢に関する判断は行わないでください。
仕分けの基準も、次の形で整理してください。
| 区分 | 条件 | 次の行動 |
|---|---|---|
| 面接へ | 必要なシフトと3時間以上重なり、最低の日数を満たす | 面接の日程の候補を連絡 |
| 条件を確認 | 重なるが最低の日数に届かない、または自由記入に確認事項がある | 電話で確認してから判断 |
| 近隣を提案 | 応募先では合わないが、近隣の店舗で合う | 近隣の店舗を案内 |
| 職種を提案 | 同じ店舗の別の職種なら合う | 別の職種を案内 |
| 見送り | どの店舗・職種でも合わない | お断りの連絡 |
| 人が判断 | 判定できない(記載が不十分、特殊な事情) | 採用担当が読む |
「近隣を提案」「職種を提案」の区分が、この構成で新しく作る価値です。 現状は手が回らずにできていません。応募者にとっても、断られるより選択肢を示されるほうが良い体験になります。
「人が判断」の区分を必ず置いてください。 判定できないものを無理に振り分けると、誤った連絡が行きます。
過去の応募と結果: 運用を始めてからたまります。「面接へ」と判定して実際に面接に来た割合、採用に至った割合を測れます。
AIへ渡す前に整形する
- 経路ごとの形式の統一 … 求人サイト2社、フォーム、応募票で項目名が違います。対応表を作って機械的に変換します
- 勤務できる時間の正規化 … 「平日夕方」「16時以降」「16:00〜20:00」を、曜日×時間帯の形にそろえます
- 重なる時間の計算 … 応募者の勤務可能時間と、店舗の必要なシフトの重なりを計算します。ここはスクリプトで計算します
- 近隣店舗の抽出 … 応募先の店舗から、通える範囲の店舗を抽出します。距離か最寄り駅で決めます
- 年齢の確認 … 生年月日から年齢を計算し、下限と深夜勤務の可否を照合します
- 個人情報の扱い … 氏名と連絡先は判定に不要です。伏せてから生成AIへ渡す形にしてください
2の正規化は、この構成でいちばん手間のかかる部分です。 「夕方」が何時から何時かは、店舗によって違います。自社での定義を決めて、対応表を作ってください。
| 表現 | 変換 |
|---|---|
| 早朝 | 6:00-9:00 |
| 午前 | 9:00-13:00 |
| 午後 | 13:00-17:00 |
| 夕方 | 16:00-20:00 |
| 夜 | 18:00-22:00 |
この対応表は、応募フォームの設計にも反映してください。 自社のフォームなら、最初から時間帯を選択式にできます。 自由記入をなくせば、正規化の手間が消えます。
6の個人情報の扱いは、必ず設計に入れてください。 判定に必要なのは、勤務できる時間、年齢、希望の店舗と職種です。氏名、連絡先、住所の詳細は不要です。 応募者IDで扱ってください。
AIに処理させる
スクリプトで計算すること:
| 処理 | 内容 |
|---|---|
| 重なる時間の計算 | 応募者の勤務可能時間と必要なシフトの重なり |
| 重なる日数 | 週何日重なるか |
| 年齢の計算と照合 | 下限、深夜勤務の可否 |
| 近隣店舗の抽出 | 距離または最寄り駅 |
| 店舗ごとの充足の状況 | 必要な人数に対する現在の応募の数 |
Claude API にさせること:
| 処理 | 内容 |
|---|---|
| 自由記入の読み取り | 「学校行事のときは休みたい」などの希望 |
| 確認事項の抽出 | 電話で確かめるべき点 |
| 区分の判定 | 計算結果と自由記入をあわせて区分を決める |
| 理由の記述 | なぜその区分かを1〜2文で |
| 連絡の下書き | 区分に応じた文面 |
採否を判定させません。 「採用すべき」「不適格」といった記述を出させないでください。
人物の評価もさせません。 応募の文面から意欲や人柄を判断させないでください。これは差別的な取扱いにつながる恐れがあります。
年齢・性別・国籍などに基づく判断もさせません。 年齢は、法令上の制限(深夜業)と募集条件の下限に照らす機械的な照合だけです。それ以外の判断は行わせないでください。
時間の計算もさせません。 重なる時間の計算はスクリプトで確定させます。
指示内容を固定する
あなたは小売業の採用担当を支援する担当者です。
パート・アルバイトの応募について、募集条件との照合の結果をもとに
仕分けの区分を決め、連絡の下書きを作ることが役割です。
【厳守事項】
- 採否を判定しないでください。
「採用すべき」「不適格」「見込みが高い」と書かないでください。
- 人物を評価しないでください。
応募の文面から意欲、人柄、適性を判断しないでください。
「意欲が高そう」「長続きしなさそう」と書かないでください。
- 年齢・性別・国籍・家族の状況に基づく判断をしないでください。
年齢については、下の「募集の条件」に書かれた下限と、
深夜の勤務の可否の照合だけを行ってください。
それ以外の年齢に関する記述をしないでください。
- 時間の計算をしないでください。
重なる時間と日数はすでに計算済みです。
与えられた数値をそのまま使ってください。
- 区分は、下の「仕分けの基準」に照らして決めてください。
基準にない判断を加えないでください。
- 判定できない場合は「人が判断」にしてください。
無理に振り分けないでください。
- 自由記入の希望から、電話で確かめるべき点を抽出してください。
希望の内容を評価せず、確認事項として挙げるだけにしてください。
- 連絡の下書きは、下の「文面の型」に沿って作ってください。
応募してくれたことへの感謝を必ず入れてください。
- お断りの連絡には、理由を「現在募集している時間帯と合わなかった」
という事実の範囲で書いてください。
応募者の資質に関わる表現を使わないでください。
- 近隣の店舗や別の職種を提案する場合、
「よろしければ」という形で、押しつけにならない書き方にしてください。
【応募の情報(応募者ID / 希望の店舗・職種 / 勤務できる曜日と時間帯 / 経験 / 自由記入)】
{application}
【計算済みの照合結果(重なる時間 / 重なる日数 / 年齢の照合 / 近隣店舗での重なり)】
{computed_match}
【募集の条件(店舗 / 職種 / 必要な曜日と時間帯 / 最低の勤務日数 / 最低の1回の勤務時間 / 年齢の下限 / 必要な資格 / 急ぎの度合い)】
{job_conditions}
【仕分けの基準(区分 / 条件 / 次の行動)】
{screening_rules}
【連絡の文面の型】
{message_templates}
「人物を評価しない」の指示が、この構成でもっとも重要です。 応募の文面から意欲や適性を判断させると、根拠のない評価が記録に残ります。 採用の場面では、これが差別的な取扱いにつながる恐れがあります。
「年齢に関する判断をしない」も同様です。 年齢は、法令上の深夜業の制限と、募集条件に書かれた下限の照合だけに使います。「若い人のほうが長く続く」といった判断は、絶対に行わせないでください。
「お断りに応募者の資質に関わる表現を使わない」の指示も入れてください。 断る理由は「募集している時間帯と合わなかった」という事実です。それ以外の理由を書かせないでください。
「押しつけにならない書き方」の指示は、応募者の体験を守ります。 近隣の店舗を提案するのは親切ですが、「こちらでいかがですか」と決めつける書き方をすると、押しつけに感じられます。
出力形式を固定する
{
"application_id": "",
"received_at": "",
"applied_store": "",
"applied_position": "",
"match": {
"overlap_hours_per_week": 0,
"overlap_days_per_week": 0,
"meets_min_days": false,
"meets_min_hours_per_shift": false,
"age_ok": true,
"night_shift_restricted": false
},
"alternatives": [
{ "store": "", "position": "", "overlap_hours_per_week": 0, "distance_note": "" }
],
"category": "interview | confirm | suggest_store | suggest_position | decline | manual",
"reason": "",
"points_to_confirm": [],
"free_text_notes": [],
"message_draft": { "type": "", "body": "" },
"urgency": "high | normal",
"confidence": "high | low"
}
Claude API で出力をスキーマに沿わせるには、output_config の format に json_schema を指定します。 古い output_format は非推奨です。
スキーマの制約に注意してください。 required と additionalProperties: false は使えますが、minimum / maximum は使えません。 重なる時間を0以上に縛ることはスキーマではできないため、受け取った後に確かめてください。
match を独立させ、計算結果をそのまま置いている点が重要です。 判定の根拠が数値として残ります。採用担当が「なぜこの区分か」を確かめられます。
alternatives が、この構成の新しい価値です。 応募先で合わなくても、近隣の店舗や別の職種で合うことがあります。現状は手が回っていない部分です。
points_to_confirm は、電話で確かめるべき点です。 「学校行事のときは休みたい」という記述があれば、「頻度と時期を確認」と挙げます。 内容を評価せず、確認事項として出すだけです。
urgency は、店舗の欠員の状況を反映します。 急ぎの店舗の応募は、一覧の上に出します。
confidence が low の件は、必ず人が読みます。 記載が不十分、自由記入が読み取りにくい場合に立てます。
システムへ連携する
連絡の自動送信は行いません。
| 出力先 | 内容 |
|---|---|
| Google スプレッドシート | 仕分けの結果と連絡の下書き |
| Gmail | 採用担当が確認して送る |
| 採用管理システム | 採用担当が確認してから登録 |
| 店舗(Chat / メール) | 面接の予定(日程が確定してから) |
自動送信をしない理由は、誤った連絡が応募者へ届くと取り返せないからです。 特にお断りの連絡は、一度送ると訂正がききません。
ただし、受付の自動返信は入れてください。 「応募を受け付けました。2営業日以内にご連絡します」という自動返信は、応募者の不安を減らします。 これは仕分けの結果に関わらない定型の連絡なので、自動で構いません。
メールの送信には、1日あたりの上限があります。 Apps Script から送る場合、受信者の数の上限は Google Workspace のアカウントで1日1,500、無料のアカウントで1日100です。月420件、1日あたり20件前後なら余裕がありますが、受付の自動返信も含めると倍になる点に注意してください。
採用管理システムへの登録も、確認してから行ってください。 仕分けの結果が誤っていた場合、システムに誤った情報が残ります。
店舗への連絡は、面接の日程が確定してから行ってください。 仕分けの段階で店舗へ流すと、まだ面接に来るか分からない人の情報が広がります。
人が確認する
採用担当の確認は必ず残します。 確認の深さを、区分で分けます。
| 区分 | 確認 |
|---|---|
interview | 一覧で結果を見て、下書きを送る。1件30秒 |
confirm | 確認事項を見て、電話の内容を決める |
suggest_store / suggest_position | 提案の内容が妥当かを見る |
decline | 必ず内容を読む。 近隣や別職種の可能性を再確認 |
manual | 応募内容を最初から読む |
confidence が low | 区分にかかわらず読む |
decline を必ず読んでください。 断る前に、本当に合う先がないかを確かめます。応募者を失うことは、機会の損失そのものです。
確認を速くするための設計が効きます。
urgencyがhighの件を上に並べる- 重なる時間と日数を数値で見せる
- 近隣の候補を、距離とともに見せる
- 連絡の下書きをその場で編集できるようにする
- 受付からの経過時間を表示する(遅れている件が分かる)
5つ目が効きます。 受付から24時間を超えた件に印を付ければ、連絡の遅れに気づけます。 現状、平均1.8日かかっていることが、応募者を失う原因になっています。
日次で、未連絡の一覧を出してください。 毎朝、まだ連絡していない応募を確認します。連絡漏れを防ぐ最後の関門です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 勤務できる時間の記載が曖昧 | manual にする。推測しない |
| 自由記入が長く、読み取りにくい | confidence を low にして人が読む |
| 応募の経路の形式が変わった | 対応表を更新する。変換に失敗したら止める |
| 同じ人が複数の店舗に応募した | 応募者IDで重複を検出し、まとめて扱う |
| 18歳未満の応募で深夜の勤務が必要な職種 | 法令上の制限を機械的に照合する。それ以外の年齢の判断はしない |
| 必要な資格がない | 入社後に取得できるかを条件に書いておく |
| 応募が急増した(求人サイトの掲載直後) | 1回の実行で処理する件数に上限を設ける |
| スクリプトの実行時間が上限に近い | 1回6分の上限。処理を分割する |
| 1日のトリガーの実行時間の合計が足りない | Workspace で6時間、無料で90分。頻度と処理量を調整する |
| メールの送信の上限に達した | Workspace で1日1,500、無料で100。受付の自動返信も数える |
| 店舗の必要なシフトが更新されていない | 更新日を確認し、古い場合は警告を出す |
| AIが人物を評価した | 指示で禁止する。テストで必ず確認する |
| AIが年齢について判断した | 禁止する。法令上の照合のみ |
| お断りの連絡に資質の表現が入った | 禁止する。必ず人が読んでから送る |
| トリガーの作成者が異動した | トリガーは作成者のアカウントで動く。作り直す |
「トリガーの作成者が異動した」は、見落とされやすい点です。 Apps Script のインストール可能なトリガーは、イベントを起こした人ではなく、トリガーを作成した人のアカウントで実行されます。 作成者が退職すると動かなくなります。共有のアカウントで作成するか、引き継ぎの手順を決めてください。
記録を残す
この記録は、募集の条件と仕分けの基準を見直す材料になります。
- 応募の経路と、受付の日時
- 計算した重なりの結果
- 仕分けの区分と理由
- 採用担当の確認と、区分の変更
- 連絡を送った日時(受付からの経過時間)
- その後の経過(面接に来た/来なかった/採用/辞退)
- 辞退の理由(分かる範囲で)
「受付から連絡までの経過時間」を必ず測ってください。 この構成の効果が、いちばん直接に表れる指標です。平均1.8日が半日になれば、辞退が減るはずです。
「区分の変更」も記録してください。 AIが decline としたものを担当者が interview に変えたなら、仕分けの基準が厳しすぎます。
「辞退の理由」は、分かる範囲で構いません。 「連絡が遅かった」「他で決まった」「条件が合わなかった」の3つに分けるだけでも、改善の材料になります。
応募者の個人情報の扱いに注意してください。 氏名、連絡先、生年月日、住所。採用に至らなかった応募者の情報をいつまで保管するかを、人事部で決めてください。 自社の個人情報の取扱いについての公表内容に沿った期間にしてください。
判定に使う情報は、必要最小限にしてください。 生成AIへ渡すのは、勤務できる時間、年齢の照合結果、希望の店舗と職種、自由記入の希望です。氏名と連絡先を渡す必要はありません。
04実装レベルの3段階
半自動化の時点で、6分が3分程度になります。 集約と突合が消えるためです。本格構成では1.8分になりますが、減るのは近隣の探索と記録の手間です。 本格構成の「未連絡の日次の一覧」を、必ず入れてください。 連絡漏れを防ぐ仕組みです。この構成の目的は、連絡を速くすることにあります。 「近隣店舗の提案」も本格構成で入れてください。 現状できていないことです。応募者を失わずに済む機会が、ここに残っています。 段階を飛ばさないでください。 最小構成で「人物を評価しない」ことを確かめてから自動化へ進んでください。評価が混ざったまま全店舗へ広げると、根拠のない判断が大量の記録に残ります。 実行の量の制約にも注意してください。 トリガーで走るスクリプトの1日あたりの実行時間の合計は、Workspace で6時間、無料のアカウントで90分です。15分ごとに動かすなら、1回あたり3分以内に終える設計にしてください。件数が増えたら、1回の処理件数に上限を設けて分割します。
05工数削減シミュレーション
導入後 420件 × 1.8分 ÷ 60 = 12.6 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- パート・アルバイトの応募が月に200件以上ある企業。店舗や施設ごとに必要なシフトが違い、応募者の勤務できる時間との突合に手間がかかっている場合。応募から連絡までに時間がかかり、辞退されている場合。仕分けの基準が採用担当の経験にだけあり、引き継げない場合。
- 応募が月に数十件で、担当者が全件に目を通せる規模。採用管理システムに条件での絞り込み機能があり、運用されている場合。応募条件が「誰でも可」で、仕分けが発生しない場合。応募の受付が電話のみで、テキストのデータが残らない場合。
07最小構成で試す方法
- 店舗を5つ選ぶ(応募の多い店舗)
- その5店舗の募集の条件を、上記の8列の形で整える
- 仕分けの基準を6区分の形で書く
- 過去1か月の応募を50件用意する
- 表計算ソフトで、重なる時間と日数を計算する
- 生成AIのチャット画面で、区分の判定と下書きの作成を試す
- 採用担当が実際に行った対応と突き合わせる
見るのは次の5点です。
| 見る点 | 判断 |
|---|---|
| 担当者の判断と区分が一致した割合 | 8割以上なら使える |
decline としたが実際は面接に呼んだ件 | 1件でもあれば基準を見直す |
| 近隣店舗の提案が妥当か | 距離と時間帯が現実的か |
| 人物の評価・年齢の判断が混ざっていないか | 1件でも混ざったら指示を直す。妥協しない |
| 連絡の下書きがそのまま使えるか | 直す量が多いなら文面の型を見直す |
2つ目が最重要です。 断るべきでない人を断ることが、この構成でいちばん避けたい誤りです。過去に面接へ呼んだ応募のうち、この構成が decline とするものがあれば、基準か計算に問題があります。
4つ目も妥協しないでください。 採用の場面で、根拠のない人物評価や年齢に基づく判断が記録に残ることは、法令上も社内の運用上も問題になります。 わざと自由記入に「元気があります」と書いた応募を混ぜて、意欲の評価が出ないかを確かめてください。
次に、近隣店舗の提案を試してください。 応募先で合わない応募を10件選び、近隣の店舗で合うものがあるかを判定させます。 実際に採用担当が探した結果と比べてください。
時間の正規化の効果も測ってください。 自由記入で「夕方」と書かれた応募が、16:00-20:00に正しく変換されているかを確かめます。ここが外れると、すべての判定が狂います。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが人物を評価する | 禁止する。テストで必ず確認する。妥協しない |
| AIが年齢について判断する | 法令上の照合のみ。それ以外は禁止 |
| AIが時間を計算して間違える | 計算はスクリプトで確定させる |
| 時間の表現の正規化が外れる | 対応表を作る。フォームを選択式にする |
decline を人が読まずに送る | 必ず読む運用にする。断る前に近隣を確認 |
| 連絡が自動送信される | 下書きまで。お断りは特に人が読む |
| 1回の実行が6分を超える | 処理件数に上限を設けて分割する |
| 1日のトリガーの実行時間が足りない | Workspace 6時間、無料90分。頻度を調整する |
| メールの送信の上限に達する | Workspace 1,500、無料100。自動返信も数える |
| トリガーの作成者が異動して止まる | 共有のアカウントで作成する |
| 近隣の提案が押しつけになる | 「よろしければ」の形にする |
| 店舗の必要なシフトが古い | 更新日を確認して警告を出す |
| 同じ人の複数応募を別々に扱う | 応募者IDで重複を検出する |
| 個人情報を生成AIへ渡す | 氏名と連絡先は渡さない。応募者IDで扱う |
| 未連絡の件に気づかない | 日次で一覧を出す |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 応募者の氏名、連絡先、生年月日、住所、勤務できる時間、経験。採用に関わる個人情報です。
- 人物の評価をしないこと … この構成は、応募の文面から意欲・人柄・適性を判断しません。 根拠のない評価が記録に残ることは、差別的な取扱いにつながる恐れがあります。指示で禁止し、テストで必ず確認してください
- 年齢に基づく判断の制限 … 年齢は、労働基準法上の深夜業の制限と、募集条件に書かれた下限の照合だけに使います。それ以外の年齢に関する判断を行わせないでください。 募集・採用における年齢制限には法令上の定めがあるため、募集条件そのものを人事部と社会保険労務士で確認してください
- その他の属性による判断の禁止 … 性別、国籍、家族の状況、居住地域に基づく判断を行わせないでください
- 送る情報を絞る … 判定に氏名と連絡先は不要です。応募者IDで扱い、個人を特定できる情報を生成AIへ渡さない設計にしてください
- 外部AIへの入力可否 … 勤務できる時間や自由記入の希望も、応募者の情報です。自社の個人情報の取扱いについての公表内容に照らして判断してください
- 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
- アクセス権限 … 応募の情報は人事部の担当者に限定してください。店舗へ渡すのは、面接の日程が確定してからにしてください
- 保管期間 … 採用に至らなかった応募者の情報をいつまで保管するかを決めてください。自社の公表内容に沿った期間にしてください
- お断りの連絡の内容 … 断る理由は「募集している時間帯と合わなかった」という事実の範囲にとどめてください。応募者の資質に関わる表現を使わないでください。 必ず人が読んでから送ってください
- 採否の決定との分離 … この構成は採否を決めません。 面接に呼ぶか、採用するかは人が判断します。仕分けの結果をそのまま採否の根拠にしないでください
- 自動実行してよい範囲 … 集約、整形、計算、仕分け、下書きの作成、受付の自動返信までです。面接の案内やお断りの送信、採否の判断、採用管理システムへの登録は人が行います
誤りが起きた場合のリスクは、合うはずの応募者を断ってしまうこと、逆に根拠のない評価が記録に残ることです。前者は機会の損失で、後者は法令上の問題につながります。 decline を必ず人が読む運用と、人物評価を禁じる指示の両方を、省かないでください。
10まず何から始めるか
1週目:時間の表現の対応表を作る
「早朝」「午前」「夕方」が何時から何時かを決めます。自社での定義を1枚の表にしてください。 これがないと、すべての判定が狂います。
2週目:応募の多い5店舗の募集条件を整える
店舗・職種ごとに、必要な曜日と時間帯、最低の勤務日数、年齢の下限、急ぎの度合いを書きます。シフト管理システムから取れる部分は取り出してください。
3週目:50件で判定を試す
過去1か月の応募50件で、区分の判定と実際の対応を突き合わせます。decline としたが実際は面接へ呼んだ件を、必ず確かめてください。 そして、人物の評価や年齢の判断が混ざっていないかを1件ずつ見ます。
4週目:連絡の文面の型を作る
面接の案内、日程の調整、近隣の提案、お断りの4種類を作ります。お断りの文面は、人事部と一緒に確認してください。 応募者の資質に関わる表現が入っていないかを見ます。
2か月目: 5店舗で半自動化を回します。受付から連絡までの日数を測ってください。 これがこの構成のいちばん大事な指標です。未連絡の日次の一覧も、最初から入れてください。
3か月目以降: 40店舗へ広げ、近隣店舗の提案を足します。同時に、区分の変更の記録を見てください。 担当者が decline を interview に変えている件が多いなら、基準が厳しすぎます。
半年後: 受付から連絡までの日数と、連絡前の辞退の件数を、導入前と比べてください。この2つが改善していれば、この構成は目的を果たしています。 時間の削減より、応募してくれた人を採用につなげられることのほうが、事業にとっての価値は大きいはずです。
1年後には、募集の条件そのものを見直す材料がそろいます。 どの時間帯の募集に応募が集まらないかが見えます。「平日の早朝は応募が少ない」と分かれば、時給や勤務の条件を変えるという判断ができます。 仕分けを速くするより、応募が集まる条件にするほうが根本的です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Google Apps Script のインストール可能なトリガーに、時間主導(時計)のトリガーと、開いたとき・編集したとき・構造が変わったとき・フォームが送信されたとき・カレンダーの予定が更新されたときのイベント主導のトリガーがあること。時間主導のトリガーは最短で1分ごと、最長で月1回まで設定でき、サーバーの負荷を分散するため実行のタイミングがわずかにランダム化されること。トリガーはイベントを起こした人ではなく、トリガーを作成した人のアカウントで実行されること。読み取り専用のモードでは動作せず、スクリプトの実行やAPIの要求ではトリガーが起動しないこと(一部の例外を除く)。アドオンでは時間主導のトリガーを最大でも1時間に1回しか使えないこと | Google for Developers: Installable triggers - Apps Script | 2026-09-25 |
| Apps Script の1回の実行時間の上限が6分であること(一般アカウント・Google Workspace とも同じ)。トリガーで走るスクリプトの1日あたりの実行時間の合計が、一般アカウントで90分、Google Workspace で6時間であること。URL Fetch の呼び出しが1日あたり一般アカウントで20,000回、Workspace で100,000回であること。メールの受信者の数が1日あたり一般アカウントで100、Workspace で1,500であること(ドメイン内の受信者は一般100、Workspace 2,000)。いずれも最初の要求から24時間で回復し、予告なく変更されうること | Google for Developers: Quotas for Google Services - Apps Script | 2026-09-25 |
Claude API で出力をスキーマに沿わせる際、output_config の format に json_schema を指定すること(output_format は非推奨)。required と additionalProperties: false は使えるが、minimum / maximum / minLength / maxLength は使えないこと | Anthropic Docs: Structured outputs | 2026-09-25 |
募集・採用における年齢制限、労働時間の制限、募集時の明示事項については、労働施策総合推進法、労働基準法、職業安定法などの定めがあります。この部分は自社の人事部門および社会保険労務士の確認に従ってください。 この記事は募集条件の適法性について判断を示すものではありません。応募者の個人情報の取扱いは、自社の個人情報の取扱いについての公表内容と規程に従ってください。採否の判断、および応募者の適性の評価は人が行うものであり、この構成はそれを行いません。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0257)についてのご相談はこちらから。
