Как удалить определенные ячейки с помощью скрипта приложения?

Я намерен иметь возможность удалить, например, ячейку F1, не удаляя ячейку F2.

var sheet = ss.getSheetByName("Questionário DQSA");  
  var range = sheet.getRange("B1:U1");
  range.clearContent();

Здесь я очищаю содержимое этих ячеек, но я хотел бы знать, как их удалить.


person Bernardo    schedule 29.07.2019    source источник


Ответы (2)


Вы можете использовать Range.deleteCells(Dimension):

var sheet = ss.getSheetByName("Questionário DQSA");  
  var range = sheet.getRange("F1");
  range.deleteCells(SpreadsheetApp.Dimension.COLUMNS);//F2 becomes the new F1
person TheMaster    schedule 29.07.2019
comment
Спасибо, это помогло! - person Bernardo; 29.07.2019
comment
Он работает, но я хотел, чтобы функция никогда не прекращала удалять ячейки, если они были пустыми. - person Bernardo; 30.07.2019
comment
@Bernardo Пожалуйста, задайте новый вопрос. - person TheMaster; 30.07.2019
comment
Я только что сделал, спасибо - person Bernardo; 30.07.2019

Если вы хотите свернуть свой собственный:

function deleteCell(shift) {
  var shift=shift || "left"; //left or up
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var cell=ss.getActiveCell();
  if(shift=="left") {
    var rg=sh.getRange(cell.getRow(),1,1,sh.getLastColumn());
    var vA=rg.getValues();
    var row=vA[0];
    row.splice(cell.getColumn()-1,1);
    rg.clearContent();
    sh.getRange(cell.getRow(),1,1,row.length).setValues([row]); 
  }
  if(shift=="up") {
    var rg=sh.getRange(1,cell.getColumn(),sh.getLastRow(),1);
    var vA=rg.getValues();
    var row=vA.map(function(r){return r[0]});
    row.splice(cell.getRow()-1,1);
    var col=[];
    row.forEach(function(e){
      col.push([e]);
    });
    rg.clearContent();
    sh.getRange(1,cell.getColumn(),col.length,1).setValues(col);
  }
}

Конечно, теперь, когда я знаю об этом новом методе, писать его стало намного проще. Спасибо @TheMaster

function deleteCell(shift) {
  var shift=shift || "left";
  var ss=SpreadsheetApp.getActive();
  var cell=ss.getActiveCell();
  if(shift=="left") {
    cell.deleteCells(SpreadsheetApp.Dimension.COLUMNS);
  }
  if(shift=="up") {
    cell.deleteCells(SpreadsheetApp.Dimension.ROWS);
  }
}
person MiMi    schedule 29.07.2019