這個反向回圈給了我錯誤TypeError: Cannot read property '0' of undefined,我找不到原因。
這是代碼部分:
function formatBoqPipework() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const boqPipeworkSheet = ss.getSheetByName('BOQ Pipework');
const boqPipeworkRng = boqPipeworkSheet.getRange(5, 1, boqPipeworkSheet.getLastRow(), 14);
const boqPipeworkValues = boqPipeworkRng.getValues();
let lastRow = boqPipeworkSheet.getLastRow();
for (let a = boqPipeworkValues.length; a >= 0; a--) {
Logger.log(a)
if (boqPipeworkValues[a][0] == 'Pipework' || boqPipeworkValues[a][0] == '') {
//let row = a 5
boqPipeworkSheet.deleteRow(a 5);
}
}
}
感謝任何幫助。
問候, 安東尼奧
uj5u.com熱心網友回復:
陣列是基于 0 的, .length 會給你“人類”的長度。所以在下面的例子中(什么會出錯)你將 4 分配給 i 并且 arr[4] 不存在。因為如果從 0 開始計數,陣列編號最多為 3。
錯誤:
function test(){
const arr = [[1,2],[2,2],[3,2],[4,2]];
console.log(arr.length) // Returns 4
for (let i = arr.length; i >= 0; i--){
console.log(arr[i][0])
}
}
所以在 .length 后添加一個 -1:
function test(){
const arr = [[1,2],[2,2],[3,2],[4,2]];
for (let i = arr.length - 1; i >= 0; i--){
console.log(arr[i][0])
}
}
uj5u.com熱心網友回復:
你也可以這樣做:
function formatBoqPipework() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName('BOQ Pipework');
const rg = sh.getRange(5, 1, sh.getLastRow(), 14);
const vs = rg.getValues();
let d = 0;
for (let i = 0; i < vs.length; i ) {
if (vs[i][0] == 'Pipework' || vs[i][0] == '')sh.deleteRow(i 5 - d );
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/404517.html
標籤:
