2 回答

TA貢獻1799條經驗 獲得超8個贊
解釋:
您需要將
row
數組中的每個元素轉換為小寫。為此,您需要使用map()和toLowerCase()。通過這種方式,您將應用toLowerCase
到 的每個元素row
。修改將在這里:if?(row.map(r=>r.toLowerCase()).indexOf(arrayOfWords[j])?>?-1)
row['21','17']
不是有效的 JavaScript 對象。你不能像那樣對數組進行切片。如果您的目標是僅檢查列21
,17
然后使用此 if 語句:if?([row[21],row[17]].map(r=>r.toLowerCase()).indexOf(arrayOfWords[j])?>?-1)
注意這里
row[21]
是列V
,是工作表中的row[17]
列。R
記住 javascript 中的索引是從 開始的0
。即,0
是 列A
,1
是 列B
等等。
解決方案:
function sort() {?
? var sheet = SpreadsheetApp.getActiveSheet();?
? var rows = sheet.getDataRange();?
? var values = rows.getValues();?
? var rowsDeleted = 0;?
? var arrayOfWords = ['m?belübernahme','k?nnen übernommen werden','caravan','wohnwagen']?
? for (var i = values.length - 1; i >= 0; i--) {??
? ? var row = values[i];?
? ? for (var j = 0; j < arrayOfWords.length; j++) {? ??
? ? ? if (row.map(r=>r.toLowerCase()).indexOf(arrayOfWords[j]) > -1) {? ? ? ? ?
? ? ? ? sheet.deleteRow(i+1);? ? ?
? ? ? ? rowsDeleted++;? ?
? ? ? ? break;? ? ? ? ?
? ? ? }
? ? }?
? }?
};

TA貢獻1946條經驗 獲得超3個贊
已提供解決方案的替代方案
您可以簡單地使用toLowerCase()- 這樣“Mietwohnung”將變成“mietwohnung”,并且可以毫無問題地進行比較。
因此,您可以對腳本進行以下修改:
for (let i = values.length - 1; i >= 0; i--) {
var row = values[i];
var found = false;
for (let k = 0; k < row.length; k++)
for (let j = 0; j < arrayOfWords.length; j++)
if (row[k].toString().toLowerCase().indexOf(arrayOfWords[j]) > -1)
found = true;
if (found == true) {
sheet.deleteRow(i + 1);
rowsDeleted++;
}
}
上面的腳本循環遍歷數據范圍中的所有值,因此添加了另一個循環,然后使用該函數toLowerCase()檢查該值是否是arrayOfWords數組的一部分,如果需要,則刪除行。這里使用該found變量來指示該單詞是否已找到。
添加回答
舉報