我将回答我自己的问题以提供与@andrewjames 相同的解决方案,但同时隐藏多个工作表。
隐藏单个工作表的代码可以在@andrewjames 评论中找到。
以@adrewjames 的代码为基础隐藏多张工作表的代码是这样的。
var addFicha = 'Añadir ficha'; // change this to whatever you prefer.
var addGasto = 'Añadir gasto'; // change this to whatever you prefer.
var addIngreso = 'Añadir ingreso'; // change this to whatever you prefer.
var hideMultipleSheets = addFicha || addGasto || addIngreso;
var prevSheetProperty = 'PREVIOUS_SHEET';
function saveActiveSheet() {
var activesheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var userProperties = PropertiesService.getUserProperties();
userProperties.setProperty(prevSheetProperty, activesheet.getSheetName());
}
function onSheetChange(e) {
var sheetToHide1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(addFicha);
var sheetToHide2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(addGasto);
var sheetToHide3 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(addIngreso);
sheetToHide1.hideSheet();
sheetToHide2.hideSheet();
sheetToHide3.hideSheet();
}
function onSelectionChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Get current sheet name and compare to previously saved sheet
var currentSheetName = ss.getActiveSheet().getSheetName();
var userProperties = PropertiesService.getUserProperties();
var previousSheetName = userProperties.getProperty(prevSheetProperty);
if (currentSheetName !== previousSheetName) {
saveActiveSheet(); // this becomes the new "previous sheet".
if (previousSheetName === hideMultipleSheets) {
// you have moved out of the secret sheet - so, hide it:
onSheetChange(e); // Call custom sheet change trigger
}
}
}
function onOpen(e) {
saveActiveSheet();
}
我在这里留下一个简短的解释,以便如果有人需要此代码,他们知道如何修改它以便满足他们的需要。
1.在所有代码的开头,我们看到前 3 个变量。
在这种情况下,我们要隐藏 3 个工作表,这就是为什么只有 3 个变量。如果你想隐藏 5 个工作表,你应该有 5 个变量。
在这里,您可以随意命名它们。那么,引号中的文字就是您要隐藏的工作表的名称,因此您必须将其更改为工作表的名称。
示例:
var hideSheettt1 = 'Here you need to copy the name of your sheet';
2.在前 3 个变量之后,我们有 4 个变量 hideMultipleSheets
在这种情况下,我们将前 3 个 var 连接成一个 var,以便稍后在 onSelectionChange (e) 函数中重用它
在这里,您必须将 addFicha addGasto addIngreso 替换为您为第一个变量指定的名称。
继续第 1 点的示例,我们将使用 var hideSheettt1 = 'Here you need to copy the name of your sheet'; 作为参考。
例子:
var hideMultipleSheets = hideSheettt1 || hideSheettt2|| hideSheettt3;
3. 在 SheetChange (e) 函数中,您必须将前 3 个 var 中 .getSheetByName () 的 var 替换为您在整个开头创建的 var 的名称代码(第 1 点)。
例子:
var sheetToHide1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(hideSheettt1);
此时,您应该包含与要隐藏的工作表和在代码开头创建的变量一样多的变量。在这种情况下,我们要隐藏 3 张纸。但是如果我们想隐藏 5 张纸,我们必须有 5 个变量,每张纸一个。
我们还必须有相同数量的 hideSheet()