Media > AI活用ユースケース > 人事 > 社内研修の受講記録を毎週集めて未受講者を洗い出し、期限と受講方法を書いた催促と部門ごとの受講状況の報告を作る

社内研修の受講記録を毎週集めて未受講者を洗い出し、期限と受講方法を書いた催促と部門ごとの受講状況の報告を作る

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

受講管理システムの受講記録と集合研修の出席の記録を、受講対象者の名簿と毎週突き合わせて未受講者を洗い出します。期限と受講方法を書いた催促の文面と、部門ごとの受講状況の報告を作って届けます。

サマリー
生成AI
Azure OpenAI Service/Claude
連携・自動化
Make/Power Automate/Zapier
対象業界
介護/建設/物流/製造
対象部門
人事
対象業務
内容確認・チェック/書類作成
主な課題
人手が足りない/入力作業が多い/期限・対応漏れが起きる
AIで行う処理
生成
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★☆☆☆☆
実装レベル
半自動化
費用感
ノーコード連携(中)
人間の確認
条件付き
現在工数
50h/月
AI導入後
15h/月
想定削減
70%
年間削減
420h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 教育担当が受講管理システムから受講状況を書き出し、スプレッドシートで開く
  2. 工場の総務が、集合研修の紙の出席表をスプレッドシートに打ち込み、教育担当に送る
  3. 教育担当が受講対象者の名簿と2つの記録を社員番号で突き合わせ、未受講者に印を付ける
  4. 未受講者のうちメールを見る社員には、教育担当がメールを書いて送る。期限と受講方法は研修ごとに書き直す
  5. 技能職の未受講者は、職長ごとに一覧を作ってメールで送る
  6. 月末に、部門ごとの受講率を数えて部門長に報告する
導入後(After)
  1. 人教育担当が毎週月曜の朝までに、受講管理システムの書き出しを決まったフォルダに保存する
  2. 人工場の総務が集合研修の出席をフォームで入力する(紙の出席表は、研修の当日に総務が入力する)
  3. 自動毎週月曜の9時にフローが動き、名簿、受講記録、出席の記録を読み込む
  4. 自動社員番号の書き方をそろえ、割り当てごとに「受講済み/未受講/期限切れ」を決める
  5. 自動未受講を、研修・催促の段階・届け先(本人/職長)でまとめ、型の数だけ AI に文面を作らせる
  6. 人教育担当が Teams で型の文面を確かめ、承認する
  7. 自動型に名前と期限を差し込み、本人には Teams で、技能職の分は職長ごとの一覧にして職長に送る
  8. 自動月の最後の週は、部門ごとの数字を数えて AI に報告の文章を作らせ、部門長に送る
  9. 自動催促した日時と段階を、受講の割り当ての台帳に書き込む
各工程の詳しい説明を読む
  1. 教育担当が受講管理システムから受講状況を書き出し、スプレッドシートで開く
  2. 工場の総務が、集合研修の紙の出席表をスプレッドシートに打ち込み、教育担当に送る
  3. 教育担当が受講対象者の名簿と2つの記録を社員番号で突き合わせ、未受講者に印を付ける
  4. 未受講者のうちメールを見る社員には、教育担当がメールを書いて送る。期限と受講方法は研修ごとに書き直す
  5. 技能職の未受講者は、職長ごとに一覧を作ってメールで送る
  6. 月末に、部門ごとの受講率を数えて部門長に報告する

(a)記録が2か所に分かれている。 eラーニングは受講管理システム、集合研修は出席表で、社員番号の書き方が違います(先頭の0の有無、全角と半角)。突き合わせでずれ、受講したのに未受講と出る社員が毎月出ます。催促された社員から「受けました」と返事が来て、初めて分かります。

(b)催促の文面が毎回違う。 期限、受講の方法(受講管理システムの入り方、集合研修の日程と会場)を、教育担当がその都度書きます。期限の日付を前の研修から写し間違えることもあります。

(c)催促が遅れる。 突き合わせに時間がかかるため、催促は期限の数日前になります。期限の直前に集合研修の空きは残っていません。

