Class Session

工作階段

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.
const 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()

取得指令碼執行授權的使用者相關資訊。如果指令碼是設為「以我 (開發人員) 的身分執行」的網頁應用程式,這會傳回開發人員的使用者帳戶。如果指令碼是在可安裝的觸發條件下執行,則會傳回建立觸發條件的使用者帳戶。在大多數其他情況下,這會傳回與 getActiveUser() 相同的帳戶。

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

回攻員

User:指令碼執行時所屬的使用者

授權

使用這個方法的指令碼需要下列一或多個範圍的授權:

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

getScriptTimeZone()

取得指令碼的時區。新腳本預設會採用擁有者的時區,但您可以在腳本編輯器中依序點選「檔案」>「專案屬性」,變更腳本的時區。請注意,試算表有獨立的時區,如要變更,請在 Google 試算表中按一下「檔案」>「試算表設定」。試算表時區與指令碼時區不同,是指令碼錯誤的常見來源。

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

回攻員

String:指令碼的時區


getTemporaryActiveUserKey()

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

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

回攻員

String:暫時性有效使用者金鑰

已淘汰的方法