match()不适用于Number字段 [英] match() is not working with Number field

查看:88
本文介绍了match()不适用于Number字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过使用正则表达式对其进行过滤,对电子邮件列中具有特定单词的行执行操作.

I'm trying to perform an action on rows that have specific words in email column by filtering it using the regular expression.

问题在于match()会产生以下错误

Problem is that match() produces the following error

TypeError: Cannot find function match in object 1234. (line 25, file "Code")

我的代码

    function smartDelete() {
    // smartDelete settings goes here, 
    var badDomains = ["bad\\.com", "red\\.com"];

    var emailColumnNumber = 2;

    var regExpModifiers = "i";

    // Gain access data in the sheet
    var sheet = SpreadsheetApp.getActiveSheet();
    var rows = sheet.getDataRange();
    var numRows = rows.getNumRows();
    var values = rows.getValues();
    var rowsDeleted = 0;
    var Action = false;

    // delete procedure
    for (var i = 0; i <= numRows - 1; i++) {
        var row = values[i];
        Action = false;

        // check bad domains
        for (var j = 0; j <= badDomains.length - 1; j++) {
            var myPattern = new RegExp(badDomains[j], regExpModifiers);
            var status = row[emailColumnNumber].match(myPattern);
            if (status) {
                // match found, mark this row for delete
                Action = true;
                break;
            };
        };

        // execute delete.
        if (Action) {
            sheet.deleteRow((parseInt(i) + 1) - rowsDeleted);
            rowsDeleted++;
        };
    };
}

推荐答案

match()必须接收一个字符串,单元格C4会生成一个Number,因此会出现错误.

match() has to receive a string, cell C4 produces a Number, hence the error.

更改此行,

var status = row[emailColumnNumber].match(myPattern);

以下内容应修复TypeError

.match()

var status = row[emailColumnNumber].toString().match(myPattern);

这篇关于match()不适用于Number字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