スプレッドシートでリマインダー!GASを使ったメール通知の方法

GASでスプレッドシートからメールを送信する方法って難しいのかな?リマインドメールを自動で送りたいんだけど…
猫男
猫男
catman
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でコードをトリガーで自動実行しよう

次は、このコードを自動で実行できるようにしよう。

スクリプトエディタの「トリガー」ボタンをクリックし、「トリガーを追加」から新しいトリガーを設定。

gas リマインダー

今回のケースでは、毎日決まった時間にリマインドメールを送りたいので、時間ベースのトリガーだ。

catman
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()を使ってメールを送信している。