Media > AI活用ユースケース > 営業 > 人材派遣会社の営業が派遣先を訪問した記録から、増員・職種の追加・条件の見直しの提案の候補と、お礼とフォローのメールの下書きを作る

人材派遣会社の営業が派遣先を訪問した記録から、増員・職種の追加・条件の見直しの提案の候補と、お礼とフォローのメールの下書きを作る

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

営業が派遣先を訪問した後にスマートフォンで書く訪問の記録から、増員・職種の追加・条件の見直しの提案の候補を、派遣先の発言を根拠に付けて出します。あわせて、お礼と次の一歩を伝えるメールの下書きを営業の Gmail に作ります。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Google Apps Script/Make/Power Automate
対象業界
人材/物流/製造
対象部門
営業
対象業務
書類作成/要約
主な課題
営業フォローが追いつかない/属人化している/書類作成に時間がかかる
AIで行う処理
生成
主な効果
属人化解消/工数削減/機会損失防止
導入難易度
★★☆☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
125h/月
AI導入後
50h/月
想定削減
60%
年間削減
900h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 派遣先を訪問し、担当者と話す
  2. 帰りの移動中か事務所に戻ってから、訪問の記録を表計算の一覧に書く
  3. 話の中に提案の種があれば、何を提案するかを考える(考えないこともある)
  4. 派遣の管理のシステムで、その派遣先の契約と稼働の状況を見る
  5. お礼のメールを書く。提案につながる話があれば、次の一歩を書き添える
  6. 提案に進めるものは、上司に相談し、社内の募集の担当に連絡する
導入後(After)
  1. 人訪問の後、営業がスマートフォンのフォームで訪問の記録を書く(派遣先を一覧から選び、話した内容を書くか音声入力する)
  2. 自動フォームの送信をきっかけに、派遣先の契約の一覧と直近の訪問の記録を引く
  3. 自動契約の一覧から期間制限の抵触日までの月数を計算する
  4. 自動Gemini API が、記録から派遣先の発言を拾い、提案の候補を根拠付きで出す
  5. 自動同じ呼び出しで、お礼とフォローのメールの下書きの本文を作る
  6. 人営業が自分の画面(ウェブアプリ)を開き、候補を選んで、メールの本文を直す
  7. 人「下書きを作る」を押すと、営業自身の Gmail に下書きができる
  8. 人営業が Gmail で読み直して送る
  9. 自動選んだ提案の候補が、提案の一覧に営業・派遣先・種類・期日で残る
  10. 人上司が週に1回、提案の一覧を見て、進めるものを決める
各工程の詳しい説明を読む
  1. 派遣先を訪問し、担当者と話す
  2. 帰りの移動中か事務所に戻ってから、訪問の記録を表計算の一覧に書く
  3. 話の中に提案の種があれば、何を提案するかを考える(考えないこともある)
  4. 派遣の管理のシステムで、その派遣先の契約と稼働の状況を見る
  5. お礼のメールを書く。提案につながる話があれば、次の一歩を書き添える
  6. 提案に進めるものは、上司に相談し、社内の募集の担当に連絡する

(a)フォローが追いつかない。 1日に2〜3件訪問すると、記録を書くだけで手一杯になります。3番から5番は、時間があるときだけ行われます。 繁忙期の前ほど訪問が増え、提案の種が多いのに拾われません。

(b)提案につなげるかが営業ごとに違う。 「事務の人も足りない」という言葉を聞いて、職種の追加の提案に動く営業もいれば、記録に書いて終わる営業もいます。同じ派遣先を担当が引き継ぐと、前の担当が聞いた話が提案に生きません。

(c)記録が提案に使われない。 一覧には何年分もの訪問の記録がありますが、読み返されるのは担当が替わったときくらいです。 先月の訪問で聞いた繁忙期の話を、今月の訪問の前に思い出せません。

