javascript - Google表格脚本将getUsername()的值替换为首字母
问题描述
我对代码没有什么经验,所以我根据我在互联网上找到的内容制作了这个脚本。它目前所做的是,当 A 列中的一个单元格被编辑时,E 列被一个时间戳填充,G 列被 A 列的编辑者的用户名填充。然后我有这个数组函数:=ArrayFormula(IF(G2:G = "username1", SUBSTITUTE(G2:G, "username1", "initials1"), IF(G2:G = "username2", SUBSTITUTE(G2:G, "username2", "initials2"),""))
它用首字母填充 E 列以 G 列作为辅助列的编辑器(现在只有 2 个编辑器)。
我目前的方法很慢,并不能真正让我扩展到更多的编辑器。如何更改我的脚本,而不是用用户名填充 G 列,我可以直接用首字母填充 E 列,而不必使用 G 列作为助手。
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var i = ['Sheet 1', 'Sheet 2'].indexOf(sheet.getName());
if (i > -1 && e.range.columnStart === 1) {
e.range.offset(0,4).setValue(Utilities.formatDate(new Date(), "GMT+8", "MM/dd/yyyy"));
e.range.offset(0,6).setValue(Session.getEffectiveUser().getUsername());
}
}
解决方案
解释:
您可以使用电子邮件和姓名缩写之间的映射创建一个 json 对象:
const initials = {
"email1":"initials1",
"email2":"initials2",
"email3":"initials3"
};
然后得到这样的首字母:
e.range.offset(0,6).setValue(initials[Session.getEffectiveUser().getEmail()]);
解决方案:
function onEdit(e) {
const initials = {
"email1":"initials1",
"email2":"initials2",
"email3":"initials3"
};
var sheet = e.source.getActiveSheet();
var i = ['Sheet 1', 'Sheet 2'].indexOf(sheet.getName());
if (e.range.getValue()!='' && i > -1 && e.range.columnStart === 1) {
e.range.offset(0,4).setValue(Utilities.formatDate(new Date(), "GMT+8", "MM/dd/yyyy"));
e.range.offset(0,6).setValue(initials[Session.getEffectiveUser().getEmail()]);
}
}
旁注:
IndeedSession.getEffectiveUser().getUsername()
似乎不受支持V8
,但如果它适用于您(您Rhino
可能使用),则使用我的解决方案并替换Session.getEffectiveUser().getEmail()
为Session.getEffectiveUser().getUsername()
. 我的答案的重点是使用 json 对象来进行映射。也试试Session.getActiveUser()
这相当于Session.getEffectiveUser()
简单的触发器。
推荐阅读
- java - Java:如何通过限制字符串中的字符数来分割带分隔符的字符串?
- flash - 允许自定义组件的 Flash/Animate 替代软件?
- c# - 是否可以禁用 ASP.NET Core 中的数据保护加密?
- node.js - 平铺编辑器 - 解码 Base 64 数据似乎不起作用
- python - 根据 Python 中的参考数据更正值
- python - 当使用 scipy_fftpack 的插入式 fft 替代品时,智慧是否在全球范围内存储?
- html - Xpath - 如何在不明确的 DIV 标记内的表格中查找单元格
- jquery - 为元素线性渐变的度数添加动画
- jquery - 要求使用 plupload 至少上传一个文件
- awk - 添加字段的数字