2015-08-31 2 views
1

Я использую скрипт Google для извлечения значений из столбца, соответствующего моему регулярному выражению, но я не могу заставить переменную regex работать с моей операцией if. Когда я устанавливаю переменную в строку, у меня нет проблем с запуском моей функции и возвратом ответа, но она не работает с регулярным выражением, и я пытаюсь выяснить проблему:Запуск RegEx в скрипте Google Если заявление

Вот мой сценарий:

function extractBranded() { 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var data = sheet.getDataRange().getValues(); 
    for (var i = 0; i < data.length; i++) { 

    var keywords = /ipad dns|dns system/; 

    if (data[i][0] == keywords) { 
     Logger.log(data[i][0]); 
    } else { 

    } 
    } 

Google Таблица данные (запросы = Column и Row A1):

Queries 
dns system 
dns systems 
ipad dns 
ipad dns system 
business 101 
ipad dns register 
dns 

в теории это должно поднять на четыре из семи значений в моем листе.

Я также попытался вызвать функцию-конструктор с new RegExp(), но это не сработало. Есть предположения?

+0

Ваш RegExp читается как «ipad dn (s | d) ns system», вам не хватает скобок. –

+0

Использование 'if (data [i] [0] .match (keywords)) {', я получил 5 результатов: 'dns system',' dns systems', 'ipad dns',' ipad dns system', 'ipad dns register' - это то, что вы ищете? Вы забыли называть '.match()'. Или 'test()': 'if (keywords.test (data [i] [0])) {' –

ответ

1

Использование

if (data[i][0].match(keywords)) { 

Или

if (keywords.test(data[i][0])) { 

Вы получите 5 результаты:

[15-08-31 23:27:52:850 CEST] dns system 
[15-08-31 23:27:52:864 CEST] dns systems 
[15-08-31 23:27:52:865 CEST] ipad dns 
[15-08-31 23:27:52:866 CEST] ipad dns system 
[15-08-31 23:27:52:866 CEST] ipad dns register 

Вы забыли позвонить match() или test() на самом деле применить регулярное выражение.

+0

Рад, что это сработало для вас, пожалуйста, также подумайте над ответом, если это окажется полезным. –

Смежные вопросы