メインコンテンツへスキップ
見出し画像

【生成AI×GAS】GASでメール件名を変更する

    オレンジピーチのトシです。
    前回までの記事で、複数宛先にメールを送るGASを作成しました。
    今回は、そのGAS(Google Apps Script)のコードを更に修正して、メール件名にある「〇月度」の表記を自動的に変更するように改良を行いたいと思います。
    生成AIを活用して、GASのスクリプトを改良していく方法を知って頂ければHappyです。

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

    今回は、過去の記事で紹介した、「GASで複数宛先にメールを送る」スクリプトを修正して、送付日時に適した内容に変更していきます。
    過去の記事については、こちらからご覧ください。

    送付したいメールの内容

    送信したい内容は、次の通りです。
    今回、ご紹介したいポイントは、件名の箇所です。

     宛先: スプレッドシートのB列に記載のあるメールアドレス
     件名: 月次進捗ファイル(7月度)の更新依頼
     本文: 株式会社オレンジピーチ
         〔以下、省略〕

    送付したいメール内容

    修正したい内容を明確にする

    件名には「月次進捗ファイル(7月度)の更新依頼」とあります。
    この内で、「7月度」の記載を、メールに送る月に応じて、値を変更できるようにしたいと思います。
    今回のメールは、その月に入ってしばらくしてから、各担当者に月次進捗表の更新を依頼するメールを想定しています。
    そのため、件名で何月を表すかは、「GASが実行された日付」から月の値を取得するようにしたいと思います。
    (つまり、7月にGASが実行されたら「7月度」、8月に実行されたら「8月度」とメール件名に記載される)
    修正をゴールイメージが定まったので、実際にコードを修正していきます。

    生成AIを使ってGASを修正する

    今回は、生成AIとして、Google Gemini を使用しました。

    生成AIは、同じ質問をしても、異なる回答が返ってくることが多いので、もし、この記事をご覧になって同じように質問しても、違う回答となるかもしれません。しかし、簡単なプログラムなので、概ね動くものにはなるかとおもいます。
    また、生成AIの安全性については、様々な議論が行われているため、会社等で使う場合は、自社の利用規定などを確認してから使用してください。 加えて、個人情報などは入力しないか、生成AIごとの推奨に基づいた形での利用をお薦めします。特に今回は、メール送信というテーマ上、相手先の名称や人名、メールアドレスが含まれる内容となります。
    生成AIに指示を出す際には、ダミーの名称やアドレスを使うなどの方法も考慮ください。

    生成AIに指示を出す。

    元になるGASが少ない行数のものなので、スクリプト全体を貼り付けて、修正の内容を指示しました。
    実質的な指示内容は1行分ぐらいです。
    あまりにも指示が少ないので、指示を出すプロンプトに「修正内容に質問があれば、行ってください。」との一文を加えました。
    これによって、もし指示の内容に不足があれば、AIが判断して足りない部分を問い返してくれます。
    (結果的には、今回は不要なプロンプトでしたが、覚えておくと便利なTipsです。)

    画像
    生成AIに指示した内容

    生成AIからの返事が届く

    すぐに返事が返ってきました。
    修正した内容も、分かりやすくまとめてくれています。
    内容は、後ほど解説しますので、早速GASの作成に進みたいと思います。

    画像
    画像

    GAS(Google Apps Script)を修正する

    現在の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 today = new Date();
      var year = today.getFullYear();
      var month = today.getMonth() + 1; // 月は0始まりなので、+1する
    
      // 件名と本文を設定
      var subject = `月次進捗ファイル(${year}年${month}月度)の更新依頼`;
      var body = "";
      body += "株式会社オレンジピーチ \n";
      body += "\n";
      body += "営業部 青森 太郎 様\n";
      body += "おつかれさまです。\n";
      body += "企画部の橙桃です。\n";
      body += `${year}年${month}月度の月次進捗ファイルの更新をお願いいたします。\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が実行されると、スプレッドシートに記載されているメールアドレスに、個々にメールが届きました。

    画像
    届いたメール

    届いたメールを確認する

    届いたメールを確認すると、次の3点が変更されているようです。

    • 件名中の「2024年7月度」
      元は「7月度」と"月"だけの表記でしたが、"年月"の表記に変わっています。これは年月の方が後で見返す際に便利なので、このままにします。
      (もちろん、"〇月度"の表記だけに修正することも出来ます)

    • 本文中の「2024年7月度」
      この点は、指示文には入れていない内容ですが、生成AIが本文中にも同じ表現があることを理解して、修正を加えたようです。
      修正後の方が良いので、このままにします。
      (この部分は次の記事で修正しようと思っていたのですが、生成AIの理解力が勝りました。)

    • 本文中の締め切り日にアスタリスク 「**7月25日**」
      この点も、指示文には入れていない内容です。
      締め切り日である"7月25日"の表記の前後に、「*(アスタリスク)」が2つずつ入っていました。
      おそらく、この部分はGASのコードの中で文字列で表現された内容のままであることが示したかったのではないかと思います。
      (他2か所の表記は、作動した日時に応じて動的に変化するが、この表記は7月のままであると。)
      この点は、後ほど、別記事で修正していきますので、今回はこのままにします。

    このように、生成AIを用いてGASを修正すると、指示した場所以外も変化している可能性があります。出来上がったGASは注意して確認を進めるようにしましょう。

    まとめ

    今回は、メール件名を「発信する月」に合わせて変更する方法を紹介しました。
    生成AIを用いてることで、簡単な指示文(プロンプト)を書くだけで、GASの修正が出来ることがご理解いただけたと思います。
    次回は、今回作成したGASの内容を解説したいとと思います。

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

    画像



     
     
     
    オレンジピーチのトシです。 普段は、製造業のDXやモノづくり支援を行っています。 小さな組織でも、たゆまぬ努力と、大きな好奇心があれば、 世界を魅了する新たな価値を生み出せます! アラフィフのおっちゃんですが、少しでも人の役に立つ発信をしていきたいです。

    あなたへのおすすめ