Class Session
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
会话
Session 类提供对会话信息的访问权限,例如用户的电子邮件地址(在某些情况下)和语言设置。
详细文档
getActiveUser()
获取有关当前用户的信息。如果安全政策不允许访问用户的身份信息,User.getEmail()
会返回一个空字符串。电子邮件地址可供使用的情形各不相同:例如,在允许脚本在无需用户授权的情况下运行的任何情境中(例如简单的 onOpen(e)
或 onEdit(e)
触发器、Google 表格中的自定义函数,或部署为“以我的身份执行”(即由开发者而非用户授权)的 Web 应用),用户的电子邮件地址都不可用。不过,如果开发者自行运行脚本或与用户属于同一 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()
获取脚本在哪位用户的授权下运行的信息。如果脚本是设置为“以我的身份执行”(开发者)的 Web 应用,则会返回开发者的用户账号。如果脚本在可安装的触发器下运行,则会返回创建触发器的用户的账号。在大多数其他情况下,此方法会返回与 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 表格中点击文件 > 电子表格设置来更改此时区。与脚本时区不同的电子表格时区是脚本 bug 的常见来源。
// 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
- 临时有效的用户标识键
已弃用的方法
getTimeZone()
已弃用。此函数已废弃,不应在新脚本中使用。
获取脚本的时区。新脚本默认采用所有者的时区,但您可以通过在脚本编辑器中依次点击 File > Project properties 来更改脚本的时区。请注意,电子表格具有单独的时区,您可以在 Google 表格中点击文件 > 电子表格设置来更改此时区。与脚本时区不同的电子表格时区是脚本 bug 的常见来源。
// Log the time zone of the script.
const timeZone = Session.getTimeZone();
Logger.log(timeZone);
返回
String
- 脚本的时区
getUser()
已弃用。此函数已废弃,不应在新脚本中使用。
获取有关当前用户的信息。
返回
User
- 当前登录的用户
授权
使用此方法的脚本需要获得以下一个或多个范围的授权:
-
https://www.googleapis.com/auth/userinfo.email
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-07-26。
[null,null,["最后更新时间 (UTC):2025-07-26。"],[[["\u003cp\u003eThe \u003ccode\u003eSession\u003c/code\u003e class in Apps Script allows you to access information about the current user and the script's environment, such as the user's locale and the script's time zone.\u003c/p\u003e\n"],["\u003cp\u003eYou can retrieve information about the active user, effective user, script time zone, and a temporary active user key using methods like \u003ccode\u003egetActiveUser()\u003c/code\u003e, \u003ccode\u003egetEffectiveUser()\u003c/code\u003e, \u003ccode\u003egetScriptTimeZone()\u003c/code\u003e, and \u003ccode\u003egetTemporaryActiveUserKey()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eSome methods like \u003ccode\u003egetTimeZone()\u003c/code\u003e and \u003ccode\u003egetUser()\u003c/code\u003e are deprecated and should be replaced with their updated counterparts such as \u003ccode\u003egetScriptTimeZone()\u003c/code\u003e and \u003ccode\u003egetActiveUser()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eWhile the user's email address can be accessed in certain circumstances using \u003ccode\u003egetActiveUser().getEmail()\u003c/code\u003e or \u003ccode\u003egetEffectiveUser().getEmail()\u003c/code\u003e, it may not be available if security policies restrict access or in contexts without explicit user authorization.\u003c/p\u003e\n"],["\u003cp\u003eAccessing user information may require specific authorization scopes, like \u003ccode\u003ehttps://www.googleapis.com/auth/userinfo.email\u003c/code\u003e, to be granted to the script.\u003c/p\u003e\n"]]],[],null,["# Class Session\n\nSession\n\nThe Session class provides access to session information, such as the user's email address (in\nsome circumstances) and language setting. \n\n### Methods\n\n| Method | Return type | Brief description |\n|-------------------------------------------------------------|------------------------------------------|-----------------------------------------------------------------------------------------------|\n| [getActiveUser()](#getActiveUser()) | [User](/apps-script/reference/base/user) | Gets information about the current user. |\n| [getActiveUserLocale()](#getActiveUserLocale()) | `String` | Gets the language setting of the current user as a string---for example, `en` for English. |\n| [getEffectiveUser()](#getEffectiveUser()) | [User](/apps-script/reference/base/user) | Gets information about the user under whose authority the script is running. |\n| [getScriptTimeZone()](#getScriptTimeZone()) | `String` | Gets the time zone of the script. |\n| [getTemporaryActiveUserKey()](#getTemporaryActiveUserKey()) | `String` | Gets a temporary key that is unique to the active user but does not reveal the user identity. |\n\n### Deprecated methods\n\n| Method | Return type | Brief description |\n|---------------------------------|------------------------------------------|------------------------------------------|\n| [getTimeZone()](#getTimeZone()) | `String` | Gets the time zone of the script. |\n| [getUser()](#getUser()) | [User](/apps-script/reference/base/user) | Gets information about the current user. |\n\nDetailed documentation\n----------------------\n\n### `get``Active``User()`\n\nGets information about the current user. If security policies do not allow access to the user's\nidentity, [User.getEmail()](/apps-script/reference/base/user#getEmail()) returns a blank string. The circumstances in which the\nemail address is available vary: for example, the user's email address is not available in any\ncontext that allows a script to run without that user's authorization, like a simple `on``Open(e)` or `on``Edit(e)` trigger, a custom function in Google Sheets, or a web app\ndeployed to \"execute as me\" (that is, authorized by the developer instead of the user).\nHowever, these restrictions generally do not apply if the developer runs the script themselves\nor belongs to the same Google Workspace domain as the user.\n\n```javascript\n// Log the email address of the person running the script.\nconst email = Session.getActiveUser().getEmail();\nLogger.log(email);\n```\n\n#### Return\n\n\n[User](/apps-script/reference/base/user) --- the current user\n\n#### Authorization\n\nScripts that use this method require authorization with one or more of the following [scopes](/apps-script/concepts/scopes#setting_explicit_scopes):\n\n- `https://www.googleapis.com/auth/userinfo.email`\n\n*** ** * ** ***\n\n### `get``Active``User``Locale()`\n\nGets the language setting of the current user as a string---for example, `en` for English.\n\n```javascript\n// Log the language setting of the person running the script.\nLogger.log(Session.getActiveUserLocale());\n```\n\n#### Return\n\n\n`String` --- a string that represents the user's language setting\n\n*** ** * ** ***\n\n### `get``Effective``User()`\n\nGets information about the user under whose authority the script is running. If the script is a\nweb app set to \"execute as me\" (the developer), this returns the developer's user account. If\nthe script is running under an [installable\ntrigger](/apps-script/understanding_triggers), this returns the account of the user who created the trigger. In most other\nscenarios, this returns the same account as [getActiveUser()](#getActiveUser()).\n\n```javascript\n// Log the email address of the user under whose authority the script is\n// running.\nconst email = Session.getEffectiveUser().getEmail();\nLogger.log(email);\n```\n\n#### Return\n\n\n[User](/apps-script/reference/base/user) --- the user under whose authority the script is running\n\n#### Authorization\n\nScripts that use this method require authorization with one or more of the following [scopes](/apps-script/concepts/scopes#setting_explicit_scopes):\n\n- `https://www.googleapis.com/auth/userinfo.email`\n\n*** ** * ** ***\n\n### `get``Script``Time``Zone()`\n\nGets the time zone of the script. New scripts default to the owner's time zone, but the\nscript's time zone can be changed by clicking **File \\\u003e Project properties** in the script\neditor. Note that spreadsheets have a separate time zone, which can be changed by clicking\n**File \\\u003e Spreadsheet settings** in Google Sheets. Spreadsheet time zones that differ from\nthe script time zone are a frequent source of scripting bugs.\n\n```javascript\n// Log the time zone of the script.\nconst timeZone = Session.getScriptTimeZone();\nLogger.log(timeZone);\n```\n\n#### Return\n\n\n`String` --- the time zone of the script\n\n*** ** * ** ***\n\n### `get``Temporary``Active``User``Key()`\n\nGets a temporary key that is unique to the active user but does not reveal the user identity.\nThe temporary key rotates every 30 days and is unique to the script.\n\n```javascript\n// Log the temporary key of the person running the script.\nLogger.log(Session.getTemporaryActiveUserKey());\n```\n\n#### Return\n\n\n`String` --- the temporary active user key\n\nDeprecated methods\n------------------\n\n### `get``Time``Zone()`\n\n\n**Deprecated.** This function is deprecated and should not be used in new scripts.\n\nGets the time zone of the script. New scripts default to the owner's time zone, but the\nscript's time zone can be changed by clicking **File \\\u003e Project properties** in the script\neditor. Note that spreadsheets have a separate time zone, which can be changed by clicking\n**File \\\u003e Spreadsheet settings** in Google Sheets. Spreadsheet time zones that differ from\nthe script time zone are a frequent source of scripting bugs.\n\n```javascript\n// Log the time zone of the script.\nconst timeZone = Session.getTimeZone();\nLogger.log(timeZone);\n```\n\n#### Return\n\n\n`String` --- the time zone of the script\n\n*** ** * ** ***\n\n### `get``User()`\n\n\n**Deprecated.** This function is deprecated and should not be used in new scripts.\n\nGets information about the current user.\n\n#### Return\n\n\n[User](/apps-script/reference/base/user) --- the currently signed in user\n\n#### Authorization\n\nScripts that use this method require authorization with one or more of the following [scopes](/apps-script/concepts/scopes#setting_explicit_scopes):\n\n- `https://www.googleapis.com/auth/userinfo.email`"]]