删除或忽略 .getRange() 返回的空单元格

Mr.*_*. J 1 javascript google-sheets google-apps-script

因此,我在工作表中有一列数据,我正在使用应用程序脚本函数对其进行迭代。

问题是我的工作表末尾有许多空单元格,这些单元格[]在我使用时呈现.getRange()

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("AUD Data");
var sheetRange = sheet.getRange("F2:F").getValues();

function logRange() {
Logger.log(sheetRange)
}
Run Code Online (Sandbox Code Playgroud)

退货 在此输入图像描述

我想从单元格数组的末尾获取所有这些空白单元格,因为当我循环该数组时,它会扰乱结果。

尝试过filter() 和 isNaN但这些解决方案不起作用。

理想情况下,我想在循环之前删除空数组,但是在条件下忽略它们的方法也可以。

我发现有趣的是,即使这些空单元格显示为空数组,Apps Script 似乎也将它们视为具有值。我的条件应该忽略我......例如。

else if (i > 0 && sheetRange[i] <= 0 && sheetRange[i-1] <= 0)
Run Code Online (Sandbox Code Playgroud)

如何将空数组视为数字?

注意:我可以通过删除工作表中的空行来解决此问题,但更愿意使用代码来完成此操作。

Tan*_*ike 5

这个答案怎么样?

问题一:

在您的电子表格中,如果所有列的最后一行相同或者“F”列的最后一行位于最底部,那么此修改怎么样?

从:

var sheetRange = sheet.getRange("F2:F").getValues();
Run Code Online (Sandbox Code Playgroud)

到:

var sheetRange = sheet.getRange(2, 6, sheet.getLastRow() - 1, 1).getValues();
Run Code Online (Sandbox Code Playgroud)

或者如果“F”列的最后一行与其他列的最后一行不同,那么下面修改后的脚本怎么样?

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("AUD Data");
var sheetRange = sheet.getRange("F2:F").getValues();
for (var i = sheetRange.length - 1; i >= 0; i--) {
  if (sheetRange[i][0]) {
    sheetRange.splice(i + 1, sheetRange.length - (i + 1));
    break;
  }
}
Logger.log(sheetRange)
Run Code Online (Sandbox Code Playgroud)

或者,如果您还想删除数组中间的空元素,那么下面的脚本怎么样?

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("AUD Data");
var sheetRange = sheet.getRange("F2:F").getValues().filter(String);
Logger.log(sheetRange)
Run Code Online (Sandbox Code Playgroud)

问题2:

关于else if (i > 0 && sheetRange[i] <= 0 && sheetRange[i-1] <= 0),从你的脚本中,我认为你可能会使用二维数组来处理这种情况。如果sheetRange是 检索到的值getValues(),则它是二维数组。并getRange("F2:F")用于此。那么这个修改怎么样呢?

从:

else if (i > 0 && sheetRange[i] <= 0 && sheetRange[i-1] <= 0)
Run Code Online (Sandbox Code Playgroud)

到:

else if (i > 0 && sheetRange[i][0] <= 0 && sheetRange[i-1][0] <= 0)
Run Code Online (Sandbox Code Playgroud)

参考:

如果我误解了你的问题并且这不是你想要的方向,我很抱歉。