GASのMailAppでメール送信する際のFromはどう決まる?変更方法は?
ニッチなテーマですが、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アカウントのセキュリティページ でパーミッションも削除しておくとよい
Discussion