Продолжайте получать Извините, невозможно удалить все не замороженные строки - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть скрипт в Google Apps Script, скрипт работает нормально, но я продолжаю получать

Извините, невозможно удалить все строки без застывших строк 70

Вот соответствующая часть кода:

  //start delete rows
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  var rowsDeleted = 0;
  for (var i = 0; i+1 <= numRows - 1; i++) {
    var row = values[i+1];
    if (row > '') { // This searches all cells in columns A (change to row[1] for columns B and so on) 
  and deletes row if cell is empty or has value 'delete'.
      sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
      rowsDeleted++;
    }
  };
  //end delete rows

  function onOpen() {  
  var menu = [    
    { name: "? Help and Support »",    functionName: "help"},
    null,
    { name: "Step 1: Authorize",   functionName: "init"      },
    { name: "Step 2: Schedule Reports", functionName: "configure" },
    null,
    { name: "? Uninstall (Stop)",    functionName: "reset"     },
    null
  ];  
  SpreadsheetApp.getActiveSpreadsheet()
  .addMenu("? Drive Activity Report", menu);
  }

  function help() {
  var html = HtmlService.createHtmlOutputFromFile('help')
  .setTitle("Google Scripts Support")
  .setWidth(400)
  .setHeight(160);
  var ss = SpreadsheetApp.getActive();
  ss.show(html);
  }

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

Я включаю копию отчета об ошибках, который я получаю каждый день, относительно не замороженных строк, как указано в моем последнем комментарии, нет ошибок ни в одном из сценарий регистрирует. изображение ежедневного отчета по не замороженным строкам

Ответ, как представляется, заключается в том, что строки должны быть заморожены перед удалением, я добавил код замораживания, но я не уверен если это сейчас правильно

//start delete rows
function deleteRows() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();
     var numRowsFr = 1;
     sheet.setFrozenRows(numRowsFr);
  var rowsDeleted = 0;
  for (var i = 0; i <= numRows - 1; i++) {
    var row = values[i];
    if (row[0] == 'delete' || row[0] == '') { // This searches all cells in columns A (change to row[1] for columns B and so on) and deletes row if cell is empty or has value 'delete'.
      sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
      rowsDeleted++;
    }
  }
};

//end delete rows

Ответы [ 3 ]

1 голос
/ 19 февраля 2020

Удаление строк

function deletingRows() {
  var sh=SpreadsheetApp.getActiveSheet();
  var v=sh.getDataRange().getValues();
  var d=0;
  v.forEach(function(r,i,a){if(!r[0] || r[0]=='delete'){sh.deleteRow(i+1-d++)}}); 
}
0 голосов
/ 18 марта 2020

Решение состоит в том, что в моей электронной таблице не было строк, поэтому скрипт пытался удалить пустую строку.

Я просто добавил строку в позицию 1, и проблема решена.

0 голосов
/ 27 февраля 2020

Это можно исправить, переместив строки удаления в начало скрипта после объявлений, но до формирования и отправки электронного письма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...