(d)部門長への報告が数字だけ。 受講率の表を送っていますが、どの研修のどの社員が残っているのか、何が理由で止まっているのかが部門長に伝わらず、報告が読まれていません。

  1. 【人】 教育担当が毎週月曜の朝までに、受講管理システムの書き出しを決まったフォルダに保存する
  2. 【人】 工場の総務が集合研修の出席をフォームで入力する(紙の出席表は、研修の当日に総務が入力する)
  3. 【自動】 毎週月曜の9時にフローが動き、名簿、受講記録、出席の記録を読み込む
  4. 【自動】 社員番号の書き方をそろえ、割り当てごとに「受講済み/未受講/期限切れ」を決める
  5. 【自動】 未受講を、研修・催促の段階・届け先(本人/職長)でまとめ、型の数だけ AI に文面を作らせる
  6. 【人】 教育担当が Teams で型の文面を確かめ、承認する
  7. 【自動】 型に名前と期限を差し込み、本人には Teams で、技能職の分は職長ごとの一覧にして職長に送る
  8. 【自動】 月の最後の週は、部門ごとの数字を数えて AI に報告の文章を作らせ、部門長に送る
  9. 【自動】 催促した日時と段階を、受講の割り当ての台帳に書き込む

6番目が、この設計の分かれ目です。 教育担当が見るのは十数通りの型で、180人分のメッセージではありません。型が正しければ、差し込んだ全員分が正しいので、確認が数分で終わります。

4番目を機械で決めているのも、意図してのことです。 受講したかどうかを AI に読み取らせると、名前が似た社員を取り違えます。 社員番号でそろえた結果だけを使います。

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

構成図
受講管理システムの書き出し(毎週、SharePoint の決まったフォルダへ)
集合研修の出席(フォーム → 出席の表)
受講の割り当ての台帳(社員番号・研修・期限・届け先・催促の段階)
   ▼【トリガー】毎週月曜 9:00(Recurrence)
Power Automate(スケジュール済みクラウド フロー)
   ├──▶ Run script:書き出しをテーブルの形に整える(Office スクリプト)
   ├──▶ List rows present in a table:割り当て・受講記録・出席を読み込む
   ├──▶ 社員番号をそろえ、割り当てごとに受講済み/未受講/期限切れを決める
   ├──▶ 未受講を「研修×段階×届け先」でまとめる
   ├──▶ プロンプトを実行する(AI Builder、JSON 出力)… 型ごとの催促の文面
   ├──▶ Teams:教育担当に型の文面を送り、承認を待つ
   ├──▶ 本人:Teams のフロー ボットで催促を送る
   ├──▶ 職長:担当する技能職の一覧と型の文面を送る
   ├──▶ 月の最後の週:部門ごとの数字 → プロンプトを実行する → 部門長へ報告
   └──▶ 台帳に催促の日時と段階を書き込む
役割想定する製品代替候補
ワークフローPower Automate(スケジュール済みクラウド フロー、Teams のコネクタ)Make、Zapier
生成AIAI Builder のプロンプト(「プロンプトを実行する」アクション、JSON 出力)Azure OpenAI(Microsoft Foundry)、Claude
保管SharePoint のドキュメント ライブラリ(受講管理システムの書き出し、割り当ての台帳、出席の表)Dataverse
通知Microsoft Teams(フロー ボットとのチャット)Outlook のメール

新しく足すのは、フロー1本と、受講の割り当ての台帳だけです。 台帳には、社員番号、研修、期限、届け先(本人か職長か)、職長の社員番号、催促の段階、最後に催促した日を持たせます。届け先の列を足すことが、この構成の最初の準備作業です。

表の読み込みは、Excel Online (Business) コネクタの「List rows present in a table」で行います。 公式の説明では、既定で返すのは256行までで、すべてを取るにはページ分割をオンにする必要があるとされています。600件の割り当てを読むので、ページ分割は必須です。対応するファイルは .xlsx と .xlsb で、最大25MBです。

