Удаление пустых строк в таблице - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок в написании скриптов Google Apps Script и пытаюсь самообучаться, начиная с создания общей таблицы c. Пока у меня есть:

  • сделал заголовок;
  • изменил фон;
  • изменил шрифт;
  • добавил проверку данных;
  • добавлены толстые внешние границы, а также другие границы
  • и одновременное сохранение максимум пяти строк и столбцов

image of the table applying what is listed above

Мой вопрос:

Как удалить пустые строки в диапазоне данных? До сих пор я пробовал несколько методов, но мне нравится иметь верхнюю строку в качестве границы, поэтому я не хочу удалять это. Это сценарий, который я написал до сих пор

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

Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 23 апреля 2020
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++);}});
}
...