google-apps-script - 如何将用户添加到显示 Google 表格中谁编辑了行的单元格?
问题描述
我有一个几乎可以完美运行的 GOogle Sheets 脚本。我只需要添加一个:将登录用户添加到单元格中。我有一张名为“GMB 描述”的表格当用户在第 4 列的任何单元格行中输入信息时,它会在同一行的第 5 列中显示日期和时间。没问题。问题是我希望它也显示该单元格中的登录用户当前(下面的脚本)显示:MM/dd/yyyy - hh:mm a 我希望它显示:MM/dd/yyyy - hh:mm a - LoggedIn User 我知道它将使用对该行进行更改的用户电子邮件。
摘要:如何将代码添加到以下脚本以同时显示进行该编辑的用户?
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "GMB Descriptions" ) { //checks that we're on the correct sheet
var r = s.getActiveCell();
if( r.getColumn() == 4 ) { //checks the column
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) //is empty?
var time = new Date();
time = Utilities.formatDate(time, "GMT-8", "MM/dd/yy - h:mm a");
nextCell.setValue(time);
};
};
}
解决方案
修改后的(并略有减少)的脚本如下:
function onEdit(e) {
var rg = e.range;
if (rg.getSheet().getName() == "GMB Descriptions" && rg.columnStart == 4) {
var nextCell = rg.offset(0, 1);
if (nextCell.getValue() == '') {
var dt = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy - h:mm a - ");
var userMail = e.user.getEmail();
nextCell.setValue(dt + userMail);
}
}
}
感谢 Cooper for Utilities的提示,它运行良好。我们使用e.user.getEmail()
假设没有安全问题(根据提问者的意见)。在为我测试时,它按预期工作。
推荐阅读
- linker - 使用非易失性存储器 (NVRAM) 时 ld 链接脚本的加载地址 (LMA)
- ms-access - 使用组合框创建 ms 访问报告
- node.js - 如何签署 JWT 以从 azure Active Directory 交换访问令牌?
- qt - QT QML Circle 和一个文本列表视图
- javascript - 如何在 html 画布上找到三角形的区域?
- c - 是什么导致我的数组地址在传递给函数时被破坏(更改)?
- c++ - x509_store_add_cert 和 ssl_ctx_use_certificate 之间的区别?
- node.js - 是否可以将 db-migrate 配置为使用未命名迁移的表来跟踪迁移?
- tensorflow - tf.data group_by_window() 没有先迭代完整的数据集
- html - 当浏览器处于全屏模式时,图像不是 100% 全高