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

标签 javascript google-apps-script google-sheets

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

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

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

function logRange() {
Logger.log(sheetRange)
}

返回 enter image description here

我想在最后从我的单元格数组中获取所有这些空白单元格,因为当我遍历这个数组时它会弄乱结果。

试过filter() and isNaN但这些解决方案并没有奏效。

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

我发现有趣的是,尽管这些空单元格显示为空数组,但 Apps 脚本似乎将它们视为具有值。我的条件应该忽略 imo... 例如。

else if (i > 0 && sheetRange[i] <= 0 && sheetRange[i-1] <= 0)

如何将空数组视为数字?

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

最佳答案

这个答案怎么样?

问题 1:

在您的电子表格中,如果所有列的最后一行相同或“F”列的最后一行最底部,这种修改如何?

来自:

var sheetRange = sheet.getRange("F2:F").getValues();

收件人:

var sheetRange = sheet.getRange(2, 6, sheet.getLastRow() - 1, 1).getValues();

或者如果“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)

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

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

问题 2:

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

来自:

else if (i > 0 && sheetRange[i] <= 0 && sheetRange[i-1] <= 0)

收件人:

else if (i > 0 && sheetRange[i][0] <= 0 && sheetRange[i-1][0] <= 0)

引用资料:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

关于javascript - 删除或忽略 .getRange() 返回的空单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57626165/

相关文章:

google-apps-script - 尝试自动打开由脚本创建的文档

javascript - 为什么我用xmlhttprequest抓取数据时,主键跳动很大?

javascript - 如何使用 JavaScript 删除加载 View 中的所有 Chrome 通知?

javascript - 将 HTML 插入用户字符串并在 React 中渲染(并避免 XSS 威胁)

javascript - 等到所有文件被异步读取(FileReader),然后运行代码

google-apps-script - 在新编辑器中查找应用脚本的过去版本

javascript - 不正确的范围高度,是 1 但应该是 344 - 当尝试使用 .setValues() 将范围带到另一张纸时

google-apps-script - 是否可以在 Google-docs 电子表格中定义新函数?

javascript - 比较 2 个不同电子表格中的 2 个数组,并将其补码写入第二个电子表格

google-sheets - 如何返回对命名范围的第一个元素的引用?