(d)期間制限が後から分かる。 増員の話を進めた後で、抵触日が近いことに気づくことがあります。提案の前に確かめる手順がありません。

  1. 【人】 訪問の後、営業がスマートフォンのフォームで訪問の記録を書く(派遣先を一覧から選び、話した内容を書くか音声入力する)
  2. 【自動】 フォームの送信をきっかけに、派遣先の契約の一覧と直近の訪問の記録を引く
  3. 【自動】 契約の一覧から期間制限の抵触日までの月数を計算する
  4. 【自動】 Gemini API が、記録から派遣先の発言を拾い、提案の候補を根拠付きで出す
  5. 【自動】 同じ呼び出しで、お礼とフォローのメールの下書きの本文を作る
  6. 【人】 営業が自分の画面(ウェブアプリ)を開き、候補を選んで、メールの本文を直す
  7. 【人】 「下書きを作る」を押すと、営業自身の Gmail に下書きができる
  8. 【人】 営業が Gmail で読み直して送る
  9. 【自動】 選んだ提案の候補が、提案の一覧に営業・派遣先・種類・期日で残る
  10. 【人】 上司が週に1回、提案の一覧を見て、進めるものを決める

6番目が、この設計の分かれ目です。 AIが出すのは候補で、どれを提案するかは営業が選びます。派遣先との関係を知っているのは営業です。 「増員の話は出たが、今月は予算が厳しいと言っていた」といった空気は、記録に書かれていないことがあります。

8番目を人が行うのも意図してのことです。 メールは営業自身の Gmail の下書きにでき、送るのは営業です。 自動で送ると、派遣先の担当者に誤った約束が届くおそれがあります。

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

構成図
営業のスマートフォン ── 訪問の記録のフォーム(派遣先・面談者・話した内容)
   ▼【トリガー】Google フォームの送信
Google Apps Script
   ├──▶ 派遣先の契約の一覧を引く(職種・人数・期間・抵触日)
   ├──▶ 直近3回の訪問の記録を引く
   ├──▶ 抵触日までの月数を計算し、印を付ける
   ▼
Gemini API ── 派遣先の発言の抜き出し/提案の候補(根拠付き)/メールの本文
   ▼
提案の候補の一覧(Google スプレッドシート)
   ▼
営業の画面(Apps Script のウェブアプリ。アクセスしたユーザーとして実行)
   │  候補を選び、本文を直す
   ▼
GmailApp.createDraft ── 営業自身の Gmail に下書き
   ▼
【営業が読み直して送る】
役割想定する製品代替候補
処理Gemini API(発言の抜き出し、提案の候補、メールの本文)Claude API、OpenAI API
連携Google フォーム(訪問の記録の受け取り)Microsoft Forms、営業支援の仕組みの入力画面
連携Google Apps Script(呼び出し、抵触日の計算、ウェブアプリ、下書きの作成)Make、Power Automate
連携Google スプレッドシート(契約の一覧、訪問の記録、提案の候補と提案の一覧)Microsoft Lists
メールGmail(営業自身の下書き)Microsoft Outlook

派遣の管理のシステムには書き込みません。 契約の一覧は、毎朝の書き出しをスプレッドシートに取り込んで使います。提案が決まって契約を変えるときは、今までどおり担当者がシステムで手続きします。

判定の土台は Gemini API の文章の生成です。 送信先は /v1beta/interactions で、system_instruction で役割と禁止事項を伝えます。出力は構造化出力で、提案の候補とメールの本文を1つのJSONで受け取ります。

メールの下書きは、Apps Script の GmailApp.createDraft で作ります。 宛先、件名、本文と、cc などの任意の項目を渡すと、下書きができます。ここで大事なのは、誰の Gmail に下書きができるかです。 フォームの送信のトリガーは作った人のアカウントで動くので、そこで下書きを作ると共用のアカウントに下書きがたまります。

そこで、下書きは営業が開くウェブアプリから作ります。 ウェブアプリは doGet で画面を返し、実行のユーザーを「アクセスしたユーザー」にすると、開いた営業のアカウントで動きます。 営業がボタンを押すと、その営業の Gmail に下書きができます。

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

