首页 > 解决方案 > 删除表中的空行

问题描述

我是 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();

任何帮助将不胜感激!

标签: google-apps-scriptgoogle-sheetsrowdeleting

解决方案


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++);}});
}

推荐阅读