我在 Google 作業表中創建了一個自定義選單,可以根據人們有興趣查看的指標來隱藏/取消隱藏列。它作業得很好,但它只適用于“活動表”。我希望腳本隱藏作業表中的某些列并隱藏另一個作業表中的其他列。
自定義選單應包含 3 個專案:“Karen view”、“Patrick View”和“View all”
- 凱倫觀點:
- 隱藏作業表 1 中的第 1 列和第 3 列
- 隱藏作業表 2 中的第 4 列和第 5 列
- 帕特里克觀點:
- 隱藏作業表 1 中的第 1、2 和 4 列
- 隱藏作業表 2 中的第 4 列和第 5 列
- 查看全部:
- 取消隱藏所有作業表中的所有列
在我目前正在使用的腳本下方:(我對如何使用 getactivespreadsheet 和 getactivesheet 有點困惑,這就是我遇到的問題)
var sh = SpreadsheetApp.getActiveSheet()
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('Hide metrics')
.addItem('Patrick View', 'hideColumnsP')
.addItem('Karen View', 'hideColumnsK')
.addItem('View all', 'showColumns')
.addToUi();
}
function showColumns() {
sh.unhideColumn(sh.getRange(1, 1, 1, sh.getLastColumn()))
}
function hideColumnsK(){
showColumns()
sh.hideColumns(1)
sh.hideColumns(3)
}
function hideColumnsP(){
showColumns()
sh.hideColumns(1,2)
sh.hideColumns(4)
}
在此先感謝您的幫助
uj5u.com熱心網友回復:
在您的情況下,以下修改后的腳本怎么樣?
修改后的腳本:
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('Hide metrics')
.addItem('Patrick View', 'hideColumnsP')
.addItem('Karen View', 'hideColumnsK')
.addItem('View all', 'showColumns')
.addToUi();
}
function showColumns() {
const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
showColumnsInAllSheets_(sheets);
}
function hideColumnsK() {
const obj = [{ sheetName: "Sheet1", hide: [1, 3] }, { sheetName: "Sheet2", hide: [4, 5] }];
sample_(obj);
}
function hideColumnsP() {
const obj = [{ sheetName: "Sheet1", hide: [1, 2, 4] }, { sheetName: "Sheet2", hide: [4, 5] }];
sample_(obj);
}
function sample_(obj) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheets = ss.getSheets();
showColumnsInAllSheets_(sheets);
const sheetObj = sheets.reduce((o, s) => (o[s.getSheetName()] = s, o), {});
obj.forEach(({ sheetName, hide }) => {
if (sheetObj[sheetName]) {
hide.forEach(h => sheetObj[sheetName].hideColumns(h, 1));
}
});
}
function showColumnsInAllSheets_(sheets) {
sheets.forEach(s => s.showColumns(1, s.getMaxColumns()));
}
在此修改中,可以通過為作業表和列資訊提供物件來隱藏特定作業表的特定列。
而且,在這個修改中,當
showColumns()運行時,所有作業表的所有列都會顯示出來。如果要更改作業表名稱和列,請
obj在函式hideColumnsK和中進行修改hideColumnsP。
參考:
- 減少()
- forEach()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/460003.html