Step1

処理の起点を決める

トリガーは2つあります。 1つはフォームの送信で、訪問の記録を受け取り、Gemini API を呼んで提案の候補とメールの本文を一覧に書きます。ここまでは共用のアカウントで動きます。 もう1つは営業の操作で、ウェブアプリの「下書きを作る」のボタンが押されたときに、営業のアカウントで下書きを作ります。

フォームの送信のトリガーは、品質を上げるためにすぐ動かします。 訪問の直後なら、営業は派遣先との話をまだ覚えています。候補を見て「その話は違う」と気づけるうちに確認してもらうために、まとめて夜に処理することはしません。

トリガーを作るのは、営業部の共用のアカウントです。 インストール型のトリガーは作った人のアカウントで動くので、個人のアカウントで作ると、その人が異動したときに止まります。

Step2

入力データを集める

データ中身取得元
訪問の記録派遣先、面談者の役職、訪問日、話した内容(自由記述か音声入力)訪問の記録のフォーム
契約の一覧派遣先の事業所・課ごとの職種、人数、契約の期間、事業所単位と個人単位の抵触日派遣の管理のシステムの書き出し
直近の訪問の記録同じ派遣先の直近3回分の話した内容と、選ばれた提案訪問の記録の一覧
提案のメニュー自社が出せる職種、すぐに出せる人数の目安、紹介予定派遣の有無営業部で用意する一覧
メールの書き方自社の署名、敬語の決まり、使わない言い回し営業部で用意する一覧

質を決めるのは、訪問の記録の「話した内容」です。 「特に問題なし」だけの記録からは、何も出てきません。フォームの説明に「派遣先が言ったことを、できるだけ言葉のまま書く」と書いておきます。 音声入力でそのまま話してもらうのも有効です。

直近の訪問の記録を渡すのは、続きの話を拾うためです。 先月「来月から繁忙期」と聞き、今月「やはり忙しくなってきた」と聞けば、増員の提案の根拠は2回分になります。 1回分の記録だけでは、この流れは見えません。

スタッフの名前は渡しません。 訪問の記録には、スタッフの働きぶりについての派遣先の言葉が入ることがあります。フォームではスタッフをスタッフ番号で書いてもらい、名前は記録に入れません。

Step3

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

取るものどこから何に使うか
訪問の記録フォームの回答提案の候補とメールの材料
契約の一覧派遣先のコードで契約の一覧を引く職種と人数の現状、抵触日
直近の訪問の記録派遣先のコードで訪問の記録の一覧を引く(新しい順に3件)続きの話を拾う
抵触日までの月数スクリプトで計算期間制限の印
面談者のメールアドレス派遣先の担当者の一覧下書きの宛先

抵触日までの月数は、AIに計算させずにスクリプトで出します。 日付の計算をAIに任せると、月の数え方を間違えることがあります。計算した結果を「12か月以内」「6か月以内」のような印にして、指示に差し込みます。

印条件指示での扱い
period_check_required事業所単位か個人単位の抵触日が6か月以内増員の候補を出す場合は「期間制限の確認が要る」と書かせる
period_watch抵触日が12か月以内候補にその旨の注記を付けさせる
なしそれ以外注記なし

この印は、期間制限に当たるかの判断ではありません。 期間制限には、無期雇用の派遣スタッフなど適用されない場合があり、延長には派遣先の過半数労働組合などからの意見を聴く手続きがあります。どれに当たるかは、派遣元の責任者が確かめます。 印は「確かめるべき派遣先」を見落とさないためのものです。

Step4

AIへ渡す前に整形する

  1. 派遣先の照合 … フォームで選ばれた派遣先のコードが契約の一覧にあるかを確かめます
  2. 記録の長さの確認 … 話した内容が30字に満たない記録は、「記録が短い」として候補を作らず、メールの本文だけを作ります
  3. 個人の情報の確認 … 話した内容に、スタッフ番号ではない人名らしい語が入っていれば、営業に確認を返します
  4. 直近の記録の整理 … 直近3回の記録を、日付と選ばれた提案を付けて並べます
  5. 抵触日の印 … 契約の一覧から印を付けます

