メールはGASで時短★デジタルの力で大転職時代を乗り切ろう

:::note info
　この記事を読んでいただいた方からレビューを受け、より読みやすくするために以下、修正をしました
 1\. シンタックスハイライトを設定
 2\. 採用担当の目線で話が進んでいるため、転職活動中の方の視点も取り入れることに努めました
 3\. メール本文の内容を追加修正したため、図1の完成メール画面が変更されています　詳しくは「完成後の話」をご参照ください
:::

　こんばんは！小売業で採用担当をしているミハタです
皆さん、採用担当ってどんな仕事をしているかご存知でしょうか？
採用ターゲットによって少し異なりますが、一般的には次の3つのフェーズがイメージしやすいです

　1\. 採用ターゲットに対し「うちで働きませんか？」とアプローチするフェーズ
　2\. 面接や合否通知を実施するフェーズ
　3\. 内定出し後に自社へ入社したい意欲を高めるフェーズ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/4e30a93f-ea49-13e5-3553-65cc53a938c4.png)

 　現在は大転職時代と言われるくらいに転職活動が盛んです。転職活動の手法はさまざまありますが、エントリー前に企業の採用担当とカジュアルな面談を実施してマッチング率を図ることが多いです。採用担当側から見ると上記のフェーズ1に該当します。
　採用担当はカジュアル面談に参加した方の中からフェーズ2の選考に進んでもらえるようにさらなるアプローチをする必要があります。それは「スカウトメールを送信すること」があてはまります。
　採用担当者は、短期間で転職活動中の方にアプローチを行い、面接を迅速に進めつつ、自社のエンゲージメントを高めることに時間を割く必要があります。
　昨年、我が社は合同転職フェアに参加したのですがアプローチに時間がかかり面接に進む方は予想より多くいませんでした。今年も転職フェアに出展することが決定しているため、フェーズ1に手間をかけず昨年のリベンジを果たしたい！
　そこで、今回はGASを使って転職活動中の方へすばやくアプローチするプロトタイプを作成しました。
 
## 概要
　ChatGPTを使ってスカウトメールのプロンプトを成し、Google Apps Script（GAS）を使って自動で一斉送信します。
本メールは、転職イベントで実施したカジュアル面談に参加した方を対象に送信することを検討しています。
作成して最終的に届いたメールがこちらです。

図1　

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/22013a02-7b32-6ed5-c3b5-b8a824439bdf.png)

## 1. はじめに
　転職活動中の方に効果的なスカウトメールを送ることは、採用活動において重要なポイントです。
 今回、BCCやメーリングリストでの送信ではなく、一斉送信にこだわった理由があります。それは、**面談の中で印象に残ったこと**や**強みだと感じたこと**をフィードバックしたいからです。わたしが考えるスカウトメールは、**面談で出会った一人一人へのラブレター**なのです。
 しかし、手作業で多数の候補者にメールを送るのはかなり時間を必要とするため昨年の転職フェア出展後には実施できませんでした。
そこで、ChatGPTを使ってプロンプトを作成し、GASを使ってスカウトメールを自動化します。このプロセスにより、時間を節約しつつ、転職活動中の方に寄り添ったメールを簡単に送信できます。

## 2. ChatGPTでスカウトメールの作成

### ChatGPTに作成を依頼
　まず図2のようにして、具体的な指示を出し、かつメールに入れてほしい内容を箇条書きで記載します
図2
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/39f63628-2bad-8906-2f6e-219f1d3677d9.png)


そうすると、図3のようなスカウトメール案が返ってきます
図3
![メール本文作成②.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/064b10f6-f092-e4ca-3553-a7de89bea747.jpeg)



## 3. ChatGPTでスカウトメールのプロンプト作成

### ChatGPTのプロンプト例
次にChatGPTにスカウトメールのプロンプトを作成してもらいます
まず図4のように、指示を出します
図4
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/756a08c5-b41d-0d61-467e-d9be74362e82.png)

