GAS ポートフォリオ

【GAS】メール差出人アドレスを別のメールアドレスに変更する方法

GAS(Google App Script)を使用すれば、Gmailを使って簡単にメールの送信を行うことができます。しかし、メールの送信に使用されるアドレスは、スクリプト作成者のグーグルアカウントに紐付いたメールアドレスです。
 
 
個人のメールアドレスをそのまま使いたくない。

まずは個人のアカウントで作成して、共通アカウントのメールアドレスで運用したい。
 
 
などなど、差出人アドレス(送信元アドレス)を作成者から変えたい場面はあるかと思います!
 
  
そこで、メールの差出人アドレスを別のメールアドレスに変更する方法を2つ紹介したいと思います!

おすすめ【GAS】フォーム回答後スプレッドシートのアドレスにメールを自動送信する

Googleフォームには、フォーム回答者にメールを通知する機能はありますが、質問者(担当者)へのメール通知機能はありません。そこで、フォーム回答時に、自動で担当者にメールを通知してくれる機能を、GASで作成したいと思います。こうすれば、ユーザを待たせることなく、スムーズなサービスを提供することができます。

続きを見る

ソースコード

先に、差出人アドレスを変更するソースコードです。GASには、メール送信用にMailAppGmailAppの2つのクラスが用意されています。中でも、GmailAppクラスを使用すれば、差出人アドレスを変更することができます。
 
 
2つのクラスの詳しい使い方はこちら

GmailAppのsendEmail(recipient, subject, body, options)を使用します。fromはoptions内で指定し、以下のようにJavaScript形式で記述します。

  
  
以下、メール送信のサンプルコードです。

 当然のことながら、差出人アドレスは自分のメールアドレスもしくは、自分のアカウントに追加されたアドレスのみです。それ以外のアドレスを使用した場合は送信エラーになってしまいます。
 
 
差出人アドレスを変更する場合は、この後に紹介する方法のいずれかを、適用してください!

別のメールアドレスを自分のアカウントに追加して、使用する方法

まずは、自分のグーグルアカウントに別のメールアドレスを追加して、そのメールアドレスを利用する方法です。
 
 
追加するメールアドレスは、Gmailアドレスでも、他の会社のアドレスどちらでもOKです。

別のメールアドレスを追加する

それでは、アドレスの追加方法を説明していきます。Gmail画面右上にある歯車アイコンを選択します。

Gmail設定アイコン
 
 

「アカウントとインポート」タブの「名前:」欄にある、「他のメールアドレスを追加」を選択します。

他のメールアドレスを追加

  
  
メールアドレスを入力し、「次のステップ>>」を選択します。 

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

 
 
入力したメールアドレスを認証するため、パスワードを入力し「アカウントを追加>>」を選択します。

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

 
 
送られてきた確認コードを入力し「確認」を選択します。

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

  
 
SSLなどのメールの用語の説明はこちらの記事で詳しく解説しています。

 

以上で完了です。この方法だと、メールアドレスの追加が終われば、この後は手間がかかりません。
 
 
しかし、メールアドレスを追加する際に認証が必要なので、セキュリティの面でデメリットが発生してしまいます。メールアドレスの追加が望ましくない場合は、次に紹介する方法を参照してください。

別アカウントで使用しているメールアドレスを、自分のアカウントに追加せずに使用する方法

次に、別アカウントで使用しているメールアドレスを、自分のアカウントに追加せずに使用する方法です。
 
 
そもそも、どのように差出人アドレスが決定されるのでしょうか?
  
  
GASプロジェクトはメール送信処理を行うために、グーグルアカウントにアクセスし、Gmailサービスを利用します。どのグーグルアカウントにアクセスするかは、実行パターンによって決められます。

実行パターン一覧

エディタ実行:エディタを実行したユーザアカウント

トリガー実行:オーナー情報

ウェブアプリ実行:Web公開者または、Web実行者

エディタ実行

エディタ実行(スクリプトエディタ上で実行、またはデバッグ)をすると、実行したユーザのアカウント情報で実行されます。
 
 
エディタ実行は実際の運用で使う場面はないと思うので、ここでは省略します。

トリガー実行

トリガー実行をすると、オーナー情報のアカウントでアクセスし、実行されます。オーナー情報はトリガーごとに作成され、オーナー=トリガー作成者のことです。
 
 
したがって、別アカウント(Aさん)のメールアドレスを使用したい場合は、その別ユーザ(Aさん)がトリガーを作成すればOKです。
 
 
共通のメールアドレスを使用する場合は、開発者がプログラムを記述し、最後に管理者がトリガーを作成する、というシンプルな流れです。
 
 
ただし、別アカウントのユーザが作成したトリガーは、その別ユーザしか編集・削除ができないので、注意してください。

ウェブ実行

ウェブアプリ実行をすると、ウェブ公開者または、ウェブ実行者のアカウントにアクセスし、実行されます。
 
 
公開者か実行者かの設定は、ウェブアプリケーション公開時に設定することができます。
 
 
デプロイ(Web公開)を行う画面の「Execute the app as:」が該当箇所です。

デプロイ画面
 
 
Execute the app as:を「Me(xxxxxx@xx.xxx)」にすると、「Me(xxxxxx@xx.xxx)」のアカウント(公開者)権限で、GASプロジェクトは実行されます。トリガー実行と同様に、使用するアカウントでこの公開作業を行えばOKです。
 
 
Execute the app as:を「User accessing the web app」にすると、ウェブアプリケーションを実行したユーザのアカウントで実行されます。したがって、差出人アドレスは都度変更されてしまいます。
 
 
オプションでfromを指定してしまった場合、メールアドレスはその値で固定になるため、メールアドレスが不一致だとエラーになってしまいます。
 
 
差出人アドレスを変更する場合、「User accessing the web app」に設定することは必ず避けてください。 

まとめ

まとめになります。以下の例では、Aさんのメールアドレス(Asan@gmail.com)を差出人アドレスにしています。

差出人アドレス変更方法

自分のアカウントにAさんのメールアドレスを追加する。ただし、Aさんに認証してもらう必要あり。

トリガーをAさんが作成する。ただし、その作成したトリガーの編集・削除はAさんのみ。

AさんがWebの公開を行う。そして実行権限はMe(Asan@gmail.com)にする。


 
 
用途に応じて設定を使い分けてみてください!お疲れ様でした!

おすすめ【GAS】フォーム回答後スプレッドシートのアドレスにメールを自動送信する

Googleフォームには、フォーム回答者にメールを通知する機能はありますが、質問者(担当者)へのメール通知機能はありません。そこで、フォーム回答時に、自動で担当者にメールを通知してくれる機能を、GASで作成したいと思います。こうすれば、ユーザを待たせることなく、スムーズなサービスを提供することができます。

続きを見る

-GAS, ポートフォリオ
-

© 2022 まいふぁんず