2番目で候補を作らないのは、根拠の無い提案を防ぐためです。 短い記録から候補を作らせると、AIは派遣先の業種から一般論で候補を考えます。 それは営業がすでに知っていることで、根拠の無い候補は営業の信頼を失わせます。

Step5

AIに処理させる

させるのは3つです。 派遣先の発言の抜き出し、提案の候補、メールの本文です。

作るもの中身判断できないときの扱い
発言の抜き出し記録の中の、派遣先の困りごと・見通し・要望を言葉のまま記録に無ければ空
提案の候補種類(増員/職種の追加/条件の見直し/その他)、中身、根拠にした発言、確かめる質問根拠が無ければ候補にしない
メールの本文お礼、話した内容の要点、次の一歩、署名提案は候補を選んだ後に差し込む

提案の候補は、根拠にした発言と1対1で結びます。 「繁忙期で人が足りない(今月の記録)」「来月から物量が増える(先月の記録)」から「増員」。根拠が記録の言葉として示せない候補は出させません。 確かめる質問は、次の訪問か電話で聞くことです(「何名くらい、いつからを考えていらっしゃいますか」)。

物流の派遣先の例で、発言と候補の結び方を示します。

発言(記録の言葉)どの記録から候補確かめる質問
①「11月から通販の物量が増える」前回増員(ピッキング)何名くらい、いつからを考えていらっしゃいますか
②「夕方の出荷に人が足りない」今回増員(夕方の時間帯)何時から何時の時間帯でしょうか
③「事務所の入力が追いつかない」今回職種の追加(一般事務)入力の中身と、週に何日くらいでしょうか
④「交通の便が悪くて応募が来ない、と他社に言われた」今回条件の見直し(送迎・時間帯)送迎の手配のご予定はありますか

①と②は同じ増員でも、時間帯が違う別の候補です。 1つにまとめさせると、営業が派遣先に確かめる中身がぼやけます。④の「条件の見直し」も、数字は書かせず種類だけにします。

条件の見直しの候補には、数字を入れさせません。 「時給の見直し」「勤務の時間帯の調整」のように種類だけを書かせ、単価や時給の数字は営業が決めます。 数字が下書きに入ると、そのまま派遣先に届くおそれがあります。

させないこと理由
記録に無い提案の候補一般論は営業の役に立たない
単価・時給・人数の約束社内の確認が要る。下書きから派遣先に届くと取り消せない
期間制限に当たるかの判断適用されない場合や延長の手続きがあり、責任者が確かめる
スタッフの評価をメールに書く派遣先の言葉でも、スタッフの個人の情報になる
抵触日の計算スクリプトで行う
Step6

指示内容を固定する

あなたは人材派遣会社の営業の補助として、派遣先の訪問の記録から、
次の提案の候補と、お礼とフォローのメールの本文を作る立場です。

【訪問の記録】{visit_note}
【直近の訪問の記録(新しい順)】{recent_notes}
【この派遣先の契約の現状】{contracts}
【期間制限の印】{period_flag}
【自社の提案のメニュー】{menu}
【メールの書き方】{mail_style}

【作るもの】
1. statements:記録の中の、派遣先の困りごと・見通し・要望を、言葉のまま抜き出してください。
   どの記録(今回/前回/前々回)からかを付けてください。
2. proposals:提案の候補。種類は increase(増員)/new_role(職種の追加)/
   terms(条件の見直し)/other のどれか。
   - 各候補に、根拠にした statements の番号を必ず付けてください。
   - 根拠が無い候補は出さないでください。候補が無ければ空の配列にしてください。
   - 各候補に、次に派遣先へ確かめる質問を1〜2個付けてください。
