簡體   English   中英

Google Sheets Apps 腳本不隱藏標簽

[英]Google Sheets Apps Script not hiding tabs

因此,目標是從“電子郵件”選項卡(包含 8 個不同的列表)中獲取電子郵件,將它們放入一個數組中。 然后,根據誰是活動用戶,隱藏和顯示特定選項卡。 我已經研究了許多不同的方法(出於隱私原因我這樣做),這似乎是唯一合理的方法。 每個用戶都需要訪問權限才能編輯他們有權訪問的選項卡。

我還有一個“疑難解答”選項卡,我將其用作設置選項卡。 這包含不同選項卡名稱的列表以及可以訪問它的列表。 (每個選項卡只有一個對應的列表)

我的問題是它沒有隱藏任何選項卡。

  • updateHiddenSheets()有一個觸發器“打開”
  • validUsers()有一個“編輯時”觸發器

兩者都運行沒有錯誤,所以我不確定問題出在哪里。

/*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]分配一個值,而不是將其與相應的值進行比較

  • =賦值運算符
  • ==抽象相等比較器
  • ===嚴格相等比較器

請記住,工作表對任何用戶都隱藏/顯示,而不僅僅是活動用戶。

有關的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2025 STACKOOM.COM