for-loop - 表单中的 Google 应用程序脚本。每周逐步隐藏行
问题描述
我有一个每周计划(顺便说一句,免费复制,你可以更改第一个日期,它会改变一整年)。
我需要每周隐藏 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();
}
它创建自定义菜单“脚本”,您可以通过菜单隐藏和显示最后 23 行。
推荐阅读
- sql - 按限制使用的顺序和偏移量未按预期顺序返回结果
- telegram - 如何将我收到的电报信息发送到电子邮件
- python - 在没有硬编码位置的情况下从 python 运行 perl
- sql - 如何按总和小于 x 对数据进行分组
- matlab - 如何在 MATLAB 中将 3D 动画线保存为视频或 gif
- javascript - 是否可以在功能性 React 组件中使用 Promise 的值?
- python - Django 视图有时会路由到错误的 URL
- amazon-web-services - 如何打印/调试数据源资源的所有可用字段?
- jmeter - 从 Jmeter 关联记录器记录中排除某些 URL
- c++ - C++ 重生函数