見出し画像

【生成AI×GAS】メール件名変更GASの解説①

オレンジピーチのトシです。
前回の記事で、GASを用いてメールの件名を変更しながら、スプレッドシートに記載のメールアドレスリストにGmailを作成・送信するスクリプトを作成しました。
今回は、作成したGASのコードを解説していきたいと思います。
(前回の記事はこちらから)


前回のおさらい

前回の記事で作成したGASがこちらです。

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の内容解説

それでは、順にコードの解説を行っていきます。
すでに過去の記事で紹介済みの箇所は省略して、今回の修正点を中心に進めていきます。

アクティブなシートを開く(解説済のため省略)

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

B列2行目から最終行までの範囲を取得する(解説済のため省略)

// 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する

生成AIによる解説

生成AIに解説を指示しました。
該当部分のコードを貼り付けて、解説を指示するだけです。
それだけで、次のような解説を得ることが出来ました。
プログラムの知識のある方は、この解説で十分ではないかと思います。
しかし、GAS初心者の人や、プログラムに触れたことがない人には、難しい内容だと思いますので、より詳しい解説を進めていきます。

生成AIに指示した内容
生成AIからの回答

より詳しいコード解説

一行ずつ、説明を行っていきます。
まず、var today として、変数 today を宣言して、右辺の結果を格納する箱を用意します。
次に、new Date() ですが、新しい日付を定義する関数です。
最も基本的なものが Date() で括弧の内に何も引数を持たない場合です。
new 演算子が付くことで、新しいインスタンスを作って、変数 today に格納するという内容になります。
(インスタンスという単語になじみがなければ、読み飛ばして構いません。少しずつ新しい用語にも触れながら、少しずつ理解を深めるのが、挫折せずに学び得ることに繋がると思います。)

var today = new Date();

ここで、得られた変数 today がどのようなものか、見てみましょう。
この部分だけを取り出してGASを作成し、ログを読んでみます。

新しいGASを立ち上げて、console.logを用いてログの内容を書き出しました

すると、「Sat Jul 20 2024 11:57:43 GMT+0900 (Japan Standard Time)」と、Date()クラスが実行されたタイミングの日時が出力されています。
もう少し、細かく見ていきましょう。

  • Sat:土曜日。Saturday の略。曜日を表す。

  • Jul:7月。July の略。月を表す。

  • 20:日を表す。20日のこと。

  • 2024:年を表す。2024年のこと。

  • 11:57:43:時:分:秒を表す。11時57分43秒のこと。

  • GMT+0900 :GMTとはGreenwich Mean Time(グリニッジ標準時)の略。GMT+0900でグリニッジ標準時にプラス9時間したものということ。

  • Japan Standard Time:日本標準時。グリニッジ標準時に+9hしたものが日本標準時です。

つまり、「日本時間で2024年7月20日(土)11時57分43秒」という意味になります。
(この場合、日時の取得にはGoogleの環境設定で設定されているタイムゾーンが使用されます。もし、(日本にいるにも関わらず)日本標準時が使われない場合は、Google chromeの設定を確認してくて下さい。)

ここまでのまとめ

今回は、new Dateを用いて、現在の日時を取得するところまで解説しました。
日時としては目的のものが取得できていますが、送信するメールに「Sat Jul 20 2024 11:57:43 GMT+0900 (Japan Standard Time)」と表記されては、読み手は理解できません。
次回は、この日時から必要な情報のみを取り出す方法を解説したいと思います。

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

この記事が気に入ったらサポートをしてみませんか?