仅删除 Google 工作表中的空白单元格(不是行)

Removing only blank cells (not rows) in Google Sheets

能否请您协助编写一个简单的 Google 表格脚本,让我可以制作一个 sheet,如下所示:

点击 1 次自动将其转换为此(即 - 不是删除 ROWS,而是仅删除空单元格并向上移动):

使用:

=ARRAYFORMULA({A1:C1; TRANSPOSE(SPLIT(TRANSPOSE(QUERY(A2:C,,999^99)), " "))})

你可以使用这个方法:

var sheet = SpreadsheetApp.getActive();
sheet.getRange('A12').deleteCells(SpreadsheetApp.Dimension.COLUMNS); // Cell left
sheet.getRange('A12').deleteCells(SpreadsheetApp.Dimension.ROWS);  //cell up

var sheet = SpreadsheetApp.getActive();
var range = sheet.getRange('A12');
range.deleteCells(SpreadsheetApp.Dimension.COLUMNS);
range.deleteCells(SpreadsheetApp.Dimension.ROWS);

您必须从最后一行开始迭代,然后从底部开始逐个检查 A、B、C 列或其他单元格,如果空白则执行 range.deleteCells(SpreadsheetApp.Dimension.ROWS);

您要求的样本:

function adder()
 {
   var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet2');
   var lastRow = sheet.getLastRow(); 
   for (var i = 1; i < lastRow+1; i++){
     if((sheet.getRange('A'+(lastRow-i+1)).getValue()) + ""=="")
     {
       sheet.getRange('A'+(lastRow-i+1)).deleteCells(SpreadsheetApp.Dimension.ROWS);
     }

     //var valueB = sheet.getRange('B'+(lastRow-i+1)).getValue() + "";
     if((sheet.getRange('B'+(lastRow-i+1)).getValue())=="")
     {
       sheet.getRange('B'+(lastRow-i+1)).deleteCells(SpreadsheetApp.Dimension.ROWS);
     }

     //var valueC = sheet.getRange('C'+(lastRow-i+1)).getValue() + "";
     if((sheet.getRange('C'+(lastRow-i+1)).getValue())=="")
     {
       sheet.getRange('C'+(lastRow-i+1)).deleteCells(SpreadsheetApp.Dimension.ROWS);
     }
   }
 }