3. mail_body:お礼のメールの本文。話した内容の要点を2〜3行で書き、
   最後に「{proposal_slot}」とだけ書いてください(提案は営業が選んだ後に差し込みます)。

【厳守事項】
- 単価、時給、人数、開始日の数字を書かないでください。約束と受け取られる表現も避けてください。
- 期間制限の印が period_check_required のときは、increase の候補に
  「期間制限の確認が要る」と note に書いてください。期間制限に当たるかどうかは判断しないでください。
- メールの本文に、スタッフの働きぶりや評価を書かないでください。
- 記録に書かれていないことを、話したこととして書かないでください。
- 派遣先の業種から一般的に考えられる提案を、記録の根拠なしに出さないでください。

「根拠が無い候補は出さない」と「候補が無ければ空」を両方書いているのは、AIが何かしら候補を出そうとするからです。 空の配列を許すと明記しないと、一般論の候補で埋めてきます。 候補が無い訪問があるのは当たり前です。

メールの本文に提案の欄を空けておくのは、営業が選ぶ前に提案が本文に入らないようにするためです。 選ばれた候補だけを、営業の画面で差し込みます。

Step7

出力形式を固定する

次の形のJSONで受け取ります。 構造化出力では、response_format に mime_type: "application/json" と JSON Schema を渡し、type を enum で4つに限ります。公式の案内では、値はアプリケーションの側で必ず検証するようにとされています。

{
  "statements": [ { "no": 1, "text": "", "from": "current | previous | before_previous" } ],
  "proposals": [
    { "type": "increase | new_role | terms | other",
      "summary": "", "basis": [1], "questions": [""], "note": "" }
  ],
  "mail_body": ""
}

スクリプトで確かめること:

確かめること合わないときの扱い
basis の番号が statements にあるその候補を捨てる
statements の text が記録の中に実際にある無ければ、その発言と、それを根拠にした候補を捨てる
period_check_required の派遣先で、increase に note がある無ければスクリプトで注記を足す
mail_body と summary に数字(円、名、時給)が無いあれば営業の画面で赤く示す
mail_body に {proposal_slot} がある無ければ末尾に足す

2行目が、根拠を本物にする検査です。 AIが「派遣先が言った」として書いた言葉が、記録の中に本当にあるかを文字列で確かめます。 言い換えられていて見つからないものは、根拠として扱いません。

Step8

システムへ連携する

つなぎ先方式内容
Google フォームフォームの送信のトリガー訪問の記録を受け取る
契約の一覧・訪問の記録の一覧スプレッドシートの読み取り現状と直近の記録を引く
Gemini APIApps Script から /v1beta/interactions を呼ぶ抜き出し、候補、本文
提案の候補の一覧スプレッドシートへの書き込み候補と本文、検証の結果
営業の画面Apps Script のウェブアプリ候補を選び、本文を直す
GmailGmailApp.createDraft(営業のアカウントで実行)営業自身の下書き
提案の一覧スプレッドシートへの書き込み選ばれた候補を期日付きで残す

営業の画面は、ウェブアプリの1ページです。 左に訪問の記録と発言の抜き出し、右に提案の候補をチェックの欄付きで並べ、下にメールの本文を編集できる欄を置きます。期間制限の印がある派遣先は、画面の上に帯で示します。 画面を開くとき、ウェブアプリはアクセスした営業のメールアドレスで、その営業が担当する派遣先の行だけを表示します。

「下書きを作る」を押したときの処理は、次のとおりです。

選ばれた候補の summary を、本文の {proposal_slot} の位置に差し込む
本文に数字(円・名・時給)が無いかをもう一度確かめる(あれば確認を求める)
宛先 = 派遣先の担当者の一覧のメールアドレス
件名 = 「本日のご訪問のお礼({自社名})」
GmailApp.createDraft(宛先, 件名, 本文, { cc: 上司のアドレス(任意) })
提案の一覧に、選ばれた候補を派遣先・種類・期日(2週間後)で書く

