GAS実行ユーザーのメールアドレス(Googleアカウント)を取得する方法

Google Apps Script(GAS)で複数ユーザーが実行するスクリプトの場合、実行したユーザーのメールアドレスを取得したいケースがあります。

そこで、GASスクリプトを実行したユーザーのGoogleアカウント名(メアド)を取得する方法を解説します。

複数ユーザーでGASスクリプトを実行するケース

Google Apps Script(GAS)で用意したスクリプトは、作成したオーナー以外にも他のユーザーも実行するケースが多いです。

特にGoogleスプレッドシートに紐づくコンテナバインドスクリプトの場合、スプレッドシート上にボタンを配置して、スプレッドシート利用者が実行できるようにします。

スプレッドシート上の図形描画したボタンでGoogle Apps Script(GAS)を実行する方法

GASのスクリプトのメリットは、Googleアカウントがあれば、権限が付与されているユーザーは誰でも実行できることです。

実行ユーザーのメールアドレス宛にメールを送りたい

複数ユーザーが実行するGoogle Apps Script(GAS)では、実行したユーザー宛にメールを送るといった処理が求められることがあります。

GASでメールを送る場合、一般的のような形でメールアドレスを取得して、宛先としてメールを送信します。

  • 変数でメールアドレスを定義
  • スプレッドシートのセルから読み込む

しかし、上記のやり方では、実行ユーザーごとにスクリプトを用意したり、実行ユーザーと読み込むセルを連動させる必要があります。

実は、GASにはスクリプトを実行したユーザーのGoogleアカウントID、すなわちメールアドレスを取得することができます。

GASスクリプト実行者のメールアドレスを取得する方法

Google Apps Script(GAS)で、実行ユーザーのメールアドレスを取得する方法として、GAS独自のメソッドが用意されています。

Session.getActiveUser().getUserLoginId()

Session.getActiveUser().getUserLoginId()メソッドではスクリプト実行したアクティブなユーザーのGoogleアカウントのIDを取得します。

GoogleアカウントのIDというのはGmailのメールアドレスだったり、登録した会社のメールアドレスです。

そのため、GoogleアカウントのIDを取得することで、実行ユーザーのメールアドレスを取得することができます。

※Session.getActiveUser().getEmail()でもメールアドレスの取得が可能です。

実行者のメアドを取得するGASサンプルコード

実際に、「Session.getActiveUser().getUserLoginId()」メソッドを活用し、GAS実行ユーザーのメールアドレスを取得して、メール送信するGASのサンプルコードを解説します。

function getExecuteUserAddress() {
let mailAddress = Session.getActiveUser().getUserLoginId();
Browser.msgBox("メールアドレス:"+mailAddress);
}

Google Apps Script(GAS)を実行したユーザーのメールアドレス(Gmailアドレス)を取得する方法

実行ログのように、GoogleアカウントのIDであるGmailのメールアドレスが取得できています。

このように、Session.getActiveUser().getUserLoginId()で実行ユーザーのメールアドレスが取得できれば、実行したユーザー宛に個別にメールを送ることが可能です。

まとめ・終わりに

今回、Google Apps Script(GAS)で実行したユーザーのメールアドレスを取得する方法を解説しました。

GASには「Session.getActiveUser().getUserLoginId()」というメソッドがあり、GoogleアカウントのID(=メアド)を取得することができます。

実行ユーザーのメールアドレスを取得することで、実行ユーザー宛にGASスクリプトで処理した結果をメール送信するといったことが可能です。

宛先メールアドレスを変数で定義したり、スプレッドシートのセルから読み取るよりも柔軟なコードになるので、ぜひ活用してみてください。