見出し画像

【生成AI×GAS】GASで複数宛先にメールを送る

オレンジピーチのトシです。
先の記事で、生成AIを用いて「GASでメールを書く」スクリプトを作成する方法をご紹介しました。
今回は、そのGAS(Google Apps Script)のコードを修正して、スプレッドシートのリストに従って、複数のメールアドレスにメールが送付できるように改良を行いたいと思います。
生成AIを活用して、GASのスクリプトを改良していく方法を知って頂ければHappyです。


今回の完成イメージ:やりたいこと

今回は、過去の記事で作成したメールを、スプレッドシートのリストに従って、複数の宛先にメール送信するGASを作成します。
過去の記事については、こちらからご覧ください。

送付したいメールの内容

送信したい内容は、次の通りです。
 宛先: スプレッドシートのB列に記載のあるメールアドレス
 件名: 月次進捗ファイル(7月度)の更新依頼
 本文: 株式会社オレンジピーチ
     営業部
     青森 太郎 様

     おつかれさまです。
     企画部の橙桃です。
     7月度の月次進捗ファイルの更新をお願いいたします。
     締切は、7月25日となります。それまでに、リンクの
     月次進捗表を更新して下さい。

     営業部 青森太郎 月次進捗ファイル
     URL: ********
     どうぞよろしくお願いします。

スプレッドシートの送付先メールアドレスリスト

過去の記事で説明した通り、今回のGASは「コンテナバインドスクリプト」で作成を始めました。
最終的に、スプレッドシートと連携したかったので、コンテナバインドスクリプトとしたため、そのスプレッドシートに下記のような送付先リストを作成しました。
このリストのB列にあるメールアドレスに、個別にメールを送信できるようにしたいと思います。

スプレッドシートの送信先メールアドレス

振り返り:修正前のGAS(Google Apps Script)

修正前のGASのコードがこちらです。
GASによりメール送信は出来ますが、固定の1つのメールアドレスにしか送信できませんでした。

function sendEmail() {
  var recipient = "******@gmail.com";
  // 宛先メールアドレス。転用の際は、実際のメールアドレスに修正してください。
******
  var body = ""; // 空の本文
   body += "株式会社オレンジピーチ \n";
   body += "\n";
   body += "営業部 青森 太郎 様\n";
   body += "おつかれさまです。\n";
   body += "企画部の橙桃です。\n";
   body += "7月度の月次進捗ファイルの更新をお願いいたします。\n";
   body += "締切は、7月25日となります。それまでに、リンクの月次進捗表を更新して下さい。\n";
   body += "\n";
   body += "営業部 青森 月次進捗ファイル\nURL: ********\n";
   body += "\n"
   body += "どうぞよろしくお願いします。";

    Logger.log(body);

  MailApp.sendEmail({
    to: recipient,
    subject: subject,
    body: body
  });
}

このコードの詳しい内容が知りたい方は、解説記事をご覧ください。

生成AIを使ってGASを修正する
今回は、生成AIとして、Google Gemini を使用しました。

生成AIは、同じ質問をしても、異なる回答が返ってくることが多いので、もしこの記事をご覧になって、同じように質問しても、違う回答となるかもしれません。しかし、簡単なプログラムなので、概ね動くものにはなるかとおもいます。 (生成AIの安全性については、様々な議論が行われているため、会社で使う場合は、自社の利用規定などを確認してから使用してください。  また、個人情報などは入力しないか、生成AIごとの推奨に基づいた形での利用をお薦めします。)



 特に今回は、メール送信というテーマ上、相手先の名称や人名、メールアドレスが含まれる内容となります。

生成AIに指示を出す際には、ダミーの名称やアドレスを使うなどの方法も考慮ください。

生成AIに指示を出す。

元になるGASが少ない行数のものなので、スクリプト全体を貼り付けて、修正の内容を指示しました。
更に、生成AIには、GASのプログラマーという役割(ロール)を与えることで、GASのスクリプトを生成してもらうようにします。
(まれに、pythonのような他のプログラム言語で回答してくる場合があるので、それを避ける意味合いがあります。)

生成AIに指示した内容

生成AIからの返事が届く

すぐに返事が返ってきました。
内容は、後ほど解説しますので、早速GASの作成に進みたいと思います。

Gemini からの返信

GASを修正する

現在のGASに生成AIからコピーしたコードを上書きします。

function sendEmail() {
  // スプレッドシートを開く
  var sheet = SpreadsheetApp.getActiveSheet();

  // B列2行目から最終行までのメールアドレスを取得
  var lastRow = sheet.getLastRow();
  var emailRange = sheet.getRange("B2:" + "B" + lastRow);
  var emailList = emailRange.getValues();

  // 件名と本文を設定
  var subject = "月次進捗ファイル(7月度)の更新依頼";
  var body = "";
  body += "株式会社オレンジピーチ \n";
  body += "\n";
  body += "営業部 青森 太郎 様\n";
  body += "おつかれさまです。\n";
  body += "企画部の橙桃です。\n";
  body += "7月度の月次進捗ファイルの更新をお願いいたします。\n";
  body += "締切は、7月25日となります。それまでに、リンクの月次進捗表を更新して下さい。\n";
  body += "\n";
  body += "営業部 青森 月次進捗ファイル\nURL: ********\n";
  body += "\n"
  body += "どうぞよろしくお願いします。";

  // 各メールアドレスにメールを送信
  for (var i = 0; i < emailList.length; i++) {
    var recipient = emailList[i][0];
    MailApp.sendEmail({
      to: recipient,
      subject: subject,
      body: body
    });
  }
}

貼り付けが終わったら、上部のタブから「実行」をクリックしてGASを動かします。

GASが実行されると、メールが送信される

GASが実行されると、スプレッドシートに記載されているメールアドレスに、個々にメールが届きました。
件名や、本文の内容も、GASで指示した通りの内容になっています。

届いたメール

まとめ

今回は、スプレッドシートにあるメールアドレスのリストに対して、GASで個別にメールを送る方法を紹介しました。
しかし、今回の修正の内容では、メールの宛先は個別に設定できましたが、メール本文の氏名などの内容などは、同じ内容が全員に送られています。
今後、この本文の内容も、スプレッドシートに記載の内容に沿って送信できるように修正していきたいと考えています。
まずは、次回、今回作成したGASの内容を解説したいと思います。

今回は以上です。最後まで読んで頂き、ありがとうございました。
記事の内容が参考になった方は、「スキ」して頂けると励みになります。

いいなと思ったら応援しよう!

オレンジピーチ★トシ
この記事が少しでもお役に立てたのなら、サポートいただけると嬉しいです。頂いたご支援は、今後の活動費やコンテンツの質向上に使わせていただきます。