ウェブアプリが営業のアカウントで動くので、下書きは営業本人の Gmail にできます。 初めて使うときに、営業ごとに Gmail の権限の承認が求められます。

Gemini API の呼び出しでは、store を false にします。 Interactions API は既定でやり取りを保存し、有料の枠では55日保持するとされています。この構成は1回で完結する呼び出しで、前のやり取りを引き継ぐ必要がありません。派遣先の言葉をサーバーの側に残さないよう、保存しない設定にします。

Step9

人が確認する

営業は、訪問の当日か翌日に自分の画面を開きます。

  1. 発言の抜き出しを見る … 派遣先の言葉として正しいか、取り違えが無いかを見ます
  2. 提案の候補を選ぶ … 進めるものにチェックを入れ、要らないものは理由を選んで外します(「予算が無い」「すでに話した」「根拠が弱い」など)
  3. メールの本文を直す … 選んだ候補が差し込まれた本文を読み、言い方を整えます
  4. 下書きを作る … ボタンを押すと、自分の Gmail に下書きができます
  5. Gmail で送る … 宛先と本文を確かめて送ります

2番目で外した理由を選ばせるのは、指示を直すためです。 「根拠が弱い」が多ければ、候補を出す基準が甘すぎます。 「すでに話した」が多ければ、直近の記録に選ばれた提案が渡っていないか、営業が記録に書いていません。

1番目で取り違えを見つけたら、記録のほうを直します。 抜き出しが違っているのは、たいてい記録の書き方があいまいなときです。記録を直して再度処理すると、候補もそれに合わせて出し直されます。

上司は週に1回、提案の一覧を見ます。 増員と職種の追加の候補を、派遣先と期日で並べ、期間制限の印が付いたものは派遣元の責任者に回します。

Step10

例外に対処する

起きること対応
派遣先のコードが契約の一覧に無い新規の派遣先か、書き出しの漏れ。候補を作らず、営業に確認を返す
記録が30字未満候補を作らず、メールの本文だけを作る
記録に人名らしい語がある営業に確認を返し、スタッフ番号に直してもらう
派遣先からの苦情・トラブルの話提案の候補を作らず、上司への報告の印を付ける
抵触日の情報が無い契約印を「不明」にし、増員の候補には「抵触日の確認が要る」と書く
面談者のメールアドレスが無い下書きの宛先を空にし、営業が入れる
Gemini API が応答しない一覧に「未処理」で残し、1時間おきのトリガーで再度処理する
検証で候補がすべて捨てられた候補なしとして、メールの本文だけを出す
同じ派遣先を同じ日に2人が訪問した2件の記録を別々に処理し、提案の一覧で重複に印を付ける
派遣先の担当者が替わった記録の面談者と担当者の一覧が違えば、宛先を空にして営業が入れる
営業が3日たっても画面を開かない未確認の候補を上司の週1回の一覧に載せる

4行目は、提案より先に対応が要る場面です。 スタッフの就業のトラブルや苦情の話が記録にあるとき、その訪問のお礼のメールに増員の提案を添えるのは逆効果です。 苦情らしい語があれば、候補を作らずに上司へ回します。

Step11

記録を残す

  • 訪問の記録の原文と、指示の全文、返ってきたJSONの全文
  • 検証で捨てた候補と、その理由
  • 営業が選んだ候補、外した候補と理由
  • 作った下書きの本文(送った本文は Gmail に残る)
  • 提案の一覧(種類、派遣先、期日、進み具合)

営業が外した理由を残すのは、次の訪問の材料になるからです。 「予算が無い」で外した増員の候補は、次の期の初めにもう一度候補になり得ます。

04実装レベルの3段階

最小構成:記録を手で Gemini の画面に貼り、候補とメールの本文を出させる / 1件ごとの下書き
半自動化:上記+フォームの送信で Gemini API を呼び、契約の一覧と直近の記録を足して一覧に書き出す / 候補の一覧化と期間制限の印
本格構成:上記+営業の画面で候補を選び、Gmail の下書きを作り、提案の一覧に残す / 候補、下書き、提案の管理