受講管理システムの書き出しは、そのままでは読めません。 このコネクタはファイルの中のテーブルを読むため、書き出したファイルをテーブルの形に整える必要があります。「Run script」で Office スクリプトを動かして整えます。 Run script は10秒に3回、1日に1,600回までとされているので、週1回の整形には十分です。

起点は Recurrence(繰り返し)トリガーです。 間隔と頻度、開始時刻とタイム ゾーンを指定し、週ごとなら曜日と時刻を選べます。

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

Step1

処理の起点を決める

毎週月曜の9時に動かします。 月1回にしないのは、期限の2週間前と1週間前に催促を出すためです。月末にまとめて突き合わせると、期限の直前にしか催促できません。 週1回なら、どの期限にも少なくとも2回の催促が間に合います。

Recurrence の設定は、頻度を週、間隔を1、曜日を月曜、時刻を9時にします。タイム ゾーンは必ず日本時間を選びます。 開始時刻は UTC の形式で書く欄なので、タイム ゾーンを選ばないと9時間ずれて動きます。

前提として、月曜の朝までに受講管理システムの書き出しがフォルダに入っている必要があります。 教育担当の金曜の作業にし、フローは最初にファイルの更新日時を見て、先週のファイルのままなら止まって教育担当に知らせます(例外処理)。古いファイルで催促すると、先週受講した社員にまで催促が届きます。

Step2

入力データを集める

データ中身取得元
受講の割り当て社員番号、氏名、部門、研修コード、期限、届け先、職長の社員番号、催促の段階割り当ての台帳
eラーニングの受講記録社員番号、研修コード、受講完了日、テストの合否受講管理システムの書き出し
集合研修の出席社員番号、研修コード、実施日、会場、講師出席の表(フォームの回答)
研修の情報研修コード、研修名、受講の方法、受講管理システムの入り方、集合研修の次回の日程と会場、問い合わせ先研修のマスタ
部門の情報部門、部門長、職長の一覧組織の表

質を決めるのは、研修のマスタです。 催促に書く「受講の方法」と「次回の日程」は、すべてここから取ります。AI は日程を考えません。 集合研修の日程が変わったら、教育担当がマスタを直します。

「テストの合否」を持たせるのは、受講したが合格していない社員を分けるためです。 合格を受講の完了とする研修では、不合格のまま期限が来る社員に、「受けてください」ではなく「テストを受け直してください」と書く必要があります。

Step3

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

  1. 書き出しの整形 … 「Run script」で、受講管理システムの書き出しの見出しを決まった列名にし、テーブル「受講記録」にします
  2. 割り当ての読み込み … 割り当ての台帳を「List rows present in a table」で読みます。ページ分割をオンにし、期限が今日から30日以内か過ぎているものに絞ります
  3. 受講記録と出席の読み込み … 同じアクションで、受講記録のテーブルと出席の表を読みます
  4. 研修のマスタと組織の表の読み込み … 文面と届け先に使います

2番目の絞り込みは、フローの中で行います。 このコネクタのフィルター クエリが使えるのは eq、ne、contains、startswith、endswith だけで、日付の大小では絞れません。 全件を読んでから、「アレイのフィルター処理」で期限の条件に合うものを残します。1列に使えるフィルター関数は1つだけで、並べ替えも1列だけです。

フィルター クエリが使える列名は英数字だけです。 列名を「社員番号」のような日本語にしていると、フィルター クエリも並べ替えも使えません。台帳の列名は最初から EmpNo、CourseCode、DueDate のように英数字にします。 画面に出す名前は別に持ちます。

Step4

