簡體   English   中英

刪除或忽略.getRange()返回的空單元格

[英]Removing or Ignoring Empty Cells Returned by .getRange()

因此,我在工作表中有一列數據,我正在使用應用程序腳本函數進行迭代。

問題是我的工作表的末尾有許多空單元格,當我使用.getRange()時,它們呈現為[]

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

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

返回 在此處輸入圖片說明

我想從單元格數組中獲取所有這些空白單元格的末尾,因為當我遍歷此數組時,它會弄亂結果。

嘗試過filter()和isNaN,但是這些解決方案不起作用。

理想情況下,我想在循環之前刪除空數組,但是在某種情況下忽略它們的方法也可以。

我發現有趣的是,即使這些空單元格顯示為空數組,Apps Script似乎也將它們視為具有值。 我的條件應該忽略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) ,從您的腳本來看,我認為您可能會使用2維數組來處理這種情況。 如果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)

參考文獻:

如果我誤解了您的問題,而這不是您想要的方向,我深表歉意。

過濾器中的所有情況都應通過一個簡單的真實陳述來消除,但這將顯式檢查以確保所有這些情況都不會發生。

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

sheetRange = sheetRange.filter(sheet => sheet != null && sheet != 'undefined' && sheet.trim() != '');

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM