Google Sheets Apps Script不隐藏标签



所以,目标是从' email '选项卡(其中包含8个不同的列表)中获取电子邮件,将它们放入数组中。然后,根据谁是活动用户,隐藏和显示特定的选项卡。我已经研究了许多不同的方法(出于隐私原因我这样做),这似乎是唯一合理的方法。每个用户都需要访问权限来编辑他们有权访问的选项卡。

我也有一个"故障排除"选项卡,我用它作为设置选项卡。它包含一个不同选项卡名称的列表,以及哪个列表可以访问它。(每个TAB只对应一个列表)

我的问题是它没有隐藏任何选项卡。

  • updateHiddenSheets()有一个触发器'on open'
  • validUsers()有一个触发'on edit'

都运行没有错误,所以我不确定问题在哪里。

/*Things to Do:
- make the tabs sorted by ward/stakepeople
- have tab names automatically update in this code .getSheetByName()
- 
*/
var stakePeople = [];
var ward1 = [];
var ward2 = [];
var ward3 = [];
var ward4 = [];
var ward5 = [];
var ward6 = [];
var ward7 = [];
function validUsers() {
var activeSheetName = SpreadsheetApp.getActiveSheet().getSheetName();
if(activeSheetName = 'Emails'){
var numEmails = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').getRange(52,2).getValue();

var emailsList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').getRange(2,1,numEmails,8).getValues();
var numEmailsAct = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails').getRange(51,1,1,8).getValues();
for(i=0; i<=numEmailsAct[0];i++) {
ward1.push(emailsList[i][0]);
}
for(i=1; i<=numEmailsAct[1];i++) {
ward2[i] = emailsList[i][1];
}
for(i=1; i<=numEmailsAct[2];i++) {
ward3[i] = emailsList[i][2];
}
for(i=1; i<=numEmailsAct[3];i++) {
ward4[i] = emailsList[i][3];
}
for(i=1; i<=numEmailsAct[4];i++) {
ward5[i] = emailsList[i][4];
}
for(i=1; i<=numEmailsAct[5];i++) {
ward6[i] = emailsList[i][5];
}
for(i=1; i<=numEmailsAct[6];i++) {
ward7[i] = emailsList[i][6];
}
for(i=1; i<=numEmailsAct[7];i++) {
stakePeople[i] = emailsList[i][7];
}
}
}
function updateHiddenSheets(){
var currentUserEmail = Session.getActiveUser().getEmail()
var wardSheetNames = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Troubleshooting').getRange(24,3,19,2).getValues();
var ward1B = false;
var ward2B = false;
var ward3B = false;
var ward4B = false;
var ward5B = false;
var ward6B = false;
var ward7B = false;
var stakePeopleB = false;
if (ward1.includes(currentUserEmail)) { 
ward1B = true;
} 
if (ward2.includes(currentUserEmail)) { 
ward2B = true;
} 
if (ward3.includes(currentUserEmail)) { 
ward3B = true;
} 
if (ward4.includes(currentUserEmail)) { 
ward4B = true;
} 
if (ward5.includes(currentUserEmail)) { 
ward5B = true;
} 
if (ward6.includes(currentUserEmail)) { 
ward6B = true;
} 
if (ward7.includes(currentUserEmail)) { 
ward7B = true;
} 
if (stakePeople.includes(currentUserEmail)) {
stakePeopleB = true;
}
if(ward1B){
for(i=0;i<19;i++){
if(wardSheetNames[i][1]="1"){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(wardSheetNames[i][0]).showSheet(); 
}
}
}
if(ward2B){
for(i=0;i<19;i++){
if(wardSheetNames[i][1]="2"){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(wardSheetNames[i][0]).showSheet(); 
}
}
}
if(ward3B){
for(i=0;i<19;i++){
if(wardSheetNames[i][1]="3"){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(wardSheetNames[i][0]).showSheet(); 
}
}
}
if(ward4B){
for(i=0;i<19;i++){
if(wardSheetNames[i][1]="4"){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(wardSheetNames[i][0]).showSheet(); 
}
}
}
if(ward5B){
for(i=0;i<19;i++){
if(wardSheetNames[i][1]="5"){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(wardSheetNames[i][0]).showSheet(); 
}
}
}
if(ward6B){
for(i=0;i<19;i++){
if(wardSheetNames[i][1]="6"){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(wardSheetNames[i][0]).showSheet(); 
}
}
}
if(ward7B){
for(i=0;i<19;i++){
if(wardSheetNames[i][1]="7"){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(wardSheetNames[i][0]).showSheet(); 
}
}
}
if(stakePeopleB){
for(i=0;i<19;i++){
if(wardSheetNames[i][1]="Stake"){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(wardSheetNames[i][0]).showSheet(); 
}
}
}
for(i=0;i<19;i++){
if(wardSheetNames[i][1]="All"){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(wardSheetNames[i][0]).showSheet(); 
}
}
} 

代码不包括hideSheet()方法,这是隐藏表格所需的。

if表达式将值赋给wardSheetNames[i][1],而不是将其与相应的值进行比较

  • =assign operator
  • ==抽象相等比较器
  • ===严格相等比较器

请记住,表单对任何用户都是隐藏/显示的,而不仅仅是当前的用户。

相关的

  • 哪个等于操作符(== vs ===)应该在JavaScript比较中使用?
  • if语句中单个等号是如何工作的?
  • 在电子表格中对特定用户隐藏工作表

最新更新