【问题标题】:Get email user value when update row更新行时获取电子邮件用户值
【发布时间】:2021-10-15 02:29:52
【问题描述】:

我已经与我的团队一起制作了电子表格,当他们更新行(基于他们使用的帐户)时,我如何(自动)获得电子邮件用户价值?

所以每次他们更新“任务”列时,“电子邮件”列都会自动更新。如下表 spreadsheet

【问题讨论】:

  • 现有的apps脚本只能从开发者那里获取email地址。很遗憾,您无法从其他用户那里获取电子邮件地址。

标签: google-sheets google-sheets-formula spreadsheet


【解决方案1】:

如果用户来自您的同一组织(因此安全策略允许访问用户的身份),您只需设置一个 Apps 脚本 onEdit 触发器,该触发器将使用 getActiveUsergetEffectiveUser 检索用户电子邮件。

为此,通过Tools > Script editor 打开脚本编辑器并添加一个onEdit 函数,如下所示,它将执行以下操作:

  • 使用event object 获取有关已编辑单元格(工作表、行、列)的信息。
  • 检查单元格是否对应于任务列,是否是右侧工作表而不是标题行。
  • 如果对应任务栏,获取用户邮箱getActiveUser,用Range.setValue将邮箱地址写入邮箱。
  • 注意:在下面的示例中,电子邮件和任务列分别设置为AB,工作表名称设置为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);
  }
}

【讨论】:

  • 它有效!谢谢...,但只显示我的电子邮件。当我尝试使用另一个帐户时,没有任何反应。任何想法,为什么??
  • @askstar 这意味着安全策略不允许您访问用户的身份。查看关于getActiveUser的解释。您和其他用户拥有什么样的帐户?
猜你喜欢
  • 2020-07-29
  • 1970-01-01
  • 2022-01-19
  • 2019-12-22
  • 2019-01-07
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多