![](/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.