Google 工作表中的应用程序脚本。每周逐渐隐藏行
Google apps script in sheets. Progressively hide rows each week
我有一个weekly planner(顺便说一下,免费复制,你可以更改第一个日期,它会在全年更改)。
我每周需要隐藏 23 行,以便显示当前周。
首先它将是 23 行,下周将隐藏到第 46 行,接下来的一周将隐藏到 69 行,等等。我尝试在另一个 for.
中使用 for 语句循环它
function hideRowsWeekStart() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Nedēļas_plānotājs');
// Hides rows up to certain row (rowIndex, finalRow)
for (finalRow = 1; finalRow <= 23; finalRow++) {
for(n = 1; n < 23; n++) {
sheet.hideRows(1,finalRow[n])
}
}
}
但是它抛出了这个
尝试了 for 的单个实例,它只隐藏了 23 行。
for(n = 1; n < 23; n++) {
sheet.hideRows(1, n)
}
如果只删除行会更容易,因为接下来的行将从 1 开始重新计算,但我需要隐藏这些行,以防我可能需要回顾并取消隐藏它们以解决未完成或 WIP 的问题。
完成工作的基本代码在这里:
function hide_23_rows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Nedēļas_plānotājs');
var last_row = sheet.getLastRow();
// get the last unhidden row
for (var row = 1; row < last_row; row += 23) {
if (!sheet.isRowHiddenByUser(row)) break;
}
// hide next 23 rows after first unhidden row
sheet.hideRows(row, 23);
}
制作取消隐藏上周行的功能可能是有意义的。并将这两个功能添加到自定义菜单中。这样您就可以随时手动隐藏和显示前一周。如果您需要,请告诉我。
更新
这里是代码的扩展变体:
function hide_23_rows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Nedēļas_plānotājs');
var last_row = sheet.getLastRow();
// get last unhidden row
for (var row = 1; row < last_row; row += 23) if (!sheet.isRowHiddenByUser(row)) break;
// hide next 23 rows
sheet.hideRows(row, 23);
}
function show_23_rows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Nedēļas_plānotājs');
var last_row = sheet.getLastRow();
// get last unhidden row
for (var row = 1; row < last_row; row += 23) if (!sheet.isRowHiddenByUser(row)) break;
if (row < 24) return; // no hidden rows on the sheet
// show previous 23 rows
sheet.showRows(row-23, 23);
}
// -----------------------------------------------
// custom menu
function onOpen() {
SpreadsheetApp.getUi().createMenu(' Scripts')
.addItem(' Hide previous week', 'hide_23_rows')
.addItem(' Show previous week', 'show_23_rows')
.addToUi();
}
它创建自定义菜单 'Scripts',您可以通过菜单隐藏和显示最后 23 行。
我有一个weekly planner(顺便说一下,免费复制,你可以更改第一个日期,它会在全年更改)。
我每周需要隐藏 23 行,以便显示当前周。 首先它将是 23 行,下周将隐藏到第 46 行,接下来的一周将隐藏到 69 行,等等。我尝试在另一个 for.
中使用 for 语句循环它function hideRowsWeekStart() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Nedēļas_plānotājs');
// Hides rows up to certain row (rowIndex, finalRow)
for (finalRow = 1; finalRow <= 23; finalRow++) {
for(n = 1; n < 23; n++) {
sheet.hideRows(1,finalRow[n])
}
}
}
但是它抛出了这个
尝试了 for 的单个实例,它只隐藏了 23 行。
for(n = 1; n < 23; n++) {
sheet.hideRows(1, n)
}
如果只删除行会更容易,因为接下来的行将从 1 开始重新计算,但我需要隐藏这些行,以防我可能需要回顾并取消隐藏它们以解决未完成或 WIP 的问题。
完成工作的基本代码在这里:
function hide_23_rows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Nedēļas_plānotājs');
var last_row = sheet.getLastRow();
// get the last unhidden row
for (var row = 1; row < last_row; row += 23) {
if (!sheet.isRowHiddenByUser(row)) break;
}
// hide next 23 rows after first unhidden row
sheet.hideRows(row, 23);
}
制作取消隐藏上周行的功能可能是有意义的。并将这两个功能添加到自定义菜单中。这样您就可以随时手动隐藏和显示前一周。如果您需要,请告诉我。
更新
这里是代码的扩展变体:
function hide_23_rows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Nedēļas_plānotājs');
var last_row = sheet.getLastRow();
// get last unhidden row
for (var row = 1; row < last_row; row += 23) if (!sheet.isRowHiddenByUser(row)) break;
// hide next 23 rows
sheet.hideRows(row, 23);
}
function show_23_rows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Nedēļas_plānotājs');
var last_row = sheet.getLastRow();
// get last unhidden row
for (var row = 1; row < last_row; row += 23) if (!sheet.isRowHiddenByUser(row)) break;
if (row < 24) return; // no hidden rows on the sheet
// show previous 23 rows
sheet.showRows(row-23, 23);
}
// -----------------------------------------------
// custom menu
function onOpen() {
SpreadsheetApp.getUi().createMenu(' Scripts')
.addItem(' Hide previous week', 'hide_23_rows')
.addItem(' Show previous week', 'show_23_rows')
.addToUi();
}
它创建自定义菜单 'Scripts',您可以通过菜单隐藏和显示最后 23 行。