状況:
15 のワークシートと 20 人のユーザーがログインして変更するスプレッドシートがあります。
スプレッドシートを開くユーザーの電子メールアドレスを含む電子メールを送信する必要がある次のスクリプトがあります。
必要なスクリプト機能:
- ユーザーがスプレッドシートを開いたときに電子メールを送信します。
問題:
Session.getEffectiveUser() は、スクリプトの所有者からの電子メールのみを取得しており、ユーザーの電子メールを取得していません。
July23 以降の Session.getEffectiveUser() は、ユーザーから再認証を受ける必要があります。次のメモを実行して、他のユーザースクリプトと Google アカウントのスクリプトを再承認します
テストケース:
このスクリプトは、誰かがスプレッドシートを開いたときにトリガーされます。
function LoginShift(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
MailApp.sendEmail("xxxxxx@gmail.com", "Login Shift" , "Login UserName: " + Session.getEffectiveUser());
}
- スクリプトの所有者と一緒にスプレッドシートを開くと、同じスプレッドシートを開いた電子メール アドレスが記載された電子メールが送信されました。
- スクリプトの所有者ではない別のユーザーでスプレッドシートを開くと、スクリプトが実行されて電子メールが送信されますが、スプレッドシートを開いたユーザーのメールボックスではなく、所有者のメールボックスが使用されます。
Session.getEffectiveuser() を使用した他のスクリプトがありますが、onEdit は正常に動作しています。このスクリプトが getEffectiveUser から電子メール アドレスを取得しない理由がわかりません。