AIへ渡す前に整形する

  1. 書き出しの更新日時の確認 … 今週のファイルでなければ止めます
  2. 社員番号の書き方をそろえる … 全角を半角に、先頭の0を6桁にそろえ、前後の空白を除きます
  3. 研修コードの照合 … 受講記録の研修コードが研修のマスタに無ければ、その行を「マスタに無い」として教育担当に回します
  4. 割り当てごとの判定 … 受講記録か出席の記録に、同じ社員番号・研修コードの行があり、完了日が割り当ての日以降で、合否のある研修なら合格のときに「受講済み」。無ければ期限と今日で「未受講」か「期限切れ」
  5. 催促の段階を決める … 期限まで14日以内で未催促なら1回目、7日以内なら2回目、期限を過ぎたら「期限切れ」。段階は台帳の値と今日の日付だけで決めます
  6. 型にまとめる … 未受講と期限切れを、研修コード・段階・届け先(本人/職長)の組でまとめ、組ごとの人数を数えます

2番目を省かないでください。 書き方のずれは、受講した社員に催促が届くという一番まずい形で表に出ます。そろえる規則は、受講管理システムと出席の表のそれぞれで実際に使われている書き方を見てから決めます。

4番目の「完了日が割り当ての日以降」も大事です。 毎年受け直す研修では、昨年の受講記録を今年の受講と取り違えます。

判定の結果は、次のような形で割り当ての行ごとに持ちます。

社員番号研修期限受講記録出席判定段階届け先
004512情報セキュリティ(eラーニング)10/3110/09 完了・合格-受講済み--
010233情報セキュリティ(eラーニング)10/3110/12 完了・不合格-未受講2回目本人
020871フォークリフト特別教育10/20-なし期限切れ期限切れ職長

2行目のように、受講はしたが不合格の社員は「未受講」に入れ、型を分けます。 「受けてください」ではなく「テストを受け直してください」と書く型になるよう、段階とは別に retest の印を付けて AI に渡します。この区別を付けないと、受講した社員に「まだ受けていません」と届きます。

Step5

AIに処理させる

させるのは、2種類の文章を作ることだけです。

作るもの材料守ること
催促の型の文面研修名、期限、受講の方法、次回の日程、段階、届け先期限・日程・方法はマスタの値をそのまま書く。名前は差し込みの印にする
部門長への報告部門ごとの割り当て数、受講済み、未受講、期限切れ、研修ごとの内訳数字はフローが数えた値をそのまま書く。理由を推測しない

催促の段階ごとに、書き方を変えさせます。

段階本人あての書き方職長あての書き方
1回目(14日前)期限と受講の方法を短く知らせる担当する社員の一覧と、朝礼で伝えてほしい一言
2回目(7日前)期限が近いことと、集合研修なら次回の日程一覧と、受講の時間を作ってほしいという依頼
期限切れ受講の方法と、教育担当への連絡のお願い一覧と、教育担当と日程を決めてほしいという依頼
させないこと理由
受講したかどうかの判定社員番号でそろえた記録で決まる
期限や日程の計算・言い換えマスタの日付を写す。曜日を足すと間違える
期限切れの社員への処分や不利益の示唆扱いを決めるのは人事と部門長
部門長への報告で、未受講の理由の推測「忙しいため」などを書き足す
特別教育の受講を「済み」とみなす判断実施の記録が要る教育で、出席の記録で決める

3行目がいちばん起きやすい失敗です。 期限切れの文面で「速やかに受講しない場合は評価に影響します」のような一文を足しがちです。そう書くかどうかは人事の方針で、AI が決めることではありません。

Step6

指示内容を固定する

あなたは製造業の人事部で、社内研修の受講を促す文面を作る担当です。
フローが渡す【型の情報】だけを使って、催促の文面を1つ作ってください。

【書き方】
- 届け先が「本人」なら、社員本人に向けて3〜5文で書いてください。
- 届け先が「職長」なら、担当する社員に受講を促してもらう依頼として書き、
  社員の一覧は書かずに「{{一覧}}」と書いてください。一覧はフローが入れます。
- 本人あての宛名は「{{氏名}} さん」と書いてください。
- 段階ごとの書き方:
  1回目 … 期限と受講の方法を短く知らせる
  2回目 … 期限が近いことを伝え、集合研修なら次回の日程を書く
  期限切れ … 受講の方法と、教育担当に連絡してほしいことを書く
- retest が true の型は、受講は済んでいてテストが不合格の人あてです。
  「受講してください」ではなく、テストの受け直しを促す文面にしてください。

