GoogleSheets - 有没有办法将用户信息从"show edit history"提取到单元格?



我正在尝试在某一列中记录每一行的用户信息,就像使用"显示编辑历史记录"选项(通过右键单击单元格(时显示的那样。

更具体地说 - 对于给定的行,如果 G 列中的单元格上次由我修改 - B 列中的单元格应显示"Yaniv A"或"yaniva@emaildomain.com"。当然,这应该以同样的方式适用于任何其他编辑器。 每当修改 G 列中的对应单元格时,新信息都应替换 B 列中的任何旧信息。

在 Apps Script 上,您可以设置一个onEdit触发器,用于检索进行更改的编辑器和单元格的用户名;但您必须记住,在某些情况下,用户名不可检索(主要是如果用户尚未接受脚本范围(,您可以在getActiveUser文档中阅读有关这些情况的更多信息。

您可以使用以下功能实现您的请求。它将使用事件对象来检查更改是否在 G 列上进行,如果是,则用户的电子邮件(如果范围未被接受,则Unknown(将写在同一行的 B 列上。

function onEdit(e) {
var range = e.range;
var editor = e.user.getEmail();
if (editor == '' || editor == null) {
editor = 'Unknown';
}
if (range.getA1Notation().search('G') != -1) {
range.offset(0, -5).setValue(editor);
};
}

保存此功能后,您必须创建一个可安装的触发器。为此,请转到Edit 🡆 Current project's triggers.之后,单击+ Add Trigger并填写此设置:

  • 选择要运行的函数:onEdit
  • 选择应运行的部署:head
  • 选择事件源:从电子表格
  • 选择事件类型:编辑时
  • 失败通知设置:如您所愿

保存触发器后,您可以自己修改 G 列中的单元格来测试函数。请不要犹豫,要求对我的答案或代码本身进行任何澄清。

相关内容

最新更新