💻

GASのMailAppでメール送信する際のFromはどう決まる?変更方法は?

2020/03/27に公開

ニッチなテーマですが、Google Apps ScriptのMailAppでメール送信する際のFromヘッダーについて、どう決まるのか?変更したい場合は具体的にどうすればいいのか?などをまとめておきます。

MailAppで送るメールのFromはどう決まる?

例として

こんなスクリプトを作ってみました。

メニューの 実行 > 関数を実行 > myFunction を選択して

実行してみると、

という感じで初回のみGoogleアカウントによる承認を求められます。

そして実際にメールが送信され、

このように、Fromは 権限を承認したGoogleアカウントのメールアドレス となります。

Googleフォーム送信時やGoogleスプレッドシート変更時などのトリガー経由で実行する場合

スクリプトエディタのメニューの 編集 > 現在のプロジェクトのトリガー でトリガー一覧画面を開いて

トリガーを追加 をクリックすると、

以下のようにトリガー経由で関数を実行させることができます。

Googleフォームの回答をスプレッドシートに記録するようにしている状態で、スプレッドシートに紐づいたスクリプトに対して、上図のようにイベントの種類で フォーム送信時 を選択しておくと、Googleフォームが送信されたときにメールで通知するといったこともできて非常に便利です。

このようなトリガーを作成しようと 保存 をクリックすると、

このようにGoogleアカウントによる承認を求められます。

つまり、トリガー経由でスクリプトを起動してメールを送信する場合は、 トリガーごとにGoogleアカウントでの承認が必要で、送信されるメールのFromもトリガーごとに変わる ということですね。

メールのFromを変更したい場合はどうすればいいか

結論としては、トリガー経由でメールを送信するケースでは、 別のGoogleアカウントでトリガーを作り直せばいい です。

上述したように、トリガー作成時に承認したGoogleアカウントのメールアドレスがFromになるので、変更したい場合は、 FormにしたいGoogleアカウントで改めてトリガーを作成すればいい のです。

新しいトリガーを作ったら、以前に作ってあったほうのトリガーは削除してしまってOKです。(そうしないと、結果的に2通のメールが送信されることになってしまいます)

ちなみに、GASに対してメール送信を承認したGoogleアカウントで パーミッション一覧 を確認すると、当該のGASが一覧にいます。

削除したほうのトリガーで承認していたGoogleアカウントでは、もはやパーミッションを与えておく必要はないと思うので、削除しておくとよいでしょう。

まとめ

  • Google Apps ScriptのMailAppでメール送信する際のFromヘッダーは、メール送信権限を承認したGoogleアカウントのメールアドレスになる
  • トリガー経由で実行する場合、トリガー作成時に承認が求められ、メールのFromもトリガー作成者のGoogleアカウントでのメールアドレスになる
  • 送信されるメールのFromを変更したい場合は、FromにしたいGoogleアカウントで改めてトリガーを作り直せばよい
  • その際、古いほうのトリガーは削除し、Googleアカウントのセキュリティページ でパーミッションも削除しておくとよい
GitHubで編集を提案

Discussion