そうすると、Google Sheetsの設定などの前提条件を出した後、プロンプトを作成し、回答をしてくれます
図5
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/71d25c04-658a-7277-fd31-0a4e56432dd6.png)

```javascript
// 複数の宛先に一斉にメールを送信する関数
function sendBulkEmails() {

  // 現在開いているスプレッドシートの中から、シート名「EmailList」を取得
  `json`
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('EmailList');
 
  
  // シートのすべてのデータを取得して、二次元配列「data」に格納
  // 例えば、data[1][0] には2行目のA列のメールアドレス、data[1][1] にはB列の本文が入ります
  var data = sheet.getDataRange().getValues();
  
  // 送信するメールの件名を設定
  var subject = "お知らせ"; // メールの件名をここで設定
  
  // 2行目からデータを処理するループ
  for (var i = 1; i < data.length; i++) { // 1行目はヘッダー行なのでスキップします
    
    // 現在の行のメールアドレスを取得
    var emailAddress = data[i][0];
    
    // 現在の行のメール本文を取得
    var message = data[i][1];
    
    // メールを送信
    MailApp.sendEmail({
      to: emailAddress,    // 宛先のメールアドレスを指定
      subject: subject,    // 件名を指定
      body: message        // メールの本文を指定
    });
    
    // ログに送信した宛先を記録（デバッグや確認のため）
    Logger.log('Email sent to: ' + emailAddress);
  }
}
'
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/2b4255d3-a27e-2d81-809c-5011f20de357.png)

コードの詳細も解説してくれるため、もしエラーになってしまったとしても、どこでエラーになっているのがわかりやすいですね！

## 4. GAS(Google Apps Script)を使ってメールを一斉送信

### GoogleSpreadSheetを設定します
Chat GPTが以下のようにGoogleSpreadSheetを設定するよう教えてくれるので、図6のように入力します
* シート名: EmailList　に変更
* A列: メールアドレス を入力
* B列: 名前 を入力

図6
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/93b2acbd-1b18-e4a8-83d6-0bcc48aa95f3.png)


### ChatGPTのプロンプトをGASに入力
メニューバーにある「拡張機能」をクリックし、Apps Scriptを選択します
あらかじめ用意されているコードを削除して、図7のようにプロンプトを入力し、実行をクリックします
図7
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/d43f0153-c506-08b7-c16e-7d7a8e9221b1.png)


### 警告文が出てきたら
初めてGASを利用する場合、図8のように「このアプリはGoogleでは確認されていません」という文言が出てきますので「安全ではないページ移動」を選択し、許可をすれば警告文がなくなります
図8
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/4c1e7c51-d108-2b99-2f16-f7a332a38adb.png)



### 実行をクリックしてメールを送る
ここまで来たらあとはカンタン！実行をクリックしてログを確認します
図9
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/d11f9577-a7e2-97b0-3b16-79452bd44743.png)

メーリングリストのアドレスに、スカウトメールが届いていれば**完成**です！


## 完成後の話
### 先輩からのフィードバック
　わたしには、同じ採用担当で仕事・プライベート問わず悩みを聞いてくださる先輩がいます。今回のプロトタイプを作成後、先輩から3点フィードバックをもらいました。


 1\. スカウトメールは非常に手間がかかり億劫な気持ちになるためこれまで実施していなかったが、今回作成したプロトタイプはボタン一つで一斉に送信されるためぜひ今後活用したい
 2\. 今後、採用選考にスムーズに誘導できるように、エントリーページのリンクを貼ってほしい
 3\. スカウトメールの文章の改行が少なく見づらい

　やはりほかの方に見てもらってアドバイスをもらうと、自分が気付かなかったところに気づくことができてよりよいものづくりができますね！
2.について、メールの本文最後部分にエントリーページのほか、キャリア採用用の公式LINEを作成したので、友だち登録してもらいたい
3.についても修正して読みやすくしたい
そこで、ChatGPTにで図10のように依頼しました
図10
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/ff9041da-9228-dd5f-af18-fbee52546d81.png)



　先輩からフィードバックをいただいた結果を反映して図11のプロンプトが作成されたためGASに入力して一斉送信し、~~冒頭の完成版となりました★~~
図11

```javascript
// 複数の宛先に一斉にメールを送信する関数
function sendGroupManagerInvitationEmails() {
  
  // 現在開いているスプレッドシートから、シート名「EmailList」を取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('EmailList');
  
  // シート内の全データを取得して、二次元配列「data」に格納
  // data[i][0] にはメールアドレス、data[i][1] には名前が入ります
  var data = sheet.getDataRange().getValues();
  
  // 送信するメールの件名を設定
  var subject = "新たな挑戦のチャンス！グループマネージャー職へのご招待";
  
  // 2行目からデータを処理するループ（1行目はヘッダーなのでスキップ）
  for (var i = 1; i < data.length; i++) {
    
    // 現在の行のメールアドレスを取得
    var emailAddress = data[i][0];
    
    // 現在の行の名前を取得
    var name = data[i][1];
    
    // メールの本文を作成（〇〇様の部分を名前で置き換え）
    var message = name + "様\n\n" + 
                  "こんにちは。ぴょん吉マーケット採用担当アジフライです。\n" +
                  "先日の転職フェアではカジュアル面談にご参加いただき、誠にありがとうございました。" +
                  "改めて、弊社のことをご説明させていただきたいと思いご連絡いたしました。\n" +
                  "弊社は新潟県内に展開するスーパーマーケットで、新たなグループマネージャーを募集しております。" +
                  "今回の募集背景は、店舗拡大による増員で、10～20名のチームを率いていただくポジションです。" +
                  "販売計画の策定や勤務計画の作成、さらには部下の育成を通じて、店舗の成長に貢献していただける方を探しております。\n\n" +
                  "試験に合格することで昇格や昇給のチャンスも豊富で、販売から商品開発、マーケティングなど多様なキャリアパスもご用意しております。" +
                  "お客様に喜んでいただけるやりがいを感じながら、チームと共に大きな成果を目指していただける環境です。\n\n" +
                  name + "様のこれまでの経験を活かし、さらなる成長を遂げませんか？ぜひご検討ください。\n\n" +
                  "よろしくお願い申し上げます。\n\n" +
                  "〈選考フロー〉\n" +
                  "①まずはエントリーページにご登録ください\n" +
                  "https://　……　\n\n" +
                  "②エントリー完了後、公式LINEにご登録ください\n" +
                  "面接日程を調整させていただきます\n" +
                  "https://　……　\n\n" +
                  "③適性検査、面接選考を複数回実施\n\n" +
                  "④内定\n\n" +
                  "ぴょん吉マーケット　　採用担当アジフライ";

    // メールを送信
    MailApp.sendEmail({
      to: emailAddress,    // 宛先のメールアドレス
      subject: subject,    // 件名
      body: message        // メールの本文
    });
    
    // ログに送信した宛先を記録（デバッグや確認のため）
    Logger.log('Email sent to: ' + emailAddress);
  }
}
'
```

### レビュアー様からのフィードバック
 さらに、「**一人一人への思いがこもったメールを送ろうとしているのが伝わりにくい**」とアドバイスをいただいたため、宛先・本文中の名前の他に、面談内容で印象に残ったこと・強みだと思ったことをメール本文に追加しました。
ChatGPTに、図11のように依頼して図12のプロンプトが作成されました。
図11
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/c659ff25-6f6f-967e-7941-c0d1ce8ccd7a.png)

```javascript
 function sendBulkEmails() {
  // 送信するメールの件名（固定）
  const subject = "新たな挑戦のチャンス！マネジメント職へのご招待";
  
  // スプレッドシートからデータを取得する
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues(); // シートの全データを取得
  
  // データの最初の行はヘッダーなので、2行目からループ開始
  for (let i = 1; i < data.length; i++) {
    const row = data[i];
    const email = row[0];          // シートの最初の列がメールアドレスだと仮定
    const name = row[1];           // 2番目の列が名前
    const interviewComment = row[2]; // 3番目の列が面談内容で印象に残ったこと
    const strength = row[3];       // 4番目の列が強み

    // メール本文を作成。名前、面談内容、強みを本文に埋め込む。
    const body = `${name}様\n\n` +
      `こんにちは。ぴょん吉マーケット採用担当アジフライです。\n` +
      `先日の転職フェアではカジュアル面談にご参加いただき、誠にありがとうございました。\n` +
      `${name}様とお話する中で、${interviewComment}というお話を聞き、${strength}ところが強みであるとお見受けしました。\n` +
      `ぜひ弊社でご活躍いただきたく存じます。\n\n` +
      `改めて、弊社のことをご説明させていただきます。\n` +
      `弊社は新潟県内に展開するスーパーマーケットで、新たなグループマネージャーを募集しております。` +
      `今回の募集背景は、店舗拡大による増員で、10～20名のチームを率いていただくポジションです。` +
      `販売計画の策定や勤務計画の作成、さらには部下の育成を通じて、店舗の成長に貢献していただける方を探しております。\n\n` +
      `試験に合格することで昇格や昇給のチャンスも豊富で、販売から商品開発、マーケティングなど多様なキャリアパスもご用意しております。` +
      `お客様に喜んでいただけるやりがいを感じながら、チームと共に大きな成果を目指していただける環境です。\n\n` +
      `${name}様のこれまでの経験を活かし、さらなる成長を遂げませんか？ぜひご検討ください。\n\n` +
      `よろしくお願い申し上げます。\n\n` +
      `〈選考フロー〉\n` +
      `①まずはエントリーページにご登録ください\n` +
      `https:// ……　\n\n `  +
      `②エントリー完了後、公式LINEにご登録ください\n` +
      `面接日程を調整させていただきます\n` +
      `https://　…… \n\n ` +
      `③適性検査、面接選考を複数回実施\n\n` +
      `④内定\n\n` +
      `ぴょん吉マーケット　　採用担当アジフライ`;

    // メールを送信
    MailApp.sendEmail(email, subject, body);
  }
}
```

 スプレッドシートの設定についても心配だったので聞いたところ教えてくれました。

 図12
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/1bc47e8d-23a6-ecb9-963a-2bbb557821b6.png)

スプレッドシートは図13の様に設定しました。依頼文にある△や⊡のとおりに、空白から接続が不自然にならないように注意しました。

図13
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/3efbee59-0b7b-0c81-7036-aff9658998bf.png)


GASにプロンプトを入力し実行すると図1と同様の**完成版ができました★**
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842443/cc7ca6bb-8c8c-7aa9-5812-c0e9a3633bee.png)


### 実用に向けて
　今年も弊社は転職フェアに出展する予定のため、より多くの転職活動中の方と連絡を取ることができると予想されます。一人一人メールを作成するととても時間が足りないため、このプロトタイプを実用して、より素早くアプローチをしていきます！
  また、LINEは多くの人が日常的に利用しているプラットフォームであり、利用者にとって**身近な場所で**コミュニケーションを取れることが大きな強みです。公式LINEと友だちになってもらい、今後は面接日予約を受け付ける機能や気軽に会社のことを知ることができるチャットボット機能を追加していきます。（まだ作っていないリッチメニューもつけたい…！）


## まとめ
　今回はChatGPTを使ってスカウトメールのプロンプトを作成し、Google Apps Scriptで転職活動中の方に自動で一斉送信するプロトタイプを作成しました。
　GASを使って時間をかけない一方で、一人一人への思いがこもったメールを送ることを目指した実装をしています。
これまでメール作成にかけていた時間が短縮され、余った時間で内定者と面談をすることができ、自社へのエンゲージメントをより高めることが可能になりました！
　今回実装できなかった面接設定やチャットボットの機能は、google calenderやLINEを連携させて追加し、実用化していくことを目指します。
 
 次回もお付き合いお願いします　お疲れ様でした♪

参照した記事はこちら↓

https://qiita.com/k_nam/items/9e54ec22b929d4a08e51


https://qiita.com/0yan/items/ba2f25145fc6464fc3d6