google-apps-script - 删除表中的空行
问题描述
我是 Google Apps Script 脚本编写的新手,并尝试通过开始制作通用表格来自学。到目前为止,我有:
- 做了一个标题;
- 改变了背景;
- 改变了字体;
- 添加了数据验证;
- 添加了厚厚的外部边框以及其他边框
- 并且在任何时候最多保留五行和五列
我的问题是:
如何删除数据范围中的空行?到目前为止,我已经尝试了多种方法,但我喜欢将顶行作为边框,所以不想删除它。这是我到目前为止写的脚本
function formatScriptLearning1() {
var ScriptLearning = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Script learning 1");
var Header = ScriptLearning.getRange("B2").getDataRegion(SpreadsheetApp.Dimension.COLUMNS);
var LastRow = ScriptLearning.getLastRow();
var MaxRows = ScriptLearning.getMaxRows();
var LastColumn = ScriptLearning.getLastColumn();
var MaxColumns = ScriptLearning.getMaxColumns();
var Range = ScriptLearning.getRange(2, 2, LastRow - 1, LastColumn - 1);
var Outside = Range
var DataVal = ScriptLearning.getRange(3, 7, LastRow - 1, 1);
var validation = SpreadsheetApp.newDataValidation().requireValueInList(['Yes', 'No'], true).build();
var RemainingRows = ScriptLearning.getRange(LastRow + 1, 7, MaxRows);
var RemainingColumns = ScriptLearning.getRange(2, LastColumn + 1, 1, 5);
Range.setBorder(true, true, true, true, true, true, null, SpreadsheetApp.BorderStyle.SOLID);
Outside.setBorder(true, true, true, true, true, null, null, SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
Header.setBorder(true, true, true, true, true, true, true, SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
Header.setFontSize(11).setBackground("#ea9999").setFontWeight("Bold").setFontLine("Underline").setFontFamily("Georgia");
if (MaxRows - LastRow != 0) {
ScriptLearning.deleteRows(LastRow + 1, MaxRows - LastRow);
}
if (MaxColumns - LastColumn != 0) {
ScriptLearning.deleteColumns(LastColumn + 1, MaxColumns - LastColumn);
}
DataVal.setDataValidation(validation);
ScriptLearning.insertRowsAfter(LastRow, 5);
ScriptLearning.insertColumnsAfter(LastColumn, 5);
RemainingRows.clearDataValidations().clearFormat();
RemainingColumns.clear();
任何帮助将不胜感激!
解决方案
function removeEmptyRows() {
const ss=SpreadsheetApp.getActive();
const sh=ss.getActiveSheet();
const rg=sh.getDataRange();
const vs=rg.getValues();
let d=0;
vs.forEach(function(r,i){if(r.join('').length==0) {sh.deleteRow(i+1-d++);}});
}
推荐阅读
- c++ - 链表插入函数通过引用发送参数误解
- r - 在 R Shiny 应用程序的多个表中渲染 Katex
- gnuradio - GNU Radio USRP 溢出
- python - 尴尬1; 如何将数组维度设置为变量?
- java - 在 jUnit 中使用 ParameterizedTest 时“进程以退出代码 -1 完成”
- sass - 编译 Svelte 3.38.2 和未使用的 Bootstrap 5 SCSS
- java - 如何在java控制台(mac)中输入多行输入
- css - 使用 vue 在某些浏览器中无法渲染动画
- asp.net - TextBox 不在 GridView 中发布值
- visual-studio-code - 编辑单个文件时,VS Code 的终端是否应该使用 CWD?