【问题标题】:match() is not working with Number fieldmatch() 不适用于数字字段
【发布时间】:2018-07-12 22:16:20
【问题描述】:

我正在尝试通过使用正则表达式过滤电子邮件列中包含特定单词的行来执行操作。

问题是match() 产生以下错误

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++;
        };
    };
}

【问题讨论】:

  • 您应该包含错误消息,而不仅仅是出现错误。
  • 刚刚在问题中添加了error 消息

标签: google-apps-script google-sheets


【解决方案1】:

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

改变这一行,

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

进入以下应该修复TypeError

注意.toString() 前面的.match() 方法

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多