半自動化で、1件25分が15分程度になります。 候補は出ますが、メールを書く作業と提案の一覧への書き写しが残ります。本格構成で10分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化を1か月回すと、営業が外す候補の傾向が分かります。そこを直してから下書きまで作るほうが、営業に使われる仕組みになります。

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

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

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

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

AI活用について相談する

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

向いている
  1. 物流・製造・事務の派遣を中心に、営業が派遣先を定期的に訪問して就業の状況を確かめている人材派遣会社。訪問の記録は残しているが、そこから次の提案につなげるかどうかが営業ごとに違い、お礼のメールも書いたり書かなかったりしている場合。派遣先ごとの契約の一覧(職種、人数、期間、期間制限の抵触日)を表の形で出せる場合。Google Workspace のメールを使っている場合。
向いていない
  1. 派遣先が数社で、営業が一社ずつの状況を把握しきれている場合。訪問の記録をほとんど残しておらず、提案の材料になる派遣先の言葉が記録に無い場合。単価の交渉そのものを自動にしたい場合(この構成では単価の数字を扱いません)。なお、労働者派遣法の期間制限に関わる判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月の訪問の記録から、話した内容が数行以上あるものを20件選ぶ
  2. そのうち、実際に提案につながったものと、つながらなかったものを分けておく
  3. 業務で契約している Gemini の画面に、記録と契約の現状を貼り、第7章の指示を貼り付ける
  4. 出てきた候補と、実際の提案を並べる

派遣先の社名とスタッフの名前は伏せて貼ってください。

出てきた内容判断
実際に提案した内容が候補に出たフォームとスクリプトの連携に進む
一般論の候補が混ざる指示の「根拠なしに出さない」を強める。構成は有効
記録が短く候補が出ない記録の書き方が先。 フォームの説明を直す
メールに数字が入る指示とスクリプトの検査で防ぐ

3行目が多いなら、AIより先に訪問の記録の書き方を見直してください。 派遣先の言葉が書かれていない記録からは、誰が見ても提案は出てきません。試すときは、提案につながった記録とつながらなかった記録の両方で、候補が出すぎていないかも見てください。

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

問題対策
一般論の候補が出る根拠の発言の番号を必須にし、空の配列を許す
発言を言い換えて根拠にする記録の中に文字列で実際にあるかを検査する
下書きに数字が入る指示で禁じ、スクリプトで検出して赤く示す
共用のアカウントに下書きがたまるウェブアプリを「アクセスしたユーザーとして実行」にする
抵触日をAIが計算して間違えるスクリプトで計算し、印だけを渡す
期間制限の印を判断と受け取る印は確かめる先を示すだけ。判断は派遣元の責任者
苦情の訪問に提案を添える苦情らしい語があれば候補を作らず上司へ
スタッフの評価がメールに入る指示で禁じる。スタッフは番号で記録する
記録が短く何も出ないフォームの説明を直し、音声入力を勧める
トリガーが異動で止まる営業部の共用のアカウントで作る

上の2行が、この構成の失敗のほとんどです。 どちらも、根拠の無い候補が営業の信頼を失わせることにつながります。根拠を記録の文字列で確かめることで、候補が営業にとって使えるものになります。

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

この構成で扱うデータ: 派遣先の社名と担当者の役職、訪問で聞いた派遣先の事情、契約の職種と人数と期間です。スタッフの名前は扱わず、番号で記録します。

  1. 派遣先の事情は営業秘密に近い … 繁忙期、人員の計画、他社の派遣の状況は、派遣先が営業にだけ話したことです。業務で契約している有料の枠のAPIを使い、store を false にしてサーバーの側に残しません
  2. スタッフの評価を外に出さない … 派遣先がスタッフの働きぶりについて話したことは、スタッフの個人の情報です。 記録にはスタッフ番号で書き、メールには書きません
  3. 期間制限の判断を代替しない … 厚生労働省の資料では、派遣先の同じ事業所で継続して受け入れられる期間は原則3年で、超える場合は派遣先の過半数労働組合などから意見を聴く必要があり、同じスタッフを同じ組織単位に派遣できる期間は3年とされています。無期雇用のスタッフなど適用されない場合もあります。この構成の印は確かめる先を示すだけで、判断は派遣元の責任者が行います
  4. メールは営業が送る … 下書きまでにし、単価や人数の約束が誤って届かないようにします
  5. 候補を営業の評価に直結させない … 候補の数は記録の書き方で変わります。候補を何件提案に進めたかで営業を評価しないでください

