1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Googleフォームの自動返信メールで任意のFromアドレスを設定する(Google Apps Script)

Last updated at Posted at 2023-01-09

はじめに

PHPで書いたフルスクラッチの問い合わせフォームを、Googleフォームにリプレースしました。
Googleフォームへの移行は簡単だったのですが、自動返信メールのFromアドレスを任意のメールアドレスに変更する際少し手間取ったので共有します。

前提

  • この記事では、Googleフォームの作成方法には言及しておりません。
  • また、Googleフォームの自動返信には3つのやり方がありますが、Google Apps Script(GAS)の利用が前提です。

サマリー

  • Googleフォームの自動返信メールで、Fromに任意のアドレスを設定することは可能。
  • ただし、GASの利用が必須で、設定できるのは実在する確認済みアドレスのみ。

目次

  1. GASのMailAppクラスリファレンスにはFromアドレスの設定がない
  2. Fromを任意のアドレスに変更するには、Gmail設定でアドレス追加が必要
  3. GASのMailAppクラスで「from」オプションを追加する

GASのMailAppクラスリファレンスにはFromアドレスの設定がない

GASで自動返信メールを送信すると、デフォルトではGoogleフォームを作成したGoogleアカウント(Gmailアドレス)がFromアドレスになります。
これを任意のアドレスに変更しようと、MailAppクラスのリファレンスを見ましたが、Fromアドレス設定に関する記述がありません。

MailAppリファレンス.png

送信者の名前は[name]で設定できるのにFromアドレスの指定はできません。
過去のブログなどではoptionにfromを設定している記事もあり、最初はそのように記述してみました。

var to = 'support@hogefuga.com'; 
var subject = 'お問合せがありました'; 
var body = 'お問合せを受信しました。';

var from_address = 'contact@hogefuga.com';
var from_name = 'お問合せフォーム';
var options = {from: from_address, name: from_name};
 
GmailApp.sendEmail(to, subject, body, options);

この記述で実行すると、以下のエラーが出ます。

エラー.png

from記述を外すと正常に動作するので、fromのオプション自体が無くなった可能性を考えました。

Fromを任意のアドレスに変更するには、Gmail設定でアドレス追加が必要

色々探したところ、以下の記事を見つけました。
※TeraDasの@hiromo6様ありがとうございます

この記事によると、optionに[from]を設定する場合は 確認済みのアドレス である必要があるとのこと。
確認済みアドレスは、Gmailの設定でメールアドレスを追加することで登録できます。

1. Gmail > 設定を開く

(すべての設定が非表示の場合、すべての設定を表示をクリック)

1_Gmail_設定.png

2. アカウントとインポート > 他のメールアドレスを追加

2_Gmail_アカウント.png

3. 自分のメールアドレスを追加

(ここでの「名前」は送信者名にはならないので注意)

3_アカウント追加.png

4. [Gmailアドレスの場合] 確認メールの送信

5_確認メール送信.png

4. [Gmail以外の場合] smtpサーバ、メールアカウント情報の入力

(認証が通れば確認メールが送信される)

4_smtp設定.png

5. [共通] 確認メールを受信

(承認URLをクリック or 確認コードを控える)

7_確認メール.png

6. [共通] 確認コードの場合は、確認フォームに入力

6_確認コード.png

上記の設定が終わると、Gmail > 設定 > アカウントとインポート に確認済みのアドレスが表示されます。
このアドレスが、GASのMailAppでfromに指定できるようになります。

8_追加後の状態.png

GASのMailAppクラスで [from] オプションを追加する

サンプルコードを掲載します。

サンプルでは送信者名(name)を指定していますが、Fromの名前は[確認済みアドレス]の名前(GmailならGmailのプロフィール氏名、Gmail以外ならメールアカウントに紐づいた氏名など)で送信されます。

function onFormSubmit(){
  var formId = 'GoogleフォームID';
  var form = FormApp.openById(formId);
  var formResponses = form.getResponses();

  var message = '';
  var username = '';
  var usermail = '';

  var from_address = 'support@hogefuga.com';

  var count = formResponses.length;
  count--;
  
  var itemResponses = formResponses[count].getItemResponses();

  for (var i=0; i < itemResponses.length; i++) {
    var question = itemResponses[i].getItem().getTitle(); 
    var answer = itemResponses[i].getResponse(); 

    if (question == '名前'){
      username = answer;
    }
    if (question == 'メールアドレス'){
      usermail = answer;
    }

    message += question + ': ' + answer + '\n'; 
  } 
  
  
  /* 管理者宛メール送信設定 */
  var admin_to = 'support@hogefuga.com'; 
  var admin_subject = 'お問合せがありました'; 
  var admin_body = '下記の内容で、お問合せを受信しました。\n\n'
  + message
  var admin_options = {from: from_address, name: 'お問合せフォーム', replyTo: usermail};
 
  GmailApp.sendEmail(admin_to, admin_subject, admin_body, admin_options);
   
   
  /* ユーザー宛メール送信設定 */
  var subject = 'お問合せを受付けました'; 
  var body = username 
  + ' 様\n\n'
  + 'この度は、お問合せいただきありがとうございます。\n'
  + '下記の内容で、受け付けました。\n'
  + '後ほど折り返しご連絡いたしますので、いましばらくお待ちください。\n\n'
  + message 
  + '\n\n'
  + '----------\n'
  + 'HogeFuga Inc.\n'
  + 'https://hogefuga.com'
  + '\n\n※このメールはお問い合わせフォームからの自動返信です。'; 
  var options = {from: from_address, name: 'HogeFugaお問合せフォーム'};
 
  GmailApp.sendEmail(usermail, subject, body, options); 

}

これで自動返信メールのFromアドレスに任意のアドレスを設定できるようになりました。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?