Google apps script 循环数组以匹配组成员资格
我正在尝试设置一个脚本,该脚本在表单提交时获取用户的上下文,获取用户ID(电子邮件),搜索电子表格以定位用户,然后查找与该用户关联的经理电子邮件。下面是我一直在开发的一些代码,我能够从电子表格中获取数据,并创建一个数组和循环。我想知道的是,是否有人可以帮助提供建议,以最好的方式来组织电子表格,以搜索和定位会员资格,然后如何在脚本中做到这一点Google apps script 循环数组以匹配组成员资格,google-apps-script,Google Apps Script,我正在尝试设置一个脚本,该脚本在表单提交时获取用户的上下文,获取用户ID(电子邮件),搜索电子表格以定位用户,然后查找与该用户关联的经理电子邮件。下面是我一直在开发的一些代码,我能够从电子表格中获取数据,并创建一个数组和循环。我想知道的是,是否有人可以帮助提供建议,以最好的方式来组织电子表格,以搜索和定位会员资格,然后如何在脚本中做到这一点 function getUser() { //Uses the base class to get acive user's email var e
function getUser() {
//Uses the base class to get acive user's email
var email = Session.getActiveUser().getEmail();
//Uses the UserManager class to get info by passing in the getActive user from base class
var userFirst = UserManager.getUser(Session.getActiveUser()).getGivenName();
var userLast = UserManager.getUser(Session.getActiveUser()).getFamilyName();
//Go to View then Log to see results
return email;
}
//Function used to look up manager of user submitting PTO request
function getManager() {
var requestor = getUser();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var manager = ss.getSheetByName('Managers');
var values = manager.getDataRange().getValues();
for ( i = 0; i < values.length; i++) {
var obj = values[i];
Logger.log(obj);
for (var j in obj) {
var value = obj[j];
//Logger.log(value);
if (value == requestor){
Logger.log(value);
}
}
函数getUser(){
//使用基类获取acive用户的电子邮件
var email=Session.getActiveUser().getEmail();
//使用UserManager类通过从基类传入getActive user来获取信息
var userFirst=UserManager.getUser(Session.getActiveUser()).getGivenName();
var userLast=UserManager.getUser(Session.getActiveUser()).getFamilyName();
//转到查看,然后登录以查看结果
回复邮件;
}
//用于查找提交PTO请求的用户的管理员的函数
函数getManager(){
var requestor=getUser();
var ss=SpreadsheetApp.getActiveSpreadsheet();
var manager=ss.getSheetByName('Managers');
var values=manager.getDataRange().getValues();
对于(i=0;ifunction getUser() {
//Uses the base class to get acive user's email
var email = Session.getActiveUser().getEmail();
//Uses the UserManager class to get info by passing in the getActive user from base class
var userFirst = UserManager.getUser(Session.getActiveUser()).getGivenName();
var userLast = UserManager.getUser(Session.getActiveUser()).getFamilyName();
//Go to View then Log to see results
return email;
}
function findEmployee() {
//Gets the active Spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Gets the sheet by name
var employee = ss.getSheetByName('Roster');
//get the values in sheet
var values = employee.getDataRange().getValues();
// makes a call to function getUser() to return email of active user
var user = getUser();
// loops over data values, matches to active user email, returns group ID
for (var i=0; i < values.length; i++) {
for (var j=0; j < values[i].length; j++) {
if ( values[i][j] == user) {
return values[i][2];
//used to verify / debug
Logger.log(values[i][2]);
}
}
}
}
function getMnger(){
//Gets current spreadsheet and locates the managers sheet and grabs the data
var ss = SpreadsheetApp.getActiveSpreadsheet();
var manager = ss.getSheetByName('Managers');
var values = manager.getDataRange().getValues();
var groupID = findEmployee();
//Loops over the data creating associative array
for (var i=0; i < values.length; i++) {
for (var j=0; j < values[i].length; j++) {
if ( values[i][j] == groupID) {
//Used to debug and verify
Logger.log(values[i][1]);
return values[i][1];
}
}
}
}
函数getUser(){
//使用基类获取acive用户的电子邮件
var email=Session.getActiveUser().getEmail();
//使用UserManager类通过从基类传入getActive user来获取信息
var userFirst=UserManager.getUser(Session.getActiveUser()).getGivenName();
var userLast=UserManager.getUser(Session.getActiveUser()).getFamilyName();
//转到查看,然后登录以查看结果
回复邮件;
}
函数findeEmployee(){
//获取活动的电子表格
var ss=SpreadsheetApp.getActiveSpreadsheet();
//按名称获取工作表
var employee=ss.getSheetByName(“花名册”);
//获取工作表中的值
var values=employee.getDataRange().getValues();
//调用函数getUser()以返回活动用户的电子邮件
var user=getUser();
//循环数据值,匹配活动用户电子邮件,返回组ID
对于(变量i=0;i谢谢!您可以在电子表格中使用
过滤器
。由于您希望避免硬编码值,您可以创建两个工作表,一个为经理,一个为用户,为每个经理分配一个唯一的密钥,然后为用户列表中的每个用户,包括对应于其经理的唯一经理密钥。您是否在第二种情况下,scriptdB可能是一种更好的方法,每个用户都可以轻松搜索“链接管理器”属性。想法是,用户将点击谷歌表单请求带薪休假(PTO)。他们将选择两个字段,一个开始日期和结束日期,然后提交。从这里开始,其余工作由脚本完成。脚本将找出提交者(同一域中的所有用户)。一旦脚本知道用户(getUser函数)它将查找该用户的经理。这将允许脚本启动电子邮件通知以获得PTO的批准。好的。我想我已经找到了我想要在这里循环和识别的内容,我想它显示在