Google Script - получить текст с апострофом в ячейке (электронная таблица) и найти его в теле документа Google.

Я сделал скрипт (контейнерный скрипт) в своей электронной таблице, в которой у меня есть 4 столбца: (1) текст до, (2) текст после, (3) текст для вставки между ними и (4) URL-адрес документа Google. с текстом, в котором я хочу заменить правильное значение (между).

Мой метод замены не работает, когда у меня есть апостроф ('), который я не пробовал для других символов (/, ", поэтому я не знаю). Как это решить? введите здесь описание изображения Это мой код:

var COLUMN_URL =....

var URL = ...;
// loop for n
Logger.log(' URL ' + URL);
var body = DocumentApp.openByUrl(URL).getBody();
body.replaceText(
  sheet.getRange(n + 1, 2).getDisplayValue() + ".*" + sheet.getRange(n + 1, 3).getDisplayValue(), 
  sheet.getRange(n + 1, 2).getDisplayValue() + sheet.getRange(n + 1, 4).getDisplayValue() +
  sheet.getRange(n + 1, 3).getDisplayValue()
);

Редактировать: я тестировал несколько символов, когда я не использую апострофы, кавычки, * и ?, это работает, я буду тестировать другие символы, но пока ! & . и числа, размещенные в ячейках (до и после) рабочие

С помощью \, ( и ) я получаю сообщение о недопустимом шаблоне регулярного выражения, который мне нравится .*McDonald)s


person ana maria    schedule 26.07.2018    source источник
comment
Вы должны поделиться некоторыми примерами оцененных аргументов для функции replace   -  person tehhowch    schedule 26.07.2018
comment
@tehhowch большое спасибо, я выложил фото, скажите мне, если оно все еще неясно, чтобы я мог его отредактировать :) и для журналов у меня есть правильные значения :) с апострофами ^^   -  person ana maria    schedule 26.07.2018
comment
Лучше, но вы должны поделиться оцененными аргументами, а не только источником оцененных аргументов. то есть var textParts = sheet.getRange(n+1, 2, 1, 3).getDisplayValues(); Logger.log(textParts);   -  person tehhowch    schedule 26.07.2018
comment
Извините, я не понимаю, поделитесь оцененными аргументами, что вы имеете в виду? Я отредактировал сообщение с помощью журналов, которые я тестировал, поэтому я думаю, что это нормально, когда я не использую апострофы, кавычки, * и? это работает, я проверю с другими персонажами и отредактирую пост после   -  person ana maria    schedule 26.07.2018
comment
Я предполагаю, что вам нужно будет написать функцию синтаксического анализатора, которая проверяет значения, которые должны быть экранированы, чтобы предотвратить их интерпретацию как управляющие символы регулярных выражений.   -  person tehhowch    schedule 26.07.2018
comment
Большое спасибо за ваш ответ символы, которые не работают У меня есть ›› ; '; * ; ? и для ошибки недопустимого шаблона регулярного выражения у меня есть \ ; ( ; ) для функции нет более простого пути из библиотеки/или варианта Я не знаю, как написать эту функцию разбора.   -  person ana maria    schedule 26.07.2018


Ответы (1)


Попробуйте \Q...\E¹

var textBfr = sheet.getRange(n + 1, 2).getDisplayValue(),
   textAr = sheet.getRange(n + 1, 3).getDisplayValue(),
   textInsert = sheet.getRange(n + 1, 4).getDisplayValue();
    body.replaceText( "\\Q"+textBfr+"\\E"+ ".*?" +"\\Q"+textAr+"\\E", textBfr+textInsert+textAr);    
person TheMaster    schedule 26.07.2018