使用 Google 电子表格脚本使用 getactiveuser 查找用户名
lookup username using getactiveuser using Google Spreadsheet script
我一直在尝试使用 activeuser 查找用户名。只有第一部分有效,最后一部分无效。我的目标是根据活动用户的用户名取消隐藏 sheet(sheetname 基于用户名)。下面是我正在使用的代码。
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:$B').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();
};
}
您需要设置一个installable trigger. This allows the script to run with authorization, whereas normally "onOpen()" is run as a Simple Trigger。由于 Simple Triggers 无法授权为用户,因此您永远不会获得电子邮件地址。
最简单的解决方案是在打开时将 testGetEmail() 设置为 运行。通过在菜单中选择 Resources > Current Project's Triggers 在 Script Editor 中执行此操作。然后点击 "No triggers set up. Click here to add one now." 最后,设置你的触发器:
- 从 "Run."
下的第一个下拉列表中选择您的函数名称 (testGetEmail)
- 在 "Events."
下的第二个下拉列表中选择 "From spreadsheet"
- 在第三个下拉列表中选择 "On Open"。
然后测试以确保我没有输入错误:-)
我一直在尝试使用 activeuser 查找用户名。只有第一部分有效,最后一部分无效。我的目标是根据活动用户的用户名取消隐藏 sheet(sheetname 基于用户名)。下面是我正在使用的代码。
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:$B').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();
};
}
您需要设置一个installable trigger. This allows the script to run with authorization, whereas normally "onOpen()" is run as a Simple Trigger。由于 Simple Triggers 无法授权为用户,因此您永远不会获得电子邮件地址。
最简单的解决方案是在打开时将 testGetEmail() 设置为 运行。通过在菜单中选择 Resources > Current Project's Triggers 在 Script Editor 中执行此操作。然后点击 "No triggers set up. Click here to add one now." 最后,设置你的触发器:
- 从 "Run." 下的第一个下拉列表中选择您的函数名称 (testGetEmail)
- 在 "Events." 下的第二个下拉列表中选择 "From spreadsheet"
- 在第三个下拉列表中选择 "On Open"。
然后测试以确保我没有输入错误:-)