スプレッドシートでリマインダー!GASを使ったメール通知の方法
GASでスプレッドシートからメールを送信する方法って難しいのかな?リマインドメールを自動で送りたいんだけど…

猫男

catman
OK、catmanに任せな!
GASでスプレッドシートからリマインダーメールを送信する方法
以下のコードを使えば、スプレッドシートからメールを送信できるようになる。
function sendReminderEmails() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var email = data[i][0]; // スプレッドシートの最初の列にメールアドレスがあると仮定
var subject = "リマインドメール";
var body = "忘れずにタスクを完了してください!";
if (email) {
GmailApp.sendEmail(email, subject, body);
}
}
}
スプレッドシートのデータを読み込み、最初の列にあるメールアドレスに対してリマインドメールを送信するものだ。
なんだか簡単そう!これを自動にしたらリマインドシステムの完成だね

猫男
GASでコードをトリガーで自動実行しよう
次は、このコードを自動で実行できるようにしよう。
スクリプトエディタの「トリガー」ボタンをクリックし、「トリガーを追加」から新しいトリガーを設定。
今回のケースでは、毎日決まった時間にリマインドメールを送りたいので、時間ベースのトリガーだ。

catman
トリガーを使えば、忘れずに毎日リマインドメールが送られるようになるから便利さが増すわけだ。
練習問題
GASで自分のGoogleスプレッドシートからリマインドメールを送るコードを書いてみよう。
送信先のメールアドレスがB列に入力されている想定。
コードを変更して、メールの件名にスプレッドシートのC列のデータを使用する。
解答と解説
function sendReminderEmails() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var email = data[i][1]; // B列のメールアドレス
var subject = data[i][2]; // C列の件名
var body = "忘れずにタスクを完了してください!";
if (email) {
GmailApp.sendEmail(email, subject, body);
}
}
}
まず、SpreadsheetApp.getActiveSpreadsheet()で現在アクティブなスプレッドシートを取得。
次に、getDataRange().getValues()でスプレッドシートの全データを二次元配列として取得。
ループ内では、B列からメールアドレス、C列から件名を読み込む。
最後に、GmailApp.sendEmail()を使ってメールを送信している。