【厳守事項】
- 研修名、期限、受講の方法、次回の日程、会場、問い合わせ先は、
  【型の情報】の文言をそのまま使ってください。日付に曜日を足さないでください。
- 【型の情報】に無い日程、会場、受講の方法を書き足さないでください。
- 期限を過ぎた場合の扱い(評価、処分、受講の制限など)を書かないでください。
- 受講していない理由を推測して書かないでください。
- 命令口調にせず、短く、何をすればよいかが一目で分かるように書いてください。
- 回答に JSON マークダウンを含めないでください。

【型の情報】{template_info}

「日付に曜日を足さない」を書いているのは、曜日の誤りを防ぐためです。 AI は親切のつもりで「10月28日(火)」のように曜日を足し、その曜日が間違っていることがあります。 曜日が要るなら、フローで計算してマスタの日付と一緒に渡します。

差し込みの印を {{氏名}} {{一覧}} に固定しているのは、フローで置き換えるためです。 印の書き方が型ごとに違うと、置き換えが漏れて「{{氏名}} さん」のまま届きます。

Step7

出力形式を固定する

AI Builder のプロンプトの出力を JSON にし、次の形で受け取ります。

{
  "template_id": "",
  "audience": "本人 | 職長",
  "stage": "1回目 | 2回目 | 期限切れ",
  "title": "",
  "body": "",
  "placeholders": [
    { "name": "氏名" }
  ]
}

1つ目の理由は、placeholders で差し込みの印を確かめられることです。 フローは、本文に出てくる印と placeholders の一覧が一致するか、知らない印が混ざっていないかを見てから差し込みます。一致しなければ、その型は送らずに教育担当に回します。

2つ目は、教育担当の承認と送信を template_id で結べることです。 承認した型の ID を持つ社員にだけ送り、承認されなかった型の社員には何も送りません。

JSON の形は保存したときに固定されます。 Microsoft の説明では、保存した形式がフローで使われ続け、キーの無い JSON は使えないとされています。placeholders を文字列の配列にせず、name を持つ要素の配列にしているのはそのためです。

部門長への報告は、同じプロンプトの機能で別のプロンプトを作り、summary(3〜5文)と attention(期限切れが多い研修の名前と人数)を返させます。数字はフローが数えた値を渡し、AI に数えさせません。

{
  "department": "第2工場 組立課",
  "summary": "",
  "attention": [
    { "course": "", "overdue": 0, "next_session": "" }
  ]
}

overdue と next_session は、フローが渡した値を写させるだけです。 受け取った後、フローは attention の人数が自分で数えた値と一致するかを見て、一致しなければ報告を送らずに教育担当へ回します。 AI が数字を書き写す途中で取り違えることがあるからです。部門長に届く報告は、たとえば「今月期限の研修は42件で、受講済みは35件です。期限切れはフォークリフトの特別教育の3名で、次回は11月6日の第2工場会議室です」のような短いものになります。

Step8

システムへ連携する

つなぎ先方式内容
受講管理システムの書き出しExcel Online (Business) の「Run script」「List rows present in a table」整形して読む
割り当ての台帳、出席の表「List rows present in a table」「Update a row」読み込みと催促の記録
AI Builder「プロンプトを実行する」型の文面と部門長への報告
Microsoft Teams「アダプティブ カードを投稿して応答を待機する」教育担当の承認
Microsoft Teams「チャットまたはチャネルでメッセージを投稿する」(フロー ボット)本人・職長・部門長への送信

Teams のフロー ボットには、送信の回数の上限があります。 公式の説明では、フロー ボットの操作は接続あたり300秒に25回までとされています。180人に送ると、それだけで30分を超えます。送信のループに待ち時間を入れ、25回ごとに5分空けます。 職長あての一覧は1人1通にまとめるので、技能職の分は回数が増えません。

台帳の更新は「Update a row」で、キー列は社員番号と研修コードを合わせた ID にします。 公式の説明では、キー列に複数の行が当たると最初の1行だけが更新されるとされています。社員番号だけをキーにすると、同じ社員の別の研修の行を上書きします。

