2 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
解釋:
您需要將
row
數(shù)組中的每個(gè)元素轉(zhuǎn)換為小寫。為此,您需要使用map()和toLowerCase()。通過(guò)這種方式,您將應(yīng)用toLowerCase
到 的每個(gè)元素row
。修改將在這里:if?(row.map(r=>r.toLowerCase()).indexOf(arrayOfWords[j])?>?-1)
row['21','17']
不是有效的 JavaScript 對(duì)象。你不能像那樣對(duì)數(shù)組進(jìn)行切片。如果您的目標(biāo)是僅檢查列21
,17
然后使用此 if 語(yǔ)句:if?([row[21],row[17]].map(r=>r.toLowerCase()).indexOf(arrayOfWords[j])?>?-1)
注意這里
row[21]
是列V
,是工作表中的row[17]
列。R
記住 javascript 中的索引是從 開(kāi)始的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貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
已提供解決方案的替代方案
您可以簡(jiǎn)單地使用toLowerCase()- 這樣“Mietwohnung”將變成“mietwohnung”,并且可以毫無(wú)問(wèn)題地進(jìn)行比較。
因此,您可以對(duì)腳本進(jìn)行以下修改:
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++;
}
}
上面的腳本循環(huán)遍歷數(shù)據(jù)范圍中的所有值,因此添加了另一個(gè)循環(huán),然后使用該函數(shù)toLowerCase()檢查該值是否是arrayOfWords數(shù)組的一部分,如果需要,則刪除行。這里使用該found變量來(lái)指示該單詞是否已找到。
添加回答
舉報(bào)