使用 Google 电子表格脚本使用 getactiveuser 查找用户名
Posted
技术标签:
【中文标题】使用 Google 电子表格脚本使用 getactiveuser 查找用户名【英文标题】:lookup username using getactiveuser using Google Spreadsheet script 【发布时间】:2015-07-10 02:33:46 【问题描述】:我一直在尝试使用 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();
;
【问题讨论】:
【参考方案1】:您需要设置installable trigger. 这允许脚本在授权下运行,而通常“onOpen()”作为Simple Trigger 运行。由于 Simple Triggers 无法授权为用户,因此您永远不会获得电子邮件地址。
最简单的解决方案是将 testGetEmail() 设置为在打开时运行。通过在菜单中选择 Resources > Current Project's Triggers 在脚本编辑器中执行此操作。然后单击“未设置触发器。单击此处立即添加一个”。最后,设置您的触发器:
-
从“运行”下的第一个下拉菜单中选择您的函数名称 (testGetEmail)。
在“事件”下的第二个下拉菜单中选择“来自电子表格”。
在第三个下拉菜单中选择“打开时”。
然后测试以确保我没有犯错 :-)
【讨论】:
感谢@jjjjoe,您的建议奏效了。我是新手,仍在学习我的方式。感谢您的帮助。 我似乎无法查看您建议的编辑。对不起。我的名声暂时不允许我这样做。那也有效..谢谢。 没问题;看起来有人批准了我的编辑。我在本地编辑器中进行了编辑,因为我正在寻找逻辑问题,但是有人批准它们很好:-)以上是关于使用 Google 电子表格脚本使用 getactiveuser 查找用户名的主要内容,如果未能解决你的问题,请参考以下文章
使用 Google 电子表格脚本使用 getactiveuser 查找用户名
使用 Apps 脚本在带有日期的 Google 电子表格中存档