【GAS応用】無料Googleアカウントの独自ドメインで自動返信メールを送る方法(送信元アドレスの変更)

前回の記事では、Googleフォームの自動返信メールの文面を外部ファイル(Googleドライブ上のテキスト)で管理する方法を解説しました。

しかし、ビジネスやお店の窓口としてフォームを運用していると、「自動返信の送信元(From)が『〜@gmail.com』だと、スパムっぽくて信頼性に欠ける……」「自社の独自ドメイン(例:info@your-domain.com)から送信したように見せたい!」という強いご要望が出てくるはずです。

実はこれ、無料のGoogleアカウントを使っている場合でも、一定の条件をクリアしていればGAS(Google Apps Script)で簡単に実装可能です!

今回は、前回の「外部ファイル読み込み」のコードをベースに、送信元のメールアドレスを任意の独自ドメインに指定する方法を追加して解説します。

本記事に記載されたコードや手順を実行したことによって生じたいかなる損害・トラブルについても、筆者および所属組織は一切の責任を負いかねます。

システムの変更やコマンドの実行は、必ずご自身の責任と判断のもとで行ってください。

また、本記事の内容は筆者個人の見解であり、所属する企業や団体を代表するものではありません。

大前提:Gmailの「エイリアス(送信元)」設定が必要

GASのコードをいじる前に、絶対に確認しなければならない前提条件があります。

GASを使って任意のアドレスからメールを送る場合、そのスクリプトを実行するGoogleアカウントのGmail設定で、該当の独自ドメインアドレスが「送信元(エイリアス)」として追加・承認されている必要があります。

  1. パソコンでGmailを開く
  2. 右上の歯車アイコン >「すべての設定を表示」をクリック
  3. 「アカウントとインポート」タブを開く
  4. 「名前: (メールアドレスを追加)」 の項目に、使いたい独自ドメインのアドレスが登録されているか確認する

※まだ設定していない場合は、「他のメールアドレスを追加」から、お使いのレンタルサーバーなどのSMTP情報を入力して設定を済ませておいてください。

GASコードのアップデート(送信元アドレス指定版)

Gmail側の準備ができたら、GASのコードをアップデートしましょう。

フォームのスクリプトエディタを開き、以下のコードに書き換えてください。

/**
 * フォーム送信時に実行されるメイン関数(独自ドメイン送信対応版)
 */
function sendAutoReply(e) {
  // ==========================================
  // 【設定エリア】あなたの環境に合わせて変更してください
  // ==========================================
  const FILE_ID = 'ここにあなたのファイルIDを貼り付けてください'; // 文面用テキストのファイルID
  const FROM_ADDRESS = 'info@your-domain.com'; // ★送信元にしたい独自ドメインのアドレス
  const SENDER_NAME = '株式会社〇〇 お問い合わせ窓口'; // ★メールに表示させる送信者名
  // ==========================================
  
  // 1. フォームの回答を取得
  const itemResponses = e.response.getItemResponses();
  const respondentEmail = e.response.getRespondentEmail() || "";
  
  let formData = {};
  itemResponses.forEach(item => {
    formData[item.getItem().getTitle()] = item.getResponse();
  });

  const email = respondentEmail || formData['メールアドレス'];
  
  // 2. 外部テキストファイルから文面を取得
  const templateFile = DriveApp.getFileById(FILE_ID);
  const fullContent = templateFile.getBlob().getDataAsString('utf-8');

  // 3. 件名と本文を分離
  const lines = fullContent.split('\n');
  let subject = lines[0].replace('件名:', '').trim();
  let body = lines.slice(1).join('\n').replace('本文:', '').trim();

  // 4. プレースホルダー({{項目名}})の置換
  for (let key in formData) {
    let reg = new RegExp('{{' + key + '}}', 'g');
    subject = subject.replace(reg, formData[key]);
    body = body.replace(reg, formData[key]);
  }

  // 5. 送信元アドレスがGmailに登録されているか(エイリアスか)チェック
  const aliases = GmailApp.getAliases();
  if (aliases.indexOf(FROM_ADDRESS) === -1) {
    console.error('エラー: 指定された送信元アドレス(' + FROM_ADDRESS + ')はGmailのエイリアスとして登録されていません。');
    return; // 登録されていない場合はエラーとして処理を中断
  }

  // 6. メール送信(オプションで送信元と送信者名を指定)
  if (email) {
    const options = {
      from: FROM_ADDRESS,
      name: SENDER_NAME
    };
    GmailApp.sendEmail(email, subject, body, options);
  } else {
    console.error("メールアドレスが見つからなかったため送信をスキップしました。");
  }
}

コードの解説と技術的なポイント

今回のコードの肝となるのは、以下の2つのポイントです。

1. 送信元(From)の指定方法

GmailApp.sendEmail の第4引数には、オプション(連想配列)を渡すことができます。

ここに { from: FROM_ADDRESS, name: SENDER_NAME } と記述することで、デフォルトのGmailアドレスではなく、指定した独自ドメインのアドレスと名前で送信することが可能です。

2. エラー回避のためのエイリアスチェック

実は、GASで from に指定できるのは「そのGoogleアカウントに紐づいているアドレスのみ」という厳格な仕様があります。もしタイピングミスや設定漏れで無効なアドレスを指定すると、スクリプトがエラーで停止してしまいます。

そこで、GmailApp.getAliases() を使ってアカウントに登録されているエイリアス一覧を取得し、指定したアドレスが存在するかを事前にチェックする安全装置(バリデーション)を組み込んでいます。

まとめ:プロフェッショナルなフォーム運用へ

今回の実装により、「文面はテキストファイルで簡単管理」しつつ「独自ドメインのアドレスから自動返信を送る」という、無料アカウントでありながら非常に本格的なお問い合わせシステムが完成しました。

「送信元がフリーメールだから……」とGoogleWorkspace(有料版)の契約を迷っていた方も、既存のレンタルサーバーなどのメールアドレスをエイリアス連携させれば、この方法でコストを抑えた運用が可能です。

コピペで簡単に実装できるので、ぜひご自身のサイトで試してみてくださいね!

よかったらシェアしてね!
  • URLをコピーしました!
目次