我一直在尝试使用activeuser查找用户名。只有第一部分有效,最后一部分没有。我的目标是根据活动用户的用户名取消隐藏工作表(工作表名称基于用户名)。以下是我正在使用的代码。
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [];
menuEntries.push({name: "Test getActiveUser/getEmail", functionName: "onTest"});
ss.addMenu("Rep Drowndown", menuEntries);
testGetEmail("onOpen");
}
function onTest() {
testGetEmail("menu function");
};
function testGetEmail(callerId) {
var userEmail = "";
var activeUser = Session.getActiveUser();
if (activeUser == null)
Browser.msgBox("Session.getActiveUser() returned null", "called by " + callerId, Browser.Buttons.OK);
else
userEmail = activeUser.getEmail();
if (userEmail == "")
Browser.msgBox("Your Email returned an empty string", "called by " + callerId, Browser.Buttons.OK);
else
var ss = SpreadsheetApp.getActiveSpreadsheet();
var lookup = Session.getActiveUser().getEmail();
var range = ss.getRange('$A$3:$B$8').getValues();
var lookupRange = [];
for (var i = 0; i < range.length; i++)
lookupRange.push(range[i][0]);
var index = lookupRange.indexOf(lookup);
if (index == -1) {
// implicit no-op
}
else {
var link = range[index][2]
var sheet = ss.getSheetByName(link);
sheet.showSheet();
};
}
答案 0 :(得分:0)
您需要设置installable trigger.这允许脚本使用授权运行,而通常&#34; onOpen()&#34;以Simple Trigger运行。由于简单触发器无法授权用户,因此您永远不会收到电子邮件地址。
最简单的解决方案是将testGetEmail()设置为在open上运行。通过选择Resources&gt;在脚本编辑器中执行此操作。当前项目的菜单中的触发器。然后单击&#34;不设置触发器。点击此处立即添加一个。&#34;最后,设置你的触发器:
然后测试以确保我没有犯错误: - )