GASで自動メール送信機能を作成したことについて
1. 初めに
株式会社シャフトに所属する、入社2年目のYTです。今回は先輩社員のYさんからのお声がけで、GASで自動メール送信機能を作成しました。初めにGASについて軽く説明します。
2. GASとは何か
GASとは以下のようなものです。
GAS=Google Apps Scriptの略で、Google Apps Script(以下GASと呼称します)は、Google Workspaceと統合したビジネスアプリケーションを迅速かつ簡単に作成できるアプリケーション開発プラットフォームです。エディタなども実装されており、GoogleアカウントさえあればGoogle Workspaceアプリケーションを利用したアプリを作成できます。
GASはJavaScriptベースになっています。なので、JavaScriptについて知っている方は、すぐに慣れることができると思います。
3. プロジェクトの背景と目的
先輩社員のYさんから、特定の時間に、スプレッドシート上の特定の列を参照して、規定値が存在する場合、通知する機能を作成しないかと声をかけてくだり、お話を伺いました。伺った内容は以下の通りでした。
通知はメールもしくはSlackで受け取りたい。
通知は業務日のみ送信されるようにしてほしい。
4. 自動通知機能の概要
3の内容から、以下のように実装を行いました。
通知はメールで行う
Slackでも出来るようなのですが、諸事情のためメールでの通知になっています。業務日に祝日は含める
基本的に月~金の間、既定の時間に通知を行うことになりました。その際、月~金の間で祝日がある際も通知は行われます。祝日かどうかの判定自体は可能なのですが、諸事情のため行っていません。メール本文
メール本文には、規定値を作成した人の名前と規定値が作成された日付がセットされています。
以上のことから今回作成することになった機能は、業務日にシートの特定の列を参照して、そこに規定値がある場合、自動でメールを送信する機能です。この機能は次のような関数で構成されています。
5. 自動メール送信機能を構成する関数の説明
作成した関数は4つです。
メールを送信する関数
メールを送信する機能を持ちます。
ここでメール本文も作成します。起動したトリガーを削除する関数
トリガーの欄に終了した関数が残ってしまうため、削除します。エラー自体は実行数の箇所に表示されるため、デバッグは問題ないと思われます。業務日にメールを送信する関数のトリガーを作成する関数
トリガーは毎日0~1時の間に起動させます。トリガーとは、GASが指定された条件に基づいて、自動で任意の関数を呼び出す機能です。
起動した日付の曜日が土曜日、日曜日以外の場合、特定の時間に起動するメールを送信する関数のトリガーを作成します。規定値を作成したときの日時を規定値のある行の特定の列のメモ欄にセットする関数
メール本文に使用する規定値作成日時を取得するために、どこかに規定値作成日時を保存する必要があったため、規定値のある行の特定の列のメモ欄に保存しています。
規定値が特定の列に作成されたときに、その日時を規定値作成日時として、上記の箇所に保存するようにしています。
主にこの4つの関数で自動メール送信機能を作成しました。一見シンプルではありますが、GAS独自の仕様により時折想定通りにいかず、苦労することがありました。
6. 苦労したところ
いくつか苦労したことはありましたが、その中でも最も苦労したのは以下の事項です。
メールを受信したけれど、デスクトップに通知されない
Web版のGmailのデスクトップ通知をONにしているにもかかわらず、メールの送受信者が同じ場合はデスクトップ通知が届きませんでした。
7. 楽しかったこと
6で述べたようにGASの独自の処理で苦労することはありましたが、GASで何かしらの機能を作成すること自体は楽しいと感じました。特に、getActiveSheet()とopenByUrl()で開いたときはactiveCellの扱いが異なるなど、どのような処理が裏で行われているか気になります。また、Cloud上だからこその汎用性などもあり、多くのことに応用ができるとも感じました。
8. 終わりに
読んでくださってありがとうございます。これからも1つの技術を深めるだけでなく、色々と学んでいきたいと思います。