Yuki's bnb blog

こんにちは!Yukiといいます。本業のかたわら大阪で2016年夏から民泊運営のお手伝いをしています。民泊業務に関する様々なことを自動化・効率化したいと思い日々活動しています。 お気軽にコメント・お問い合わせください :) TOEICスコア 985

【コピペでOK!】GASで送信元メールアドレスを変更してメール送信する方法

Google Apps Script send email

こんにちは!
Yuki (@yukibnb) です。

今回はGoogle Apps Script (GAS) を使って送信元 (差出人) メールアドレスを変更してメール送信する方法を紹介します。

「メールエイリアス」や「グループメールアドレス」からメール送信する、と言った方がわかりやすいかもしれません。

では見ていきましょう!

 

はじめに

実現したいこと

Google Apps Script send email alias

今回実現したいことはGASでメール送信する際に送信元を自分の個人メールアドレスではなく、info@mycompany.com や sales@mycompany.com のような部署や会社の代表メールアドレスからメール送信することです。

「Googleフォーム回答者へのメール通知」、「定期的な社内メール通知」、「何らかの自動メール通知」などにGASを利用されている方は多いと思います。

それらのメールの送信元は個人メールアドレスではなく、 info@... などのメールアドレスから送信できた方が好ましいケースが多々あります。

 

前提

今回紹介する方法は以下の記事で紹介したメール送信方法の応用版です。

www.yukibnb.com

「個人メールアドレスからのメール送信方法がそもそもわからない」という方は上記記事も合わせてご覧ください。

 

コピペでOK!送信元メールアドレスを変更してメール送信する方法

オプションで≪from≫を使用する

Google Apps Script sendEmail Aliases

sendEmailメソッドの括弧内のオプションでfromを使用して希望のメールアドレスを記述すると、送信元メールアドレスを変更することができます。

 

let recipient = "yamada@sample.com";
let subject = "【ご連絡】〇〇の件";
let body = "◆◆様\nお世話になっております。";
let options = {from: "info@mycompany.com"}; //送信元メールアドレス

GmailApp.sendEmail(recipient, subject, body, options);

sendEmailメソッドの括弧内に{from: "info@mycompany.com"}を直接記述しても構いませんが、上記のように変数optionsを作成し、その変数をsendEmailメソッドの括弧内に入力するのが一般的です。

これだけで送信元メールアドレスを変更することができます。とてもシンプルですね。

次にいくつかポイントと活用例を見てみましょう。

 

ポイントと活用例

送信元メールアドレスに指定できるメールアドレスとは

fromで送信元メールアドレスを変更できることはわかりましたが、もちろんなんでも好きなメールアドレスに変更できるわけではありません

送信元メールアドレスに指定できるメールアドレスは、GAS実行者が所有しているメールエイリアスのみです。

例えば田中さんが個人メールアドレス (tanaka@mycompany.com) ではなく、会社の代表アドレス (info@mycompany.com) からメール送信したい場合、田中さんは事前にinfo@mycompanyのメールエイリアスを取得・設定する必要があります。

事前にメールエイリアスを取得・設定していない場合、fromでメールアドレスを指定してもエラーとなりメールを送信できませんのでご注意ください。

 

memo

メールエイリアスの取得・設定方法は以下のGoogle公式ヘルプをご覧ください。
別のアドレスやエイリアスからメールを送信する

※Google Workspace管理者の方は以下公式ヘルプもご覧ください。
ユーザーに追加の「メール エイリアス」アドレス(sales@)を付与する

 

適切なメールエイリアスを持っているGAS実行者のみメール送信できるようにする

let recipient = "yamada@sample.com";
let subject = "【ご連絡】〇〇の件";
let body = "◆◆様\nお世話になっております。";
let options = {from: "info@mycompany.com"}; //送信元メールアドレス

GmailApp.sendEmail(recipient, subject, body, options);

こちらのコードはGAS実行者が確実にinfo@mycompany.comのメールエイリアスを所有・設定している場合有効です。

