尝试使用电子邮件正文中的特定短语过滤gmail邮件。我对搜索词的输入如下。不确定使用 \ W 是否正确。
(?i)(\ W | ^)(程序实例状态:错误|程序实例状态:已跳过|程序实例状态:Long \ srunning |程序实例状态:已停止|程序实例状态:已取消|程序状态=错误|程序状态=已跳过|程序状态=已运行\正在运行|程序状态=已停止|程序状态=已取消|状态:错误|状态:已跳过|状态:已运行|状态:已停止|状态:已取消|程序状态:已计划|程序状态:暂停|程序状态:等待\ sTriggered |程序状态:就绪|程序状态:活动|程序状态:不活动)(\ W | $)(\ W | ^)(程序实例状态:错误|程序实例状态: 跳过程序实例状态:长时间运行程序实例 状态:已停止|程序实例状态:已取消|计划状态= 错误程序状态=已跳过程序状态=长时间\正在运行| 程序状态=已停止|程序状态=已取消|状态:错误 |状态:已跳过状态:长时间\正在运行|状态:已停止|状态: 计划状态已取消|已调度|程序状态:已暂停| 程式状态:Awaiting \ sTriggered |程序状态:就绪节目 状态:有效|程序状态:无效)(\ W | $)
运行脚本时。我收到 SyntaxError:无效的量词错误
我正在使用的代码是:
var mFrom = sheet.getRange("J2").getValue();
var notinSubject = sheet.getRange("K2").getValue();
var input= sheet.getRange("I2").getValue();
var keyWord = sheet.getRange("L2").getValue();
var casebyWho = sheet.getRange("M2").getValue();
var pafcSearchQuery = "from:"+mFrom+" before:"+nextDate+"after:"+theDate+
"-subject: "+notinSubject+ " -is:sent ";
Logger.log(pafcSearchQuery);
var threads = GmailApp.search(pafcSearchQuery, 0, 500);
Logger.log(input);
for(var i=0; i<threads.length; i++)
{
var messages = threads[i].getMessages();
// Utilities.sleep(1000);
for (var m = 0; m < messages.length; m++) {
var msg = messages[m].getBody();
if (msg.search(input) !== -1) {
yCount = yCount + threads[i].getMessageCount();
}
}
}
sheet.appendRow([labelName,yCount]);
我不太熟悉Regex的用法。向正确方向的任何微调或建议都会有所帮助。
我已根据G Suite管理员帮助页面https://support.google.com/a/answer/1371417?hl=en中的正则表达式示例使用了正则表达式
答案 0 :(得分:0)
您的正则表达式启动了一个不区分大小写的模式修饰符:(?i)
。这会导致 Google Apps 脚本出错,因为 JavaScript does not support regex mode modifiers。
相反,您可以通过像这样设置 i
标志来使正则表达式不区分大小写:/YOUR_REGEX/i
。
或者在根据输入字符串定义正则表达式时(如您的情况),您可以这样做:new RegExp( YOUR_REGEX_STRING, 'i' )
。