更新行时获取电子邮件用户值
Get email user value when update row
我和我的团队一起制作了电子表格,当他们更新行(基于他们使用的帐户)时,我如何(自动)获取电子邮件用户值?
所以每次他们更新“任务”列时,“电子邮件”列都会自动更新。就像下面的 table
spreadsheet
如果用户来自同一组织(因此安全策略允许访问用户的身份),您只需设置 Apps 脚本 onEdit trigger that will use getActiveUser or getEffectiveUser 即可检索用户电子邮件。
为此,通过 Tools > Script editor
打开脚本编辑器并添加如下所示的 onEdit
函数,它将执行以下操作:
- 使用 event object 获取有关已编辑单元格的信息(sheet、行、列。
- 检查单元格是否对应于任务列,是正确的sheet而不是header行。
- 如果对应任务栏,用
getActiveUser
获取用户邮箱,用Range.setValue将邮箱地址写入邮箱栏
- 注意:在下面的示例中,电子邮件和任务列分别设置为
A
和 B
,sheet 名称设置为 Sheet1
。请根据您的需要更改这些。
代码示例:
function onEdit(e) {
const range = e.range;
const rowIndex = range.getRow();
const colIndex = range.getColumn();
const sheet = range.getSheet();
const SHEET_NAME = "Sheet1"; // Sheet name you want to check
const EMAIL_COLUMN = 1; // Column index where emails are written
const TASK_COLUMN = 2; // Column index where tasks are written
if (colIndex === TASK_COLUMN && rowIndex > 1 && sheet.getName() === SHEET_NAME) {
const userEmail = Session.getActiveUser().getEmail();
sheet.getRange(rowIndex, EMAIL_COLUMN).setValue(userEmail);
}
}
我和我的团队一起制作了电子表格,当他们更新行(基于他们使用的帐户)时,我如何(自动)获取电子邮件用户值?
所以每次他们更新“任务”列时,“电子邮件”列都会自动更新。就像下面的 table spreadsheet
如果用户来自同一组织(因此安全策略允许访问用户的身份),您只需设置 Apps 脚本 onEdit trigger that will use getActiveUser or getEffectiveUser 即可检索用户电子邮件。
为此,通过 Tools > Script editor
打开脚本编辑器并添加如下所示的 onEdit
函数,它将执行以下操作:
- 使用 event object 获取有关已编辑单元格的信息(sheet、行、列。
- 检查单元格是否对应于任务列,是正确的sheet而不是header行。
- 如果对应任务栏,用
getActiveUser
获取用户邮箱,用Range.setValue将邮箱地址写入邮箱栏 - 注意:在下面的示例中,电子邮件和任务列分别设置为
A
和B
,sheet 名称设置为Sheet1
。请根据您的需要更改这些。
代码示例:
function onEdit(e) {
const range = e.range;
const rowIndex = range.getRow();
const colIndex = range.getColumn();
const sheet = range.getSheet();
const SHEET_NAME = "Sheet1"; // Sheet name you want to check
const EMAIL_COLUMN = 1; // Column index where emails are written
const TASK_COLUMN = 2; // Column index where tasks are written
if (colIndex === TASK_COLUMN && rowIndex > 1 && sheet.getName() === SHEET_NAME) {
const userEmail = Session.getActiveUser().getEmail();
sheet.getRange(rowIndex, EMAIL_COLUMN).setValue(userEmail);
}
}