使用 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表格脚本将表格图表插入到电子邮件草稿中

使用 Google 电子表格脚本使用 getactiveuser 查找用户名

允许其他用户执行 google 电子表格脚本

使用 Apps 脚本在带有日期的 Google 电子表格中存档

如何使用 Google Apps 脚本在电子表格中查找按钮的位置?

写入电子表格时强制使用 Google Apps 脚本中的小数位