下面是根據特定列值過濾電子表格并將匹配項復制到新電子表格的代碼
function filterkhaled(){
var sheet = SpreadsheetApp.getActiveSheet();
var newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();
var reg = /^\d $/;
var data = sheet.getDataRange().getDisplayValues();
var newData = data.filter(row => ["yes"].includes(row[12]) | row.match(reg));
newSheet.getRange(1,1,newData.length,newData[0].length).setValues(newData);
}
我基本上希望該過濾器匹配字串“yes”或任何數值,然后將相應的匹配項復制到新的電子表格中。這里的代碼row.match(reg)顯示以下錯誤TypeError: row.match is not a function
有沒有辦法使正則運算式過濾器作業?
這是起始表的樣子

輸出應包含所有綠色行。
uj5u.com熱心網友回復:
修改點:
- 我認為你的錯誤的原因
TypeError: row.match is not a function是因為這row是一個陣列。 ["yes"].includes(row[12])與 相同row[12] == "yes"。- 在這種情況下,請使用
||代替|。
當這些點反映在你的腳本中時,它變成如下。
修改后的腳本:
function filterkhaled() {
var sheet = SpreadsheetApp.getActiveSheet();
var newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();
var reg = /^\d $/;
var data = sheet.getDataRange().getDisplayValues();
var newData = data.filter(row => row[12] == "yes" || row[12].match(reg));
if (newData.length == 0) return;
newSheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}
- 運行此腳本時,將列“M”的值
yes或數字所在的行放入新作業表中。
參考:
- 匹配()
- 邏輯或 (||)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/487914.html