メッセージは約28KBまでです。 職長あての一覧に多くの社員を並べると上限に近づくので、1通に載せる社員は30人までに区切ります。

Step9

人が確認する

  1. 教育担当が型の文面を承認する … 毎週、十数通りの型を Teams のカードで見ます。期限、受講の方法、次回の日程がマスタと合っているか、余計な一文が無いかを見ます
  2. 「マスタに無い」「判定できない」行を見る … 研修コードが無い、社員番号が名簿に無い行は、教育担当が台帳を直します
  3. 期限切れの扱いを決める … 期限切れの社員を部門長とどう扱うかは、人事が決めます
  4. 特別教育の記録を確かめる … 安全衛生の特別教育は、出席の記録が実施の記録になります。総務が入力した出席と、紙の出席表が合っているかを月に1度見ます

1番目の承認には、placeholders の確認の結果を一緒に出します。 印の照合で問題があった型は、承認のボタンを出さずに「直してください」と表示します。

4番目は、法令で記録が求められる教育だからです。 労働安全衛生規則の第38条は、特別教育を行ったときに受講者、科目等の記録を作成して3年間保存することを事業者に求めています。この構成の出席の表を、その記録として使うかどうかは安全衛生の担当と決めてください。

Step10

例外に対処する

起きること対応
受講管理システムの書き出しが先週のまま止まって教育担当に知らせる。古いファイルで催促しない
書き出しの見出しが変わり、整形できないRun script の失敗を教育担当に知らせ、催促を出さない
社員番号が名簿に無い「判定できない」として教育担当に回す。退職・異動の反映漏れを疑う
研修コードがマスタに無い「マスタに無い」として教育担当に回す
差し込みの印が照合できないその型だけ送らずに教育担当に回す
教育担当が承認しないまま次の週が来る承認されなかった型の社員には送らず、次の週の型にまとめ直す
職長が退職・異動している組織の表で見つからなければ、部門長に送る
一覧の社員が多くメッセージの上限を超える30人ごとに分けて送る
Teams の送信が上限に当たる25回ごとに5分待つ
AI の応答が JSON にならないその型だけ、教育担当が用意した既定の文面を使う

いちばん多いのは、上から3行目です。 退職や異動の反映が名簿に遅れると、存在しない社員に催促が出るか、新しく来た社員に催促が出ません。 人事の異動の記録と名簿の更新の順番を、最初に確かめてください。

Step11

記録を残す

  • 毎週の受講管理システムの書き出しの原本(ファイル名に日付を付けて残す)
  • 割り当てごとの判定(受講済み/未受講/期限切れ)と、判定に使った記録の行
  • AI が作った型の文面の全文と、教育担当の承認の結果と日時
  • 誰に、どの型で、いつ催促したか(台帳の催促の段階と最後の催促日)
  • 部門長に送った報告の全文と、渡した数字
  • 特別教育の出席の記録(研修、受講者、科目、実施日)

催促の記録を台帳に残すのは、「聞いていない」に答えるためです。 期限切れの社員と面談するとき、いつ、どの文面で、誰を通して伝えたかが分かります。Power Automate の実行の記録は開始から30日で消えるとされているので、実行の記録に頼らず台帳に書きます。

04実装レベルの3段階

最小構成:研修のマスタを手でAIの画面に貼り、型の文面を作らせる / 催促の文面づくり
半自動化:上記+毎週の突き合わせ、型への差し込み、Teams での承認と送信、部門長への報告をフローで行う / 突き合わせから催促・報告まで
本格構成:上記+受講管理システムの API や人事のシステムと連携し、書き出しと名簿の更新を自動にする / 記録の取り込みまで含めた全体

半自動化で、1件5分が1.5分程度になります。 突き合わせと文面づくりが自動になり、残るのは型の承認と、判定できない行の手直しです。この段階が本記事の想定です。 本格構成は、受講管理システムに受講記録を取り出す API がある場合に限ります。 API の有無と使い方は製品ごとに違うため、個別の確認が要ります。 書き出しを週1回保存する手間は小さいので、半自動化で十分な会社が多いはずです。

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

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

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

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

