Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 从电子表格中删除空行_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 从电子表格中删除空行

Google apps script 从电子表格中删除空行,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个电子表格,我想删除复选框标记为TRUE的行的内容。如果删除这些行,则它们在其他行之间保持为空。现在我想以相同的顺序向上移动所有行,中间不要有空行 由于简单,我尝试了排序,但这会洗牌剩余的数据 function cleanRange() { var sheet = SpreadsheetApp.getActive().getSheetByName('Open'); var data = sheet.getRange('E:E').getDisplayValues(); var range

我有一个电子表格,我想删除复选框标记为TRUE的行的内容。如果删除这些行,则它们在其他行之间保持为空。现在我想以相同的顺序向上移动所有行,中间不要有空行

由于简单,我尝试了排序,但这会洗牌剩余的数据

function cleanRange() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Open');
var data = sheet.getRange('E:E').getDisplayValues();
var range = [];
data.forEach(function(e, i){
  if (e[0] == "TRUE") range.push(("C" + (i + 1)),("D" + (i + 1)),("E" + (i + 1)) );
});
  sheet.getRangeList(range).clearContent();
  sheet.sort(3, false);}
目标: 用于删除复选框设置为“TRUE”的行的脚本


代码:
说明: 当前脚本正在清除每行的内容,然后尝试对列进行排序。这会导致由于排序步骤而重新排列数据

相反,您可以删除有问题的行并完全删除排序步骤

我添加了一个
for
语句来从下到上扫描数组(如果从上到下扫描,则会删除有效数据),然后添加一个
if
语句来检查值是否为真。当满足
if
语句时,将删除相应的行


参考:

您正在清除内容,而不是删除行。您最好调整此脚本以使用
deleteRow()
,而不是清除内容然后进行排序。或者,我会有一个用于写入和更新的所有/原始数据的工作表,然后有另一个带有选择条件的工作表,并作为查询函数的结果进行排序。没问题,如果这个答案已经解决了你的问题,请考虑将它标记为接受。这可能有助于解决同一问题的未来用户更快地找到解决方案。
function deleteEmptyRows() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('blank');
  var data = sheet.getRange('E:E').getDisplayValues();
  for (i = data.length - 1; i >= 2; i--) {
    if (data[i][0] === 'TRUE') {
      sheet.deleteRow(i + 1);
    }
  }
}