もしそうでない場合、GASのエラーを防ぐため以下のようにスクリプトを調整すると便利です。

 

let recipient = "yamada@sample.com";
let subject = "【ご連絡】〇〇の件";
let body = "◆◆様\nお世話になっております。";
let fromAddress = "info@mycompany.com" //★★送信元メールアドレス
let options = {from: fromAddress};

//メールエイリアスを取得し、変数aliasesに格納する
let aliases = GmailApp.getAliases();

//変数fromAddressに格納されているメールアドレス (今回はinfo@mycompany.com)
//のメールエイリアスを所有・設定していない場合、スクリプトを終了する
if(aliases.indexOf(fromAddress) === -1) {
  return;
}

GmailApp.sendEmail(recipient, subject, body, options);

このスクリプトは以下の手順で実行されます。

 

変数optionsを作成し、送信元メールアドレスを指定する
let fromAddress = "info@mycompany.com" //★★送信元メールアドレス
let options = {from: fromAddress};

変数fromAddressに送信元メールアドレスを格納します。

そして変数optionsに変数fromAddressを格納します。

let options = {from: "info@mycompany.com"};を二行に分割しました。

こうすることで変数fromAddressの値を変更するだけで、変数options内のメールアドレスも連動して変更されます。

 

メールエイリアスを取得する
//メールエイリアスを取得し、変数aliasesに格納する
let aliases = GmailApp.getAliases();

getAliasesメソッドを使用し、GAS実行者が所有しているメールエイリアスを取得します。

変数aliasesのデータ型は一次元配列となり、中身は以下のようになります。

["info@mycompany.com", "sales@mycompany.com", "support@mycompany.com"]

 

memo

getAliasesメソッドの詳しい解説は以下記事をご覧ください。
【初心者向け!GAS基本操作】GASでGmailのメールエイリアスを取得する方法

 

変数fromAddressのメールアドレスを所有していない場合、スクリプトを終了する
//変数fromAddressに格納されているメールアドレス (今回はinfo@mycompany.com)
//のメールエイリアスを所有・設定していない場合、スクリプトを終了する
if(aliases.indexOf(fromAddress) === -1) {
  return;
}

一次元配列aliasesに対してindexOfメソッドを使用し、一次元配列aliasesの中に変数fromAddressのメールアドレス、つまりinfo@mycompanyが存在するか確認します。

indexOfメソッドは、検索したいモノ (info@mycompany) が一次元配列に存在しない場合-1を返します。

if文とindexOfメソッドを組み合わせて、もし一次元配列aliasesの中にinfo@mycompany.comが存在しない場合、returnによってこの時点でスクリプトが終了します。

なおif文の{ }内はreturnだけでなくメッセージボックスを表示させたり、管理者にエラー報告メールを送信させたり、他のなんらかの処理も組み合わせると便利かと思います。

 

memo

indexOfメソッドの詳しい解説は以下記事をご覧ください。
【初心者向け!GAS基本操作】GASで一次元配列内の要素を検索する方法

 

メールを送信する
GmailApp.sendEmail(recipient, subject, body, options);

あとはいつも通りsendEmailメソッドを使ってメールを送信するだけです。

info@mycompany.comのメールエイリアスを取得・設定していない場合、if文内のreturnですでにスクリプトが終了しています。

if文より後にsendEmailメソッドを記述しましたので、info@mycompany.comのメールエイリアスを取得・設定しているGAS実行者のみsendEmailメソッドを実行してメール送信できます。

これで適切なメールエイリアスを持っているGAS実行者のみメール送信できるようになりました。

 

まとめ

今回はGoogle Apps Script (GAS) を使って送信元 (差出人) メールアドレスを変更してメール送信する方法を紹介しました。

info@mycompany.com や sales@mycompany.com のような部署や会社の代表メールアドレスからメール送信できるようになると、利便性がぐっと上がります。

次回記事もご期待ください!