Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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/bash/16.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
Javascript 忽略Google应用程序脚本中循环中的空行_Javascript_Arrays_Google Apps Script - Fatal编程技术网

Javascript 忽略Google应用程序脚本中循环中的空行

Javascript 忽略Google应用程序脚本中循环中的空行,javascript,arrays,google-apps-script,Javascript,Arrays,Google Apps Script,我不熟悉googleapps脚本,我试图忽略for循环中的空行,但我仍然在日志中获取空行。这是我的密码 function getNonEmptyRows() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet1 = ss.getSheetByName("Bldng4"); var lr = sheet1.getLastRow() - 17; for (var i = 1; i < lr;

我不熟悉
googleapps脚本
,我试图忽略for循环中的空行,但我仍然在
日志
中获取空行。这是我的密码

function getNonEmptyRows() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet1 = ss.getSheetByName("Bldng4");

    var lr = sheet1.getLastRow() - 17;

    for (var i = 1; i < lr; i++) {
        var singleRow = sheet1.getRange(i, 1, 1, sheet1.getLastColumn()).getValues();
        if (singleRow.length > 0) {
            Logger.log(singleRow);
        }
    }
}
函数getNonEmptyRows(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheet1=ss.getSheetByName(“Bldng4”); var lr=sheet1.getLastRow()-17; 对于(变量i=1;i0){ Logger.log(单行); } } } 如何从循环中获取唯一的非空行?我非常需要这个帮助。谢谢。

您使用的
getValues()
方法总是返回二维数组,无论单元格的内容是什么。有几种方法可以获取单元格内容,其中之一是将范围内容字符串化(将矩阵转换为单个字符串),删除逗号(以及最终的“不可见”空格),并检查结果字符串的长度

替换代码可以如下所示:

var singleRow = sheet1.getRange(i, 1, 1, sheet1.getLastColumn()).getValues().toString().replace(',','').replace(' ','');
也就是说,这段代码效率非常低,因为它在每次循环迭代中都使用SpreadSheetApp服务,这一过程特别慢。
您可以在有关的文档中找到更好的方法。

我正在寻找类似问题的解决方案,以下是我所做的: 首先,我发现了如何创建GoogleApps脚本以消除重复行。 接下来,我对其进行如下修改以消除空行:

function removeEmptyRows() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("settings");
  var data = sheet.getRange("A2:D").getValues();
  var newData = new Array();
  for(i in data){
    var row = data[i];
    var empty = false;
    for(i in data){
      if(row.toString() == ",,,"){
        empty = true;
      }
    }
    if(!empty){
      newData.push(row);
    }
  sheet.getRange(2, 6, newData.length, newData[0].length).setValues(newData);
};
如您所见,它采用A2:D范围,删除空行,然后将没有空行的过滤数据粘贴到范围F2:I中。 您可以尝试使用此脚本,但可能需要将其调整为数组的“宽度”。为此,请更改以下字符串中的逗号数:

if(row.toString() == ",,,"){
编辑: 我稍微修改了脚本以自动调整数组的宽度:

function removeEmptyRows() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("settings");
  var range = sheet.getRange("A2:C");
  var data = range.getValues();
  var dataWidth = range.getWidth();
  var newData = new Array();
  if (dataWidth<=1) {
    var stringToCompare = '';
  }else{
    var stringToCompare = ',';
    for (var i=0;i<dataWidth-2;i++) stringToCompare+=","
  };
  for(i in data){
    var row = data[i];
    var empty = false;
    for(i in data){
      if(row.toString() == stringToCompare){
        empty = true;
      }
    }
    if(!empty){
      newData.push(row);
    }
  }
  sheet.getRange(2, 6, newData.length, newData[0].length).setValues(newData);
};
函数removemptyrows(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“设置”);
var范围=sheet.getRange(“A2:C”);
var data=range.getValues();
var dataWidth=range.getWidth();
var newData=newarray();

if(dataWidthHi)。这个答案可能是正确的,但最好解释一下代码的作用。
var range_data = sheet1.getRange("A2:A").getValues().filter(function(array){
    return array != ''
})