[英]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();
應該只是
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.