GASで簡単!自動返信メールを設定する方法

メールの自動返信を設定したいんですけど、GASを使って簡単にできたりしますか?
猫男
猫男
catman
catman
もちろんだ。GASを用いれば、初心者でも自動返信メールを設定できるようになるさ。catmanがその方法を教えてあげよう。

GASでメールの自動返信を設定する基本

GAS(Google Apps Script)では、Gmailサービスを使ってメール操作が可能だ。自動返信メールもその一つさ。

GASでメールを取得する方法

まず、メールを取得する方法を確認しよう。GmailAppサービスを使えば、メールを簡単に取得できる。


function getEmails() {
  var threads = GmailApp.search('is:unread');
  var firstThread = threads[0].getMessages();
  Logger.log(firstThread[0].getSubject());
}

このスクリプトは、未読メールのスレッドをすべて検索し、その件名をログに出力する。

GmailApp.search() は条件に一致するスレッドを検索するのに使う。

getMessages() でスレッド内のメッセージを取得できる。

GASでメールの自動返信を設定する方法

以上を踏まえて、自動返信のサンプルコードを紹介しよう。


function autoReply() {
  var threads = GmailApp.search('is:unread');
  
  for (var i = 0; i < threads.length; i++) {
    var message = threads[i].getMessages()[0];
    var email = message.getFrom();
    var subject = "Re: " + message.getSubject();
    var body = "こんにちは、メールありがとうございます。";

    GmailApp.sendEmail(email, subject, body);
    threads[i].markRead();
  }
}

GmailApp.sendEmail() で返信メールを送信している。

markRead() 打つことで、そのスレッドを既読にすることができる。

GASでGoogleフォームからのメール通知を自動返信する方法

質問に回答があった際に自動で返信メールを送る場合もある。そこでGoogleフォームとGASを利用する方法も紹介しよう。

一例として、フォームから取得したメールアドレスに返信メールを送る場合は、以下の通りだ。


function sendReplyFromForm(e) {
  var email = e.namedValues['Email Address'][0];
  var subject = "Googleフォームへのご回答ありがとうございました";
  var body = "ご回答をありがとうございます!確認させていただきます。";

  GmailApp.sendEmail(email, subject, body);
}

このスクリプトは、フォームの回答に基づいてメールアドレスにお礼の返信を送信するさ。

e.namedValues にはGoogleフォームの回答が格納されている。

 

練習問題

GASを使って、「特定の件名を含む未読メール」に自動返信を送るスクリプトを作成せよ。

 

 

解答・解説


function autoReplySpecificSubject() {
  var threads = GmailApp.search('subject:特定件名 is:unread');
  
  for (var i = 0; i < threads.length; i++) {
    var message = threads[i].getMessages()[0];
    var email = message.getFrom();
    var subject = "Re: " + message.getSubject();
    var body = "このメールに自動返信しています。";
    
    GmailApp.sendEmail(email, subject, body);
    threads[i].markRead();
  }
}

GmailApp.search(‘subject:特定件名 is:unread’)で、特定の件名を含む未読メッセージを検索している。

getFrom() でメールを送信してきた相手のアドレスを取得している。

markRead() により、送信後にそのスレッドを既読にしている。