Я использую этот код для множественного регулярного выражения в диапазоне ячеек, но он работает слишком медленно. Я знаю, что лучше использовать «push Array» вместо Range.getValue, но я действительно не понимаю, как это работает, и я буду благодарен за любую помощь.Улучшенная функция множественной замены RegEx в диапазоне ячеек
function patternizer(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var firstrow = 1
var lastrow = 1000
var column = 11
regexrep(/(|)\d+-\d+/,'',firstrow,lastrow,column);
regexrep(/\d{4}-\d{4}/,'',firstrow,lastrow,column);
regexrep(/.*?(\D\d.*)/,'$1',firstrow,lastrow,column);
regexrep(/(.*\d\D).*/,'$1',firstrow,lastrow,column);
regexrep(/[a-zA-Z]{3,}/,'',firstrow,lastrow,column);
}
function regexrep(rxp,rxR,firstrow,lastrow,column){
//(regex pattern, replace pattern, firstrow, lastrow, column)
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var r1 = new RegExp(rxp);
for (i=firstrow; i<=lastrow; i++){
try{
var tr = ss.getRange(i, column)
var t = tr.getValue()
t = t.replace(r1, rxR);
tr.setValue(t)
}catch(e){
}
}
}
Данные для теста:
Plate 21410 T15K6 (16h10h3h25) (to end and keyway cutters, reamers and tsekovok)
Plate 24070 BK8 (10h5h3) (for disk and end-end cylindrical. Mills to modular machine tools)
Plate 36410 BK8 (16h6h3h18) (for mechanical, slip-and end mills with spiral tooth)
Knife torts.frez 2020-0161 R6M5
Knife 2020-0162 for tripartite cutter d100-224h12 (23,8h11h4,72) R6M5 grooved wedge left
Knife 2020-0164 for tripartite cutter d100-224h14 (23,8h13h4,72) R6M5 grooved wedge left
Knife 2020-0165 for tripartite cutter d100-125 (23,8h15h4,72) R6M5 grooved wedge right
Knife 2020-0166 for tripartite cutter d100-125 (23,8h15h4,72) R6M5 grooved wedge left
Plate 21350 BK8 (14h8h3h25) (to end and keyway cutters, reamers and tsekovok)
Plate 36390 BK8 (21h6h3h24) (for mechanical, slip-and end mills with spiral tooth)
Knife 2020-0167 for tripartite cutter d160-250 (28,3h15h5,72) R6M5 grooved wedge right
Knife 2020-0172 to the end mill d125-315 (28,3h28,5h5,72) R6M5 grooved wedge left
Cutter veneer. c/x 3
Knife 2020-0026 to the end mill d160-315 (33,8h25,5h7,72) R6M5 grooved wedge left
Intermediate ring d16, D27, L 2mm to the mandrel for milling machines GOST15071-75
Knife 2020-0169 for tripartite cutter d100-315 (28,3h26,5h5,72) R6M5 grooved wedge right
Knife 2020-0022 to the end mill d80-100 (28,3h18,5h5,72) R6M5 grooved wedge left
Intermediate ring d16, D27, L10mm to the mandrel for milling machines GOST15071-75
Intermediate ring d22, D34, L 1mm to the mandrel for milling machines GOST15071-75
Intermediate ring d22, D34, L 2.0mm to the mandrel for milling machines GOST15071-75
Intermediate ring d22, D34, L 2.3mm to the mandrel for milling machines
Intermediate ring d22, D34, L 3mm to the mandrel for milling machines GOST15071-75
Intermediate ring d22, D50, L 5mm to the mandrel for milling machines
Здравствуйте, @Cooper! Как вы говорите, я добавляю toString() перед заменой, и он отлично работает! 5000 строк и 15 регулярных выражений за 21 секунду. Вместо этого более 6 минут со старой функцией. Добавьте данные к вопросу, чтобы вы могли проверить его. Спасибо огромное! – Davagaz
Мы могли бы сбрить немного больше, если бы смогли придумать простой способ получить регулярное выражение там, где находится Array. Но 21 секунда против 360 секунд, что неплохо. У меня были электронные таблицы, которые занимали несколько минут, и в первый раз я пошел с использованием массивов, которые они, похоже, обрабатывают мгновенно. Так что это большая экономия времени. – Cooper
Спасибо за данные. Мне всегда нравится видеть, как работают мои игрушки – Cooper