AI活用について相談する

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

向いている
  1. 工場や現場を複数持ち、コンプライアンス・情報セキュリティ・品質のeラーニングと、安全衛生の集合研修を毎月のように割り当てている会社。受講記録が受講管理システムの書き出しと紙やフォームの出席表に分かれ、人事の教育担当が名簿と突き合わせて未受講者に1人ずつ催促している場合。パソコンやメールを持たない現場の社員がいて、上長経由で受講を促している場合。Microsoft 365 と Power Automate、AI Builder のプロンプトを使える場合。
向いていない
  1. 研修が年に数回で、対象者が数十人の場合。受講管理システムが催促と部門別の報告をすでに自動で出している場合。受講記録が社員番号で引けず、氏名だけで管理されている場合。なお、誰にどの研修を受けさせるか、期限を過ぎた社員をどう扱うか、法令で求められる教育をどう実施するかの判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月期限だった研修から、未受講者が多かった2研修を選ぶ
  2. 研修のマスタ(研修名、期限、受講の方法、次回の日程、問い合わせ先)を1枚にまとめる
  3. Microsoft 365 Copilot のチャットか手元のAIサービスに、その1枚を貼り付ける
  4. 「この情報だけを使って、1回目・2回目・期限切れの催促の文面を、本人あてと職長あてで作ってください。期限と日程は書き換えず、期限切れの扱いは書かないでください」と指示する
  5. 出てきた6通を、当時教育担当が書いたメールと並べる

突き合わせは、この段階では手のままです。 試すのは、型の文面を人が確かめて使えるかだけです。

出てきた内容判断
期限と方法がマスタのまま、短く読めるフローの突き合わせに進む
曜日を足した、評価への影響を書いた指示の書き方で直る。構成は有効
当時のメールの方が案内が具体的研修のマスタが足りない。 受講の方法を書き足す

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

問題対策
受講したのに催促が届く社員番号の書き方をそろえる。 全角半角、先頭の0、空白
昨年の受講を今年の受講と取り違える完了日が割り当ての日以降かを見る
256行しか読めない既定は256行まで。ページ分割をオンにする
期限の日付で絞れないフィルター クエリは eq・ne・contains・startswith・endswith だけ。フローの中で絞る
日本語の列名でフィルターが効かないフィルター クエリの列名は英数字だけ。台帳の列名を英数字にする
台帳の別の研修の行が上書きされるキー列に複数行が当たると最初の1行だけが更新される。社員番号と研修コードを合わせた ID をキーにする
書き出しがテーブルになっていないRun script で整形する
9時間ずれて動くRecurrence のタイム ゾーンを日本時間にする
180人への送信が途中で止まるフロー ボットは300秒に25回まで。待ち時間を入れる
曜日や処分の一文が書き足される指示で禁じ、型の承認で見る
差し込みの印が残ったまま届くplaceholders と本文の印を照合してから送る
現場の社員に届かない届け先を「職長」にし、一覧で職長に送る

上の2行が、この構成の失敗のほとんどです。 どちらも、受講した社員に催促が届くという形で表に出ます。1通でも出ると、催促そのものが読まれなくなります。

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

この構成で扱うデータ: 社員番号、氏名、部門、研修ごとの受講の有無と期限、テストの合否、職長と部門長の名前です。

  1. AI に社員の個人の情報を渡さない … 型の文面を作るのに、氏名や社員番号は要りません。AI に渡すのは研修と段階と届け先だけで、名前はフローが後から差し込みます
  2. AI のモデルがどこで処理されるかを確かめる … Microsoft の公開ページでは、日本で使えるプロンプトのモデルに「GA(クロスジオ)」が付き、リージョン外でデータを処理する可能性があるとされています。部門長への報告に渡す部門ごとの数字が、自社の決まりで外へ出してよいものかを確かめます
  3. テストの合否を広く見せない … 職長あての一覧には未受講かどうかだけを載せ、点数や不合格の回数を載せません
  4. 期限切れの扱いを催促に書かない … 評価や処分との結びつきは人事の方針で、自動で送る文面に入れません
  5. 法令で求められる教育の記録を、催促の仕組みとは別に守る … 特別教育の記録は3年間の保存が求められています。台帳の行を消す運用にしないでください

