Class Session

工作階段

工作階段類別提供工作階段資訊的存取權,例如使用者的電子郵件地址 (在某些情況下) 和語言設定。

方法

方法傳回類型簡短說明
getActiveUser()User取得目前使用者的相關資訊。
getActiveUserLocale()String以字串形式取得目前使用者的語言設定,例如 en 代表英文。
getEffectiveUser()User取得執行指令碼授權的使用者資訊。
getScriptTimeZone()String取得指令碼的時區。
getTemporaryActiveUserKey()String取得有效使用者專屬的臨時金鑰,但不會揭露使用者身分。

內容詳盡的說明文件

getActiveUser()

取得目前使用者的相關資訊。如果安全性政策不允許存取使用者的身分,User.getEmail() 會傳回空白字串。電子郵件地址的用途各不相同:舉例來說,在任何情況下,使用者的電子郵件地址都無法在未經使用者授權的情況下執行指令碼,例如簡單的 onOpen(e)onEdit(e) 觸發條件、Google 試算表中的自訂函式,或是部署至「以我執行」的網頁應用程式 (該功能是由開發人員授權,而非使用者授權)。不過,如果開發人員自行執行指令碼或屬於與使用者相同的 Google Workspace 網域,通常就不適用這些限制。

// Log the email address of the person running the script.
var email = Session.getActiveUser().getEmail();
Logger.log(email);

回攻員

User:目前的使用者

授權

使用這個方法的指令碼必須取得以下一或多個範圍的授權:

  • https://www.googleapis.com/auth/userinfo.email

getActiveUserLocale()

以字串形式取得目前使用者的語言設定,例如 en 代表英文。

// Log the language setting of the person running the script.
Logger.log(Session.getActiveUserLocale());

回攻員

String:代表使用者語言設定的字串


getEffectiveUser()

取得執行指令碼授權的使用者資訊。如果指令碼是設為「execute as me」(開發人員) 的網頁應用程式 (開發人員),就會傳回開發人員的使用者帳戶。如果指令碼在可安裝的觸發條件下執行,系統會傳回建立該觸發條件的使用者帳戶。在大多數其他情境中,這會傳回與 getActiveUser() 相同的帳戶。

// Log the email address of the user under whose authority the script is running.
var email = Session.getEffectiveUser().getEmail();
Logger.log(email);

回攻員

User:執行指令碼授權的使用者

授權

使用這個方法的指令碼必須取得以下一或多個範圍的授權:

  • https://www.googleapis.com/auth/userinfo.email

getScriptTimeZone()

取得指令碼的時區。新指令碼預設為擁有者的時區,但您可以在指令碼編輯器中依序點選「File」>「Project 屬性」,變更指令碼的時區。請注意,試算表會有獨立時區,只要在 Google 試算表中依序點選「檔案」>「試算表設定」,即可變更時區。試算表時區與指令碼時區不同,是撰寫指令碼錯誤的常見原因。

// Log the time zone of the script.
var timeZone = Session.getScriptTimeZone();
Logger.log(timeZone);

回攻員

String:指令碼的時區


getTemporaryActiveUserKey()

取得有效使用者專屬的臨時金鑰,但不會揭露使用者身分。臨時金鑰每 30 天輪替一次,且專屬於指令碼。

// Log the temporary key of the person running the script.
Logger.log(Session.getTemporaryActiveUserKey());

回攻員

String:臨時的活躍使用者金鑰

已淘汰的方法