誤りが起きた場合のリスクは、根拠の無い提案や誤った約束が派遣先に届くことと、期間制限を見落とすことです。 根拠の文字列の検査、数字の検出、抵触日の印、人が送る下書きの4つで防ぎます。

10まず何から始めるか

1週目:記録の書き方を変える

訪問の記録のフォームを作り、「派遣先が言ったことを、できるだけ言葉のまま書く」「スタッフは番号で書く」と説明に入れます。営業2名に1週間使ってもらいます。

2週目:20件で試す

先月の記録20件を、業務で契約している Gemini の画面で試し、実際の提案と並べます。一般論の候補が混ざっていないかを最優先で見ます。

3週目:契約の一覧を整える

派遣の管理のシステムから、事業所・課ごとの職種、人数、期間、事業所単位と個人単位の抵触日を毎朝書き出す形を決めます。

4週目:フォームから候補の一覧までをつなぐ

フォームの送信で Gemini API を呼び、候補とメールの本文を一覧に書き出すところまで作ります。この時点では下書きを作らず、営業が一覧からメールに写します。

2か月目: ウェブアプリと GmailApp.createDraft で下書きを作り、提案の一覧を足します。営業を6名に広げます。3か月目以降: 全12名に広げ、上司の週1回の確認を始めます。営業が外す候補の理由が「根拠が弱い」から「時期が違う」に変わった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-07/最終更新:2026-10-07
確認した内容情報源確認日
文章の生成で /v1beta/interactions を使い、APIキーを x-goog-api-key で渡すこと。system_instruction でモデルのふるまいを設定できること。store=false でサーバーの側の保存をやめられることGemini API: Text generation2026-10-07
構造化出力を response_format に mime_type: "application/json" とスキーマを入れて指定すること。enum が使えること。値はアプリケーションの側で検証するよう案内されていることGemini API: Structured output2026-10-07
Interactions API が2026年6月の時点で一般提供となり新しいプロジェクトに推奨されていること。既定でやり取りを保存し、有料の枠で55日、無料の枠で1日保持すること。store=false で保存しない設定にできることGemini API: Interactions API2026-10-07
ウェブアプリには doGet か doPost が要り、HtmlOutput か TextOutput を返すこと。「アクセスしたユーザーとして実行」ではその人として動くことGoogle Apps Script: Web Apps2026-10-07
GmailApp.createDraft(recipient, subject, body, options) で下書きを作れ、htmlBody、cc、bcc、attachments などを指定できることGoogle Apps Script: Class GmailApp2026-10-07
インストール型トリガーにフォームの送信と時間主導型があり、作った人のアカウントで動くことGoogle Apps Script: Installable triggers2026-10-07
派遣先の同一の事業所で継続して受け入れられる期間は原則3年で、超える場合は過半数労働組合(無い場合は過半数代表者)から意見を聴く必要があること(事業所単位の期間制限、法第40条の2)。同一の派遣労働者を同一の組織単位に派遣できる期間は3年であること(個人単位の期間制限、法第35条の3)。無期雇用の派遣労働者などには適用されないこと(PDFの原文を取得して確認)厚生労働省: 派遣期間制限について(資料)2026-10-07

期間制限に当たるか、延長の手続きが要るかは、派遣元の責任者と派遣先で確かめてください。 本記事は上の公開情報と資料の原文で確認できた範囲だけを扱っています。

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

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

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

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