誤りが起きた場合のリスクは、受講した社員に催促が届くことと、受けるべき社員に催促が届かないことの2つです。 前者は社員番号の整え方で、後者は名簿の更新と判定できない行の手直しで防ぎます。

10まず何から始めるか

1週目:記録の形をそろえる

受講管理システムの書き出しと出席の表で、社員番号の書き方を見比べます。全角半角、先頭の0、空白の有無を一覧にし、そろえる規則を決めます。 割り当ての台帳に、届け先、職長の社員番号、催促の段階の列を足します。

2週目:型の文面を試す

先月の2研修で、手元のAIサービスに型の文面を作らせます。期限と日程を書き換えていないか、期限切れの扱いを書いていないかを最優先で見ます。

3週目:突き合わせをつなぐ

Power Automate で、毎週の読み込み、社員番号の整え、受講済み/未受講/期限切れの判定までを作ります。この時点では催促を送らず、判定の一覧を教育担当が先週の手作業の結果と比べます。

4週目:催促を送る

型の文面、Teams での承認、本人と職長への送信を足します。最初の2週は、教育担当が送信先の一覧も目で見てから承認します。

2か月目: 部門長への報告を足し、判定できない行の件数を毎週数えます。3か月目以降: 1件5分が何分になったかを測り、受講した社員への誤った催促が出なくなり、期限切れの件数が月ごとに減っていくことを確かめられた時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-14/最終更新:2026-10-15
確認した内容情報源確認日
List rows present in a table が既定で256行までを返し、すべてにはページ分割が要ること。フィルター関数が eq・ne・contains・startswith・endswith だけで、1列に1つ、並べ替えは1列だけであること。フィルター クエリ等の列名が英数字だけであること。キー列に複数行が当たると最初の1行だけが更新されること。対応形式が .xlsx と .xlsb、最大25MBであること。Run script が10秒に3回、1日に1,600回までであることMicrosoft Learn: Excel Online (Business) コネクタ2026-10-14
フロー ボットの操作が接続あたり300秒に25回までであること。メッセージの上限が約28KBであること。アダプティブ カードを投稿して応答を待つ操作Microsoft Learn: Microsoft Teams コネクタ2026-10-14
Recurrence で間隔と頻度、開始時刻とタイム ゾーン、週ごとの曜日と時刻を指定できることMicrosoft Learn: スケジュールでクラウド フローを実行する2026-10-14
実行の保持期間が30日であること。Apply to each の件数と並列の上限Microsoft Learn: Power Automate の制限と構成2026-10-14
「プロンプトを実行する」アクションの名前の変更、前のアクションの値を入力に渡せること、使用制限や容量の調整の対象になりうることMicrosoft Learn: Power Automate でプロンプトを使用する2026-10-14
JSON 出力の形式が保存時にロックされること。キーの無い JSON は使えないこと。「回答に JSON マークダウンを含めないでください」を足す対処Microsoft Learn: JSON 出力2026-10-14
日本で使えるプロンプトのモデルに GA(クロスジオ)が付き、リージョン外でデータを処理する可能性があることMicrosoft Learn: リージョン別のプロンプトのモデル可用性2026-10-14
雇い入れ時と作業内容の変更時の教育(第35条)、特別教育を要する業務(第36条)、特別教育の受講者・科目等の記録を作成して3年間保存すること(第38条)e-Gov 法令API: 労働安全衛生規則2026-10-14

どの研修を誰に割り当てるか、法令で求められる教育をどう実施・記録するかは、自社の安全衛生と人事の担当で決めてください。 本記事は公開されている仕様と法令で確認できた範囲だけを扱っています。

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

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

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

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