使用Google Spreadsheet脚本使用getactiveuser查找用户名

时间:2015-07-10 02:33:46

标签: javascript google-apps-script google-sheets lookup userid

我一直在尝试使用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 个答案:

答案 0 :(得分:0)

您需要设置installable trigger.这允许脚本使用授权运行,而通常&#34; onOpen()&#34;以Simple Trigger运行。由于简单触发器无法授权用户,因此您永远不会收到电子邮件地址。

最简单的解决方案是将testGetEmail()设置为在open上运行。通过选择Resources&gt;在脚本编辑器中执行此操作。当前项目的菜单中的触发器。然后单击&#34;不设置触发器。点击此处立即添加一个。&#34;最后,设置你的触发器:

  1. 从&#34;运行。&#34;
  2. 下的第一个下拉列表中选择您的功能名称(testGetEmail)
  3. 选择&#34;来自电子表格&#34;在&#34; Events。&#34;
  4. 下的第二个下拉列表中
  5. 选择&#34; On Open&#34;在第三次下拉。
  6. 然后测试以确保我没有犯错误: - )