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

取得指令碼的時區。新指令碼預設為擁有者的時區,但您可以按一下指令碼編輯器中的「File」>「Project properties」,變更指令碼的時區。請注意,試算表有不同的時區,您可以按一下 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:臨時有效使用者鍵

已淘汰的方法