派遣会社の契約台帳から事業所単位と個人単位の抵触日が近い契約を毎月判定し、派遣先への確認と意見聴取の期限を営業に知らせる
派遣会社の契約台帳を Google Apps Script が毎月読み、事業所単位と個人単位の抵触日が近い契約を洗い出して、派遣先への確認と意見聴取の期限を営業に知らせます。組織の呼び方の揺れや例外の区分の裏付けは、OpenAI API が判定します。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Power Automate/Python
- 対象業界
- IT・SaaS/人材/製造
- 対象部門
- 営業/法務
- 対象業務
- 内容確認・チェック/台帳・マスタ管理
- 主な課題
- 属人化している/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 入力漏れ削減/工数削減/機会損失防止
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 管理部の営業事務が、月初にその月の更新・新規の契約の一覧を台帳から抜き出す
- 1件ずつ、同じスタッフが同じ派遣先の同じ事業所・同じ課で働き始めた日を、過去の行をたどって探す
- 個人単位の抵触日を出し、就業条件明示書に書く日と合っているかを見る
- 派遣先から通知された事業所単位の抵触日が台帳にあるかを見る。無ければ営業に確かめる
- 抵触日が近いものは、営業に派遣先への確認を頼む(延長の意向、意見聴取の予定)
- 無期雇用・60歳以上・有期プロジェクトなどの例外の区分が付いた行は、根拠を確かめる
- 個人単位の抵触日が近いスタッフは、コーディネーターに次の就業先や雇用安定措置の相談を頼む
- 自動毎月1日の朝、Apps Script が契約台帳とスタッフ台帳を読む
- 自動スタッフ・派遣先・事業所ごとに、過去の契約の行をまとめる
- 自動名前の揺れがある行の組をAIに渡し、同じ事業所・同じ組織単位を指すかを判定させる
- 自動例外の区分が付いた行は、AIに個別契約の業務内容の記載と照らさせ、食い違いの印を付けさせる
- 自動同じと判定された組の最初の開始日から、個人単位の抵触日を計算する
- 自動事業所単位の抵触日は、派遣先から通知された日の列を使う。無ければ「通知なし」の印
- 自動抵触日と期限を並べた一覧を作り、営業ごと・コーディネーターごとにメールで送る
- 人管理部の担当が「同じかどうか不明」「例外の食い違い」「通知なし」の行を確かめる
- 人営業が派遣先に延長の意向と意見聴取の予定を確かめ、コーディネーターがスタッフと次の段取りを話す
各工程の詳しい説明を読む
- 管理部の営業事務が、月初にその月の更新・新規の契約の一覧を台帳から抜き出す
- 1件ずつ、同じスタッフが同じ派遣先の同じ事業所・同じ課で働き始めた日を、過去の行をたどって探す
- 個人単位の抵触日を出し、就業条件明示書に書く日と合っているかを見る
- 派遣先から通知された事業所単位の抵触日が台帳にあるかを見る。無ければ営業に確かめる
- 抵触日が近いものは、営業に派遣先への確認を頼む(延長の意向、意見聴取の予定)
- 無期雇用・60歳以上・有期プロジェクトなどの例外の区分が付いた行は、根拠を確かめる
- 個人単位の抵触日が近いスタッフは、コーディネーターに次の就業先や雇用安定措置の相談を頼む
(a)過去の行をたどるのが重い。 台帳は契約の行が積み重なる作りなので、同じスタッフが同じ課で働き始めた日を探すには、何年分もの行を遡ります。 途中で課の名前が変わっていると、そこで見失います。
(b)組織の呼び方の揺れで、通算を誤る。 「経理課」と「経理部 経理課」は同じか、「総務グループ」が「総務課」に改称されたのか、別の組織なのか。別のものとして扱えば抵触日を見落とし、同じものとして扱いすぎれば必要のない入れ替えを営業に頼むことになります。
(c)期限の知らせが、担当者の記憶に頼っている。 事業所単位の抵触日の1か月前までに、派遣先は過半数労働組合等の意見を聴かなければなりません。派遣元の側でその時期を先回りして営業に伝えるかどうかが、担当者によって違います。
(d)例外の区分が、根拠なく残っている。 「有期プロジェクト」と書かれた行の契約の業務内容が、実はふだんの事務だった、ということがあります。区分が付いていると点検から外れるので、誤った区分はずっと見つかりません。
- 【自動】 毎月1日の朝、Apps Script が契約台帳とスタッフ台帳を読む
- 【自動】 スタッフ・派遣先・事業所ごとに、過去の契約の行をまとめる
- 【自動】 名前の揺れがある行の組をAIに渡し、同じ事業所・同じ組織単位を指すかを判定させる
- 【自動】 例外の区分が付いた行は、AIに個別契約の業務内容の記載と照らさせ、食い違いの印を付けさせる
- 【自動】 同じと判定された組の最初の開始日から、個人単位の抵触日を計算する
- 【自動】 事業所単位の抵触日は、派遣先から通知された日の列を使う。無ければ「通知なし」の印
- 【自動】 抵触日と期限を並べた一覧を作り、営業ごと・コーディネーターごとにメールで送る
- 【人】 管理部の担当が「同じかどうか不明」「例外の食い違い」「通知なし」の行を確かめる
- 【人】 営業が派遣先に延長の意向と意見聴取の予定を確かめ、コーディネーターがスタッフと次の段取りを話す
8番目が、この設計の分かれ目です。 AIの判定は、同じものかどうかの候補です。「不明」と出た組を人が決め、その結果を台帳の「組織単位の正規名」の列に書き戻します。 次の月からは、その組はAIを通さずに同じものとして扱われます。
計算と期限の並べ替えは、すべて規則で行います。 日付の計算をAIに頼むと、うるう年や月末の扱いで1日ずれることがあり、1日のずれが法違反の境目になる業務だからです。
02今回想定するシステム構成
契約台帳・スタッフ台帳(スプレッドシート) │ ▼【トリガー】毎月1日 7時台(時間主導型) Google Apps Script ├──▶ スタッフ×派遣先×事業所ごとに過去の行をまとめる ├──▶ 正規名の対応表で、すでに決まった揺れを置き換える ├──▶ OpenAI API(構造化出力) │ 名前の揺れの組 → 同じ/違う/不明と根拠 │ 例外の区分+業務内容の記載 → 食い違いの印 ├──▶ 個人単位の抵触日の計算、事業所単位の抵触日の通知の確認 ├──▶ 期限の計算(意見聴取の期限など)と一覧のシート └──▶ MailApp で営業・コーディネーター・管理部へ ▼ 【管理部が不明と食い違いを確かめ、営業が派遣先と話す】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Power Automate、Python |
| 生成AI | OpenAI API(構造化出力) | Claude API、Gemini API |
| 保管 | Google スプレッドシート(契約台帳、スタッフ台帳、正規名の対応表、点検の一覧、処理ログ) | - |
| 通知 | Gmail(MailApp) | Google Chat |
新しく足すのは、Apps Script と、正規名の対応表・点検の一覧・処理ログのシートだけです。 契約台帳とスタッフ台帳は今のものを読むだけで、書き戻すのは人が決めた正規名の列だけにします。
Apps Script は、点検の一覧のスプレッドシートに付けるスクリプトとして書き、時間主導型のトリガーで動かします。 公式のページでは、インストール型のトリガーは作った人のアカウントで動き、メールもその人のアカウントから送られるとされ、時間主導型の時刻は少しずれることがあるとされています。管理部の共有のアカウントで作ります。
AIの処理は OpenAI API の構造化出力で行います。 公式のページでは、text.format に type: "json_schema" と strict: true とスキーマを渡すと、スキーマに沿った応答が返るとされています。オブジェクトには additionalProperties: false を付け、項目はすべて required に並べます。拒否の応答はスキーマに沿わないことがあるとされているので、応答の種類を確かめてから読みます。
03どうやって実装するのか
処理の起点を決める
毎月1日の7時台に動く時間主導型のトリガーを起点にします。 月初に、その月に更新・新規を迎える契約と、今後6か月以内に抵触日が来る契約をまとめて点検します。公式のページでは、時間主導型の時刻は少しずれることがあるとされていますが、月に1回の点検なので、分単位の正確さは要りません。
月の途中で結ぶ新規の契約は、別に週1回の点検を置きます。 新しい派遣先や新しいスタッフの契約は、月初を待つと結んだ後に抵触日の問題が分かることがあります。毎週月曜に、前の週に台帳に足された行だけを点検します。
1回の実行は6分までです。 公式の割り当ての表では、スクリプトの1回の実行の時間は6分が上限とされています。台帳が大きい場合は、派遣先の頭文字や担当営業ごとに分けて、続けて実行する形にします。 どこまで終わったかを処理ログに書き、次の実行はその続きから始めます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 契約台帳 | 契約ID、スタッフID、派遣先、事業所名、事業所の所在地、組織単位、業務内容、契約期間、例外の区分、事業所単位の抵触日(通知された日)、延長後の抵触日、担当営業 | 契約台帳のシート |
| スタッフ台帳 | スタッフID、雇用の区分(有期/無期)と切り替えの日、生年月日、担当コーディネーター | スタッフ台帳のシート |
| 正規名の対応表 | 派遣先・事業所・組織単位の、台帳での書き方と正規名の対応。決めた人と日 | 対応表のシート |
| 個別契約の業務内容 | 例外の区分が付いた契約の、業務内容と期間の記載 | 契約台帳の業務内容の列 |
質を決めるのは、正規名の対応表です。 最初は空で始め、AIの判定と人の確認を経て、毎月育ちます。対応表に載った揺れはAIに渡さないので、月を追うごとにAIの出番は減ります。
生年月日は、60歳になる日を出すためだけに使います。 AIには渡しません。
データの取得方法を決める
台帳はスプレッドシートを読むだけです。行を、スタッフID・派遣先・事業所の所在地の3つでまとめます。 事業所の名前ではなく所在地でまとめるのは、名前より所在地のほうが揺れにくいからです。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 契約の行 | 契約台帳 | 開始日の起点、例外の区分、通知された抵触日 |
| 雇用の区分と生年月日 | スタッフ台帳 | 無期雇用・60歳以上の判定(規則) |
| 正規名 | 対応表 | 揺れの置き換え |
| 揺れの組 | 上の結果 | AIに渡す名前の組 |
AIに渡すのは、まとめた行の中で、対応表で置き換えても名前が2つ以上残る組だけです。 「経理課」と「経理部 経理課」が同じ所在地・同じスタッフの行にあれば、その2つの名前と、それぞれの契約期間・業務内容を渡します。スタッフの氏名は渡さず、スタッフIDも渡しません。 組の判定に要らないからです。
AIへ渡す前に整形する
- 空白・全角半角の正規化 … 「経理部 経理課」「経理部 経理課」をそろえます
- 対応表の当て込み … すでに決まった揺れを正規名に置き換えます
- 規則による例外の判定 … スタッフ台帳で無期雇用の区分、契約期間中に60歳以上かを計算します。これらはAIに渡さず、規則だけで決めます
- 連続の判定 … 同じ組の契約が途切れなく続いているかを見ます。契約と契約のあいだに空白の期間がある組には「空白あり」の印を付けます
- 事業所単位の通知の確認 … 通知された抵触日の列が空の契約に「通知なし」の印を付けます
4番目の「空白あり」は、規則で通算・リセットを決めません。 空白の期間を通算するかどうかは、期間の長さや事情によって扱いが変わりうるため、この構成では一律に人が確かめる行に回します。 機械で決めると、通算すべきものをリセットして抵触日を見落とすおそれがあるからです。
日付の計算は、前処理の段階で関数を1つにまとめて書きます。 「開始日から3年を経過した最初の日」「その1月前の日」を出す関数を、個人単位・事業所単位・意見聴取の期限のすべてで同じものを使います。場所ごとに別々に書くと、片方だけ月末の扱いが違う、ということが起きます。 スクリプトのタイムゾーンは日本の時刻に合わせ、台帳の日付は時刻を持たない日付として読みます。時刻つきで読むと、タイムゾーンの差で前日の日付に化けることがあるためです。この関数には、2月29日に始まった契約、月末日に始まった契約など、境目の例をテストとして並べておき、直すたびに全部が通ることを確かめます。 境目の例の正しい答えは、法務の担当が業務取扱要領を見て決めた日を使います。
5番目は、法の定めから来ています。 労働者派遣法第26条第4項は、新たな派遣契約を結ぶ派遣先が、あらかじめ派遣元に事業所単位の抵触日を通知しなければならないと定め、第5項は、通知が無いときは派遣元はその契約を結んではならないとしています。台帳に通知の日が無い契約は、それ自体が知らせるべき事柄です。
AIに処理させる
させるのは、2つの判定だけです。
| 判定 | 入力 | 返すもの |
|---|---|---|
| 名前の揺れの同一性 | 同じ所在地・同じスタッフの行に出てくる組織単位(または事業所)の名前の組と、各行の契約期間・業務内容 | 同じ/違う/不明、根拠の記載 |
| 例外の区分の裏付け | 台帳の例外の区分(有期プロジェクト・日数限定・休業の代替)と、その契約の業務内容と期間の記載 | 裏付けあり/食い違い/記載が足りない、根拠の記載 |
| させないこと | 理由 |
|---|---|
| 抵触日・期限の計算 | 規則で計算する。1日のずれが法違反の境目になる |
| 期間制限に当たるかの結論 | 法務の担当が判断する |
| 空白の期間の通算の判断 | 人が確かめる行に回す |
| 無期雇用・60歳以上の判定 | スタッフ台帳の値から規則で決める |
| 派遣先への通知や依頼の文面の作成と送信 | 派遣先とのやり取りは営業が行う |
2行目と3行目が、この構成でいちばん大事な線引きです。 AIが「当たらない」と書けば、読む人は安心して点検を止めます。AIには「同じか」「記載と合っているか」という材料だけを出させ、結論は人に残します。
指示内容を固定する
あなたは人材派遣会社の管理部で、契約台帳を点検する担当です。
渡された台帳の記載だけを根拠に、次の2つを判定してください。
【判定1:名前の組が同じ組織単位を指すか】
同じ派遣先・同じ所在地で、同じスタッフの契約に出てくる組織単位の名前の組を渡します。
- same ....... 同じ組織単位を指すと言える記載がある
(表記の違いだけ、上位の部名の有無だけ、など)
- different .. 別の組織単位を指すと言える記載がある
(業務内容がはっきり違う、別の課名が並んでいる、など)
- unclear .... どちらとも決められない(改称か別組織か分からない、など)
迷ったときは unclear を選んでください。
same を選ぶと期間が通算され、different を選ぶと通算されません。
どちらも誤れば影響が大きいので、記載で言い切れないときは unclear です。
【判定2:例外の区分が業務内容の記載と合っているか】
台帳の例外の区分と、その契約の業務内容・期間の記載を渡します。
- supported ...... 区分に合う記載がある(例:終了の予定がある事業の立ち上げ、
休業する社員の業務の代替である旨、など)
- inconsistent ... 区分と合わない記載がある(例:ふだんの定常の事務など)
- insufficient ... 判断できるだけの記載が無い
【厳守事項】
- 台帳に書かれていない派遣先の組織や事情を補わないでください。
- 期間制限に当たるか当たらないかの結論を書かないでください。
- 日付の計算をしないでください。
- 根拠 evidence には、判定に使った台帳の記載をそのまま写してください。
- 業務内容の記載が短すぎる場合は、insufficient または unclear にしてください。
【名前の組と各行】{name_groups}
【例外の区分の付いた契約】{exception_rows}
「same を選ぶと通算され…」を指示に書くのは、判定の重みをAIに伝えるためです。 名前が似ているだけで same にすると、後ろの計算で起点の日が早まり、実際より早い抵触日が営業に届きます。 逆に different にしすぎると、見落としになります。どちらにも倒さず unclear を選ばせるために、影響をそのまま書きます。
出力形式を固定する
構造化出力のスキーマで、次の形を返させます。strict: true では全項目を required に並べる必要があるため、値が無いときは空文字を返させます。
{
"name_judgments": [
{
"group_id": "",
"names": [""],
"result": "same | different | unclear",
"evidence": ""
}
],
"exception_judgments": [
{
"contract_id": "",
"exception_type": "project | limited_days | leave_substitute",
"result": "supported | inconsistent | insufficient",
"evidence": ""
}
]
}
1つ目の理由は、判定と計算を分けられることです。 スクリプトは same の組だけを1つの組織単位としてまとめ、その中の最初の開始日から個人単位の抵触日を計算します。unclear の組は、まとめた場合とまとめない場合の両方の抵触日を一覧に並べ、早いほうを仮の日として扱います。
2つ目の理由は、期限の一覧を規則で組み立てられることです。 一覧の列は次のとおりです。
| 列 | 中身 | 出し方 |
|---|---|---|
| 個人単位の抵触日 | 同じ組織単位で働き始めた日から3年を経過した最初の日 | 規則で計算 |
| 事業所単位の抵触日 | 派遣先から通知された日(延長後は延長後の日) | 台帳の値 |
| 意見聴取の期限の目安 | 事業所単位の抵触日の1か月前の日 | 規則で計算 |
| 営業の確認の時期 | 意見聴取の期限の目安の2か月前 | 規則で計算(自社の決まり) |
| 印 | 通知なし、空白あり、組の不明、例外の食い違い、60歳到達、無期への切り替え | 規則とAIの判定 |
意見聴取の期限は、法の定めをそのまま規則にしています。 労働者派遣法第40条の2第3項・第4項は、派遣先が派遣可能期間を延長するときは、抵触することとなる最初の日の1月前の日までの間に、過半数労働組合等の意見を聴かなければならないとしています。意見を聴くのは派遣先ですが、派遣元の営業がその時期を知っていれば、延長の意向を早めに確かめられます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 契約台帳・スタッフ台帳 | SpreadsheetApp | 読み取り。正規名の列だけ人の決定を書き戻す |
| 正規名の対応表 | SpreadsheetApp | 読み取りと、人が決めた対応の追加 |
| OpenAI API | UrlFetchApp(Responses API) | 名前の組と例外の区分の判定 |
| 点検の一覧 | SpreadsheetApp | 期限の一覧と印の書き込み |
| 営業・コーディネーター・管理部 | MailApp | 担当ごとの期限の一覧 |
メールは、受け取る人ごとに中身を変えます。 営業には担当する派遣先の事業所単位の期限と意見聴取の期限の目安、コーディネーターには担当するスタッフの個人単位の抵触日、管理部には印の付いた行の一覧を送ります。全員に全件を送ると、自分の行を探す手間が増え、読まれなくなります。
延長の通知を受けたときの段取りも、一覧に載せます。 派遣先が派遣可能期間を延長したときは、労働者派遣法第40条の2第7項で、派遣先は速やかに派遣元へ延長後の抵触日を通知しなければならないとされ、第34条第2項で、派遣元はその通知を受けたら遅滞なく、その事業所で働く派遣スタッフに延長後の抵触日を明示しなければならないとされています。台帳の「延長後の抵触日」の列が埋まった月に、明示が済んだかの確認の行を管理部の一覧に足します。
個人単位の抵触日が近いスタッフは、コーディネーターへの一覧に載せます。 労働者派遣法第30条は、同じ組織単位で継続して3年間働く見込みがある有期雇用の派遣スタッフについて、派遣先への直接雇用の依頼などの雇用安定措置を講じなければならないと定めています。次の就業先の相談に間に合うよう、抵触日の6か月前から一覧に出します。
人が確認する
- 管理部が
unclearの組を決める … 営業に派遣先の組織図や改称の有無を確かめてもらい、同じか違うかを決めて正規名の対応表に書きます - 管理部が
inconsistentとinsufficientの例外の区分を確かめる … 個別契約書を開き、区分が誤っていれば台帳を直し、期間制限の対象として点検し直します - 「通知なし」の契約を営業に確かめる … 派遣先から事業所単位の抵触日の通知を受けているかを確かめ、受けていなければ契約の手続きを止めます
- 「空白あり」の組の扱いを決める … 空白の期間の長さと事情を見て、通算するかを法務の担当が決めます
- 営業が派遣先と話す … 延長の意向と意見聴取の予定を確かめ、結果を台帳に書きます
3番目を飛ばさないでください。 通知の無い契約を結ぶことは、第26条第5項が禁じていることです。一覧の上に必ず置き、営業から返事が来るまで印を消しません。
human_check を「必須」にしているのは、AIの判定が期間の通算に直結するためです。 same と出た組も、最初の数か月は管理部が全部確かめます。確かめた組は対応表に載るので、翌月からは確認の対象から外れます。
例外に対処する
| 起きること | 対応 |
|---|---|
| OpenAI API が応答しない | 名前の組をすべて unclear として扱い、両方の抵触日を並べる。翌日にやり直す |
| 拒否の応答が返る | スキーマに沿わないことがあるので、応答の種類を見てから読む。読めなければ unclear |
| 1回の実行が6分に近づく | 処理ログに進み具合を書いて止め、続きを次の実行で行う |
| 事業所の所在地が空の行 | まとめられないので、管理部の一覧に「所在地なし」として載せる |
| スタッフ台帳に無いスタッフID | 計算せず、管理部の一覧に載せる |
| 契約期間の終了日が開始日より前 | 台帳の誤りとして管理部の一覧に載せる |
| 60歳の誕生日が契約期間の途中にある | 「60歳到達」の印。区分の切り替えの時期を法務が確かめる |
| 有期から無期への切り替えの日が台帳に無い | 「区分の確認」の印。スタッフ台帳を直してもらう |
| 派遣先が組織改編を知らせてきた | 対応表の該当の正規名に、改編の日と新しい名前を人が足す |
いちばん上の行の扱いが、この構成の安全側の考え方です。 AIが使えないときは、名前の揺れをすべて「不明」として扱い、早いほうの抵触日を仮に使います。 知らせが多めに出ますが、見落としは起きません。
記録を残す
- 点検の実行日、対象にした契約の範囲、どこまで終わったか
- AIに渡した名前の組と例外の区分の記載、返ってきた JSON の全文
- 計算した抵触日と期限、付いた印
- 人が決めた結果 … どの組を同じ・違うと決めたか、誰がいつ、何を根拠に
- 送ったメールの宛先と日時
人が決めた結果は、正規名の対応表と処理ログの両方に残します。 対応表は次の月の計算に使うためのもの、ログはなぜその日を起点にしたかを後から説明するためのものです。期間制限について労働局から聞かれたときに、台帳と一緒に出せる形にしておきます。
AIの判定と人の決定が違った組は、月に1回数えます。 same を人が different に直した組が続くなら、渡している業務内容の記載が短すぎるか、指示の例が足りていません。直しの多い派遣先から、台帳の業務内容の書き方を見直します。
04実装レベルの3段階
本記事の想定は半自動化です。 本格構成で通知のメールや明示書を読み取る部分は、派遣先ごとに通知の書式が違い、明示書を作る仕組みも会社ごとに違うため、利用環境に応じた個別確認が必要です。 最小構成でも、揺れの判定の当たり外れは分かります。 ただし台帳全体をたどる作業は残るので、月450件には使えません。 段階を飛ばさないでください。 半自動化を数か月回すと、正規名の対応表が育ち、通知の無い派遣先、業務内容の記載が短い営業、例外の区分の付け方が怪しい派遣先が見えてきます。台帳の側を直してから本格構成に進むほうが、読み取りの作り込みが無駄になりません。
05工数削減シミュレーション
導入後 450件 × 2分 ÷ 60 = 15 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 有期雇用の派遣スタッフを多くの派遣先へ送り出し、個別契約を数か月ごとに更新している派遣会社。契約台帳をスプレッドシートで持ち、抵触日の管理を営業事務が台帳をたどって手で確かめている場合。派遣先の組織の呼び方が契約ごとに揺れ、同じ課かどうかの判断に時間がかかっている場合。Google Workspace を使っている場合。
- 派遣の基幹システムで、事業所単位・個人単位の抵触日の計算と期限の通知がすでに回っている場合。送り出している派遣スタッフの大半が無期雇用か60歳以上で、期間制限の対象になる契約が少ない場合。期間制限に当たるかの法的な判断そのものを機械に任せたい場合(この構成は判定の候補と期限の知らせまでで、最後の判断は人が行います)。
07最小構成で試す方法
- 契約台帳から、過去に組織の呼び方が揺れていた派遣先を3社選ぶ
- その3社のスタッフの契約の行を書き出し、スタッフの氏名とIDを消す
- 手元の ChatGPT の画面(社内で使ってよいと認められた範囲)に、第7章の判定1の指示と名前の組を貼る
- 返ってきた
same/different/unclearを、管理部が知っている実際の組織と突き合わせる - 例外の区分が付いた契約を10件選び、判定2も同じように試す
最初に見るのは、same の誤りが無いかです。 実際は別の課なのに same が出たら、指示の「迷ったら unclear」が効いていません。 記載の短い組でどう振る舞うかを見ます。
| 出てきた内容 | 判断 |
|---|---|
揺れの組の大半が正しく、迷うものが unclear になった | Apps Script でつなぐ段階に進む |
似た名前だけで same にした | 指示の書き方と、渡す業務内容の量を見直す |
| 例外の区分の食い違いが見つかった | 今の台帳の誤りが分かったということ。 区分の見直しから始める |
業務内容の記載が短く insufficient ばかり | 台帳の業務内容の書き方を、個別契約書に合わせる |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
似た名前だけで same になる | 「迷ったら unclear」と、判定の重みを指示に書く |
| 抵触日の計算が1日ずれる | 法務の担当が手で出した日とテストの台帳で突き合わせる |
| 事業所単位の抵触日を自社で計算してしまう | 派遣先から通知された日だけを使う。無ければ「通知なし」 |
| 空白の期間を機械でリセットする | 「空白あり」として人に回す |
| 60歳到達や無期への切り替えを見落とす | スタッフ台帳の値から規則で毎月計算する |
| 例外の区分が付いた行が点検から外れたまま | 業務内容の記載とAIで照らし、食い違いに印 |
| 1回の実行が6分を超える | 担当営業ごとに分け、進み具合をログに書く |
| 全員に全件のメールを送り、読まれない | 受け取る人ごとに中身を絞る |
| 人が決めた結果が次の月に生かされない | 正規名の対応表に書き戻す |
上の3行が、この構成の失敗のほとんどです。 どれも「どの日から数えるか」「どの日を使うか」の誤りで、AIの判定よりも、規則の側の書き方で決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 派遣スタッフの雇用の区分・生年月日・就業先、派遣先の組織と契約の内容です。
- AIに渡すのは組織の名前と業務内容の記載だけにする … スタッフの氏名・ID・生年月日・年齢は渡しません。60歳到達や無期の判定はスクリプトの側で行います
- API の契約条件を確かめる … OpenAI の API に渡したデータの扱い(学習に使うか、保存期間)は、契約する時点の OpenAI の規約で確かめます
- 期間制限に当たるかの判断を人に残す … AIの判定は材料です。法の解釈に関わる判断は法務の担当が行い、迷うものは労働局に確かめます
- 派遣先への連絡は営業が行う … 一覧を派遣先へ自動で送るしくみは作りません。派遣先の組織や抵触日は、派遣先にとっても扱いに気をつける情報です
- 一覧の閲覧を絞る … 点検の一覧は管理部と担当の営業・コーディネーターだけが見られるようにします
誤りが起きた場合のリスクは、抵触日を見落として違法な派遣になることと、抵触日を早く見積もりすぎて必要のない入れ替えを派遣先に頼むことの2つです。 前者は unclear で両方の日を並べ早いほうを使うこと、後者は人が組を決めて対応表に戻すことで防ぎます。
10まず何から始めるか
1週目:台帳の列をそろえる
契約台帳に「事業所の所在地」「事業所単位の抵触日(通知された日)」「延長後の抵触日」「例外の区分」の列がそろっているかを確かめ、空の行を数えます。 通知された日が空の契約は、このとき営業に確かめてもらいます。
2週目:揺れの多い3社で試す
組織の呼び方が揺れていた派遣先を3社選び、手元の生成AIの画面で判定1を試します。same の誤りが無いかを最優先で見ます。
3週目:日付の計算を確かめる
スクリプトで個人単位の抵触日と意見聴取の期限の目安を計算させ、法務の担当が過去の契約20件で手で出した日と突き合わせます。 1日でもずれたら、計算の書き方を直します。
4週目:Apps Script をつなぐ
月初の点検、AIの判定、一覧の作成までを作ります。最初の2か月は営業とコーディネーターへのメールを送らず、管理部だけに送ります。 一覧と今の手作業の結果を見比べ、違いを数えます。
3か月目: 営業とコーディネーターへの知らせを始め、unclear と「通知なし」の件数を毎月数えます。4か月目以降: 正規名の対応表が育ったところで、1件6分が何分になったかを実測します。抵触日の近い契約が毎月1日に担当者へ届き、管理部が印の付いた行だけを見て点検を終えられるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 第26条第4項(新たな派遣契約を結ぶ派遣先が、あらかじめ派遣元に事業所単位の抵触日を通知すること)・第5項(通知が無いときは派遣元が契約を結んではならないこと)。第30条(同じ組織単位で継続して3年間働く見込みのある有期雇用の派遣労働者への雇用安定措置)。第34条第1項第3号・第4号(就業条件の明示に個人単位・事業所単位の抵触日を含むこと)・第2項(延長の通知を受けたら遅滞なく明示すること)。第35条の3(同じ組織単位で3年を超えて同じ派遣労働者を派遣してはならないこと)。第40条の2第1項(無期雇用・厚生労働省令で定める者・有期プロジェクト・日数限定・休業の代替の例外)・第2項(派遣可能期間3年)・第3項と第4項(抵触日の1月前の日までの意見聴取期間に過半数労働組合等の意見を聴くこと)・第7項(延長したら派遣元へ速やかに通知すること) | e-Gov 法令API: 労働者派遣事業の適正な運営の確保及び派遣労働者の保護等に関する法律 | 2026-10-13 |
| 事業所単位と個人単位の期間制限、無期雇用の派遣労働者と60歳以上の派遣労働者が期間制限の対象外であること、組織単位が「課」などを想定していること、意見聴取を延長しようとする期間が終わる1か月前までに書面で通知して行うこと、違法な派遣の受け入れに労働契約申込みみなし制度が適用されうること | 厚生労働省: 派遣先の皆様へ(施行後3年の確認事項) | 2026-10-13 |
| 同じ派遣労働者を同じ組織単位で受け入れられる期間が3年までで、課が異なれば同じ人を受け入れられること。意見聴取は事業所単位の抵触日の1か月前までに行うこと | 厚生労働省: 派遣先の皆様へ | 2026-10-13 |
| インストール型のトリガーが作った人のアカウントで動き、メールもその人のアカウントから送られること。時間主導型のトリガーの時刻が少しずれること | Google Apps Script: Installable triggers | 2026-10-13 |
| スクリプトの1回の実行の時間が6分であること | Google Apps Script: Quotas | 2026-10-13 |
構造化出力が text.format に type: "json_schema" と strict: true を渡す形で、スキーマに沿った応答を返すこと。additionalProperties: false と全項目の required が要ること。enum が使えること。拒否の応答はスキーマに沿わないことがあること | OpenAI API: Structured Outputs | 2026-10-13 |
空白の期間をはさむ契約の通算の扱い、組織単位の判断、例外への該当は、業務取扱要領と労働局への確認をもとに、法務の担当が判断してください。 本記事は法の条文と厚生労働省の資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1397)についてのご相談はこちらから。
