見出し画像

【生成AI×GAS】GASでメールを書く→差し込みメールGAS作り まとめ

オレンジピーチのトシです。
「生成AI×GAS」をテーマにして、GAS初心者の人に業務効率化がイメージ出来るような記事を書きたいと思って、noteを綴ってきました。
 このシリーズでは、スプレッドシートにあるメールアドレスリストや送信日付に応じて、氏名や件名、本文に自動的に必要情報を差し込んだメールを送信することを目的にしてきました。
必要情報を盛り込んだGmailが配信できるGASが完成したところで、一区切りとしたいと思います。
 最後に、実施した内容を、簡単に振り返りたいと思います。


振り返り

最終的なGASのコードは、こちらの記事をご覧ください。
その中で、次のようなことが出来るようになりました。

配信するメール

 今回、最終的に配信を行ったメールの内容です。
短いメールではありますが、何人もの人に、似たようなメールを手作業で送付するのは時間や手間がかかりますし、何より生産性が高い業務ではありません。
 しかし、メールを受ける側に取っては、締め切り日時などの情報が得られるのは有難く、このような仕事を削減することが出来ないのが、会社の実状になっている人も多いのではないでしょうか?

GASで作成したメール

送信先メールアドレス等をまとめたスプレッドシート

また、元になる情報を記載しているのが、スプレッドシートです。

メールアドレス等をまとめたスプレッドシート

差し込んだ情報

今回、メール毎に差し込んだ情報です。定型文の中に変更しなければならない箇所が分散しており、手作業で行う場合も、ミスが起こりやすい内容です。

  • メールアドレス(宛先):スプレッドシートB列より

  • タイトル中の年月(件名):GASが実行された年月日より

  • 部署名(本文):スプレッドシートC列より

  • 氏名(本文):スプレッドシートA列より

  • 年月(本文):GASが実行された年月日より

  • 締切日(本文):当月の月末から土日・祝日を除く5営業日を遡る

  • 月次ファイルフォルダ:スプレッドシートD列より

GASの骨格を作り、修正しながら肉付けする

今回のGASの作り方のポイントです。
 私がお薦めするGASの作り方は、最初に基本的な動きだけを実行する骨格部分を作り、その後に、目的とする複雑な動きが実施できるように、何段階も修正を加えながらGASを肉付けする方法です。
 もちろん、この方法でなければならないといった類のものではないため、最初から完成度の高いGASを生成しても間違いではありません。
 しかし、生成AIの力を使っても、GAS初心者にとっては、いきなり複雑なGASを作成することはハードルが高いです。
 急がば回れの精神で、段階を分けて機能を追加していく方法で、今回のGASを作成しました。

最終版に至る段階を、振り返ってみましょう。

◆固定宛先、固定文のメールを送る。

 まずは、「メールのを送る」という機能に絞りました。
 そのため、宛先も内容もすべて固定(1種類だけ)で、一見すると使い道がないGASでした。
それでも、「メールを送る」という操作をGASを使って実施できるようになりました。

◆複数宛先にメールを送る

 次に実施したのは、「複数宛先にメールを送る」いとう機能の獲得です。
スプレッドシートの中で、宛先を示すB列に限定して、スプレッドシートを参照しながら別々のメールアドレスに送信できるように改良を行いました。
 ここで使用したのがfor文です。
for文を利用することで、繰り返し操作のプログラムを容易に書くことが出来るようになりました。
また、この際の、getLastRow( )メソッドを使用したのも、ポイントの一つです。最終行を取得するメソッドを用いることで、今後、宛先が10件、20件と増えていった場合にも、同じGASで対応することが出来ます。

◆メール件名を変更する

 次に実施したのが、「メール件名の変更」です。
ここでは、メール件名にある「〇月度」の表記を自動的に変更するように改良しました。
 Dateオブジェクトを用いて、タイムスタンプから必要な情報を取り出し、「(${year}年${month}月度)」のテンプレート文字列を使うことで、文字列の中に変数を組み込むことが出来るようになりました。

◆部署名・氏名をメールに差し込む

 次の改善内容は、「部署名・氏名をメールに差し込む」です。
内容は、その前に実施した「複数宛先にメールを送る」「メール件名を変更する」の応用です。
スプレッドシートから取得したデータとfor文で、1メールごとに内容を合わせて、テンプレート文字列を用いて、本文中に差し込むことが出来ました。

◆営業日を逆算して締切期日設定を行う

 次の改善内容は、「営業日を逆算して締切期日設定」でした。
ここでは、別の関数を呼び出したり、Googleカレンダーの休日情報を取得したり、新たな要素が多い修正でした。
このような場合でも、「締切期日」の設定だけを目的にするため、GASが急に複雑になっても、その内容理解は順を追って出来るものでした。
(いくつもの改善を同時に行うと、エラーや想定外の動きの原因になる場合がある。)

◆GoogleDriveフォルダのリンクを挿入する

 最後の改善は、月次進捗ファイルが格納される「GoogleDroveフォルダのリンクをメールに挿入」することでした。
 こちらも、内容としては、スプレッドシートの情報に応じたfor文の利用や、テンプレート文字列を利用しての文字列の修正など、これまでの改善方法の応用で対応が可能でした。

(【生成AI×GAS】GmailにGoogleDriveフォルダのリンクを挿入)

◆小さな改善を積み上げることで、目的のプログラムに近づく

 これまで説明したように、最初は固定文を1つの宛先に送付するだけのGASが、修正を繰り返すことによって、メールアドレスリストやGAS動作日時に応じてメール件名、メール本文の内容を適切に変更して、メールを送信するGASを作り上げることが出来ました。

生成AIの能力を効果的に引き出して利用する

このように、小さな改善を積み重ねて、目的のGASを作成する方法は、他にもメリットがあります。
「関数の関数とは。関数を呼び出す。」の中でも紹介しましたが、段階的に改善を行う方法は、生成AI(特に無料で使える範囲の生成AI)とも相性が良いと思います。

まとめ

 これまでの記事を読んで頂いた人は、すでにお気付きと思いますが、このシリーズの記事では、すべてのコードを生成AIに書いてもらっています。
人が直接的にコードを入力するという行為は行っていません。
もちろん、コードを全く書かないということが、GAS作成の近道とは限りませんが、GAS初心者の時期は、頭に入っているクラスやメソッドも限られています。
 生成AIを上手に利用して、「〇〇が出来るGASを作成して!」と問いかけてみて下さい。出てきたコードをみて、「そんな方法があるのか!」と理解を深めるのも、GASスキルの向上につながると思います。
 この記事を読んで頂いた人の中でイメージが膨らみ、小さなパーツを組み合わせることで、より大きな業務改善につながる糸口がつかめればHappyです!

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



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