我有一个非常简单的脚本,映射到自定义菜单:
function CollapseGroups() {
SpreadsheetApp.getActiveSheet().collapseAllRowGroups();
SpreadsheetApp.getActiveSheet().collapseAllColumnGroups();
}
它运行完美。但我现在想将其调整为每晚在每张纸上运行。我知道
getActiveSheet()
无法与时间触发器配合使用,因为不会有活动工作表。
当我尝试按 id
getspreadsheet
并循环遍历所有工作表时,.CollapseAllRowGroups()
出错。我没有能力找出问题所在
使用
Spreadsheet.getSheets()
和 Array.forEach()
,如下所示:
'use strict';
/**
* Collapses row and column groups across all tabs in a spreadsheet.
*
* @param {Spreadsheet} ss Optional. The spreadsheet where to collapse all groups.
*/
function collapseAllGroupsInSpreadsheet(ss = SpreadsheetApp.getActive()) {
// version 1.0, written by --Hyde, 28 August 2024
// - see https://stackoverflow.com/a/78922864/13045193
const actions = ['collapseAllRowGroups', 'collapseAllColumnGroups'];
ss.getSheets().forEach(sheet => {
actions.forEach(action => {
try {
sheet[action]();
} catch (error) {
ss.toast(error.message);
console.log(error);
}
});
});
}