如果這真的很基本,我很抱歉,但我已經搜索了很多并且找不到答案。我正在嘗試撰寫一個腳本,該腳本將清除而不洗掉特定單元格的內容(這些是基于列的,即 A、B、C 等)從另一個串列中查看值。就像電話 1 和電話 3 有一個號碼串列一樣,這個串列應該查看另一個串列,如果在串列中找到任何匹配的號碼,腳本應該清除單元格中的內容但不洗掉單元格。


這些影像可能有助于更好地理解。我設法找到了一種方法,既可以清除行/單元格,又可以將非空單元格推到上方,這樣它們就不會停留在同一位置。我還嘗試了其他方法“if(keep){ resultArray.push(values1[n])};” 如 shift、setValue、pop 等,但隨后彈出長度錯誤(型別錯誤:無法讀取未定義的屬性“長度”)。一點幫助對我來說會很大。謝謝
function deletenumber21() {
var s1 = SpreadsheetApp.openById("148wFAJnlJzZVStawtvyLIJJiZYe2HJ-
81WPJ5V2afWI").getSheetByName('Sheet1');
var s2 = SpreadsheetApp.openById("148wFAJnlJzZVStawtvyLIJJiZYe2HJ-
81WPJ5V2afWI").getSheetByName('DNC');
var values1 = s1.getDataRange().getValues();
var values2 = s2.getDataRange().getValues();
var resultArray = [];
for(var n in values1){
var keep = true
for(var p in values2){
if( values1[n][20] == values2[p][0] ){
keep=false ; break ;
// s1.deleteRow(n 1);
}
}
if(keep){ resultArray.push(values1[n])};
}
var phone1 = s1.getRange("U2:U");
var phone2 = s1.getRange("W2:W");
phone1.setValue("");
phone2.setValue("");
s1.getRange(1,1,resultArray.length,resultArray[0].length).setValues(resultArray);
}
uj5u.com熱心網友回復:
我建議使用textFinder():
function deletenumber21() {
// get spreadsheet
var ss = SpreadsheetApp.openById('148wFAJnlJzZVStawtvyLIJJiZYe2HJ-81WPJ5V2afWI');
// get the searched values
var s1 = ss.getSheetByName('DNC');
var values = s1.getDataRange().getValues().flat().filter(String);
// get destination sheet and the range that will be changed
var s2 = ss.getSheetByName('Sheet1');
var range = s2.getDataRange();
// change the values to '' with 'textFinder()'
for (var val of values) {
range.createTextFinder(val).matchEntireCell(true).replaceAllWith('');
}
}
- 類文本查找器
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/372965.html
下一篇:填充必要的資料并跳過其他資料
