![](/img/trans.png)
[英]How can multiple tabs be created from a range using Google Apps Script in a Google Sheet?
[英]Google Sheet Script - Hiding tabs based on a range of cells containing emails
所以,我想做的是出于隐私原因为某些用户隐藏某些选项卡。
我有一个包含 8 列和 51 行的选项卡。 (每组用户一列,标题一行,每组50个slot)
我想做的是拿这张表,把每个组分开,然后根据当前(活动)用户所在的组,隐藏某些表并显示其他表。
我有 2 个函数,一个 function 用于更新组 (validUsers),第二个用于更新隐藏的选项卡 (updateHiddenSheets)。
validUsers() 当前有 1/1 成功触发。 (onEdit) updateHiddenSheets() 当前有 0/2 个成功的触发器。 (打开时)
有一个更好的方法吗?
编辑:我一直在尝试一些不同的事情,现在我遇到了 validUsers() 的错误。
TypeError: Cannot read property '0' of undefined
Line 18
(这是第一个 for 循环中的一行)
代码:
var numEmails = 50;//This is the number of emails in a given column
var emailsList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').getRange(2,1,numEmails,8);
var stakePeople = [numEmails];
var crystalHeights1 = [numEmails];
var crystalHeights2 = [numEmails];
var stratfordEast = [numEmails];
var stratford = [numEmails];
var highlandPark = [numEmails];
var imperial1 = [numEmails];
var imperial2 = [numEmails];
for(i=1; i<=numEmails;i++) {
crystalHeights1 [i] = emailsList[i][0];
}
for(i=1; i<=numEmails;i++) {
crystalHeights2 [i] = emailsList[i][1];
}
for(i=1; i<=numEmails;i++) {
stratfordEast [i] = emailsList[i][2];
}
for(i=1; i<=numEmails;i++) {
stratford [i] = emailsList[i][3];
}
for(i=1; i<=numEmails;i++) {
highlandPark[i] = emailsList[i][4];
}
for(i=1; i<=numEmails;i++) {
imperial1 [i] = emailsList[i][5];
}
for(i=1; i<=numEmails;i++) {
imperial2 [i] = emailsList[i][6];
}
for(i=1; i<=numEmails;i++) {
stakePeople [i] = emailsList[i][7];
}
}
var currentUserEmail = Session.getActiveUser().getEmail()
if (crystalHeights1.includes(currentUserEmail)) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 1st Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford East Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Highland Park Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Troubleshooting').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').hideSheet();
}
else if (crystalHeights2.includes(currentUserEmail)) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 2nd Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford East Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Highland Park Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Troubleshooting').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').hideSheet();
}
else if (stratfordEast.includes(currentUserEmail)) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford East Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Highland Park Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Troubleshooting').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').hideSheet();
}
else if (stratford.includes(currentUserEmail)) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford East Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Highland Park Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Troubleshooting').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').hideSheet();
}
else if (highlandPark.includes(currentUserEmail)) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford East Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Highland Park Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Troubleshooting').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').hideSheet();
}
else if (imperial1.includes(currentUserEmail)) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford East Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Highland Park Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 1st Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Troubleshooting').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').hideSheet();
}
else if (imperial2.includes(currentUserEmail)) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 2nd Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford East Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Highland Park Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 1st Ward').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 2nd Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Troubleshooting').hideSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').hideSheet();
}
else if (stakePeople.includes(currentUserEmail)) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 1st Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Crystal Heights 2nd Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford East Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Stratford Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Highland Park Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 1st Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imperial 2nd Ward').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Troubleshooting').showSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').showSheet();
}
}
您收到此错误的原因是因为您试图访问emailList
数组中未定义数据的0
属性。
此外,如果您仔细查看您的emailList
数组,它是一个范围数组。 为了从这些范围中获取实际值,您必须添加getValues()
:
var emailsList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').getRange(2,1,numEmails,8).getValues();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.