簡體   English   中英

識別數組中的數字和谷歌應用程序腳本中的空值

[英]Identifying number in an array and empty values in google apps script

我在名為Sno. (序列號)。 我正在嘗試閱讀該專欄並確定 -

-如果從列中的第一個單元格到最后一個填充行有任何空單元格,並且

-如果存在的值只是數字

這將幫助我進行 2 次驗證,以識別單元格值之間的空單元格,比如如果輸入了 1 - 200 個數字,那么在這兩個數字之間的系列中沒有遺漏,如果存在的值都是數字

在此處輸入圖像描述

我嘗試了以下檢查但沒有正確 -

unction siteShieldmaps() {
  SS = SpreadsheetApp.getActiveSpreadsheet();
  var SS_m = SS.getSheetByName("Cleanup sheet");
  var LAST_ROW = SS_m.getLastRow();
  console.log(LAST_ROW);
  var Sno_values = SS_m.getRange(`A1:A${LAST_ROW}`).getDisplayValues().toString();
  console.log(typeof Sno_values);
  
  var result = isNumberOrEmpty(Sno_values);
  console.log(result);
    
}

  function isNumberOrEmpty(array) {
  var result = [];
  for (var i = 0; i < array.length; i++) {
    if (array[i] === "") {
      result.push("empty");
    } else if (!isNaN(array[i])) {
      result.push("number");
    } else {
      result.push("not a number");
    }
  }
  return result;
}

請指導

我真的會發表評論而不是發帖,但我沒有足夠的聲譽。

在這行代碼中,您實際上得到的不是二維數組,而是字符串。

var Sno_values = SS_m.getRange(`A1:A${LAST_ROW}`).getDisplayValues().toString();

toString()

應該只是

var Sno_values = SS_m.getRange(`A1:A${LAST_ROW}`).getDisplayValues()

此外,正如 TheWizEd 所說,您正在使用二維數組,因此您的 function 應該是:

  function isNumberOrEmpty(array) {
  var result = [];
  for (var i = 0; i < array.length; i++) {
    if (array[i][0] === "") {
      result.push("empty");
    } else if (!isNaN(array[i][0])) {
      result.push("number");
    } else {
      result.push("not a number");
    }
  }
  return result;
}

添加到@TheWizEd的評論中,代碼的問題之一是如何調用數組。 我對代碼進行了其他更改以確保完成兩個驗證。

  • 確保是否有任何空單元格。
  • 確保所有值都是數字。

這是我為測試制作的表格:

樣品表

這是示例代碼:

function siteShieldmaps() {
  ss = SpreadsheetApp.getActiveSpreadsheet();
  let ss_m = ss.getSheetByName("Sheet1");
  let last_row = ss_m.getLastRow();
  console.log(last_row);
  // change how the range is call from "A1:A${LAST_ROW} to "2,1,last_row"
  // The range "2,1,last_row" will exclude the "A1" cell
  // Also, I change "getDisplayValues().toString();" to "getValues()"
  // if you keep "getDisplayValues().toString();" 
  //it will show some cells as not number when they are
  let sno_values = ss_m.getRange(2,1,last_row).getValues();
 
  let result = isNumberOrEmpty(sno_values);
  console.log(result);
    
}

  function isNumberOrEmpty(array) {
  let result = [];
  for (let i = 0; i < array.length; i++) {
    // create the variable row instead of using array[i][0]
    // so I use row[0] in the if statement
    let row = array[i]
    if (row[0] === "") {
      result.push("empty");
    } else if (!isNaN(row[0])) {
      result.push("number");
    } else {
      result.push("not a number");
    }
  }
  return result;
}

結果將是:

執行日志

暫無
暫無

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

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