Как я могу удалить атрибут href без запроса? - PullRequest
0 голосов
/ 21 января 2019

Используя Google Sheets, я бы хотел получить URL без возможного запроса из атрибута "href".Например, получите https://test.com из <a href="https://test.com">Test1</a> или <a href="https://test.com?this">Test1</a>.

. Я использовал ответ регулярного выражения, предложенный в https://stackoverflow.com/a/40426187/4829915, чтобы удалить строку запроса, а затем извлек фактический URL.

Есть ли способ сделать это в одной формуле?

Пожалуйста, посмотрите ниже, что я сделал.Во всех этих примерах конечный результат равен https://test.com

    A                                                           B                               C
1                                                               \?[^\"]+                        href="(.+)"
2   <a href="https://test.com">Test1</a>                        =REGEXREPLACE(A2, B$1, "")      =REGEXEXTRACT(B2, C$1)
3   <a href="https://test.com?param=eter">Test2</a>             =REGEXREPLACE(A3, B$1, "")      =REGEXEXTRACT(B3, C$1)
4   <a href="https://test.com?param=eter&and=this">Test3</a>    =REGEXREPLACE(A4, B$1, "")      =REGEXEXTRACT(B4, C$1)

1 Ответ

0 голосов
/ 21 января 2019

В этом ответе я хотел бы предложить 2 шаблона.В первом паттерне используется REGEXEXTRACT.Во втором шаблоне используется пользовательская функция с использованием Google Apps Script (это образец.).

Шаблон 1: с использованием формулы

=REGEXEXTRACT(A2, C1)

, где C1 - href="(.+?)[\?"]

Шаблон 2: Использование пользовательской функции

Когда вы используете это, пожалуйста, скопируйте и вставьте скрипт в редактор скриптов.Тогда, пожалуйста, используйте его в ячейке, такой как =getUrl(A2).

function getUrl(value) {
  var obj = XmlService.parse(value.replace(/&/g, ";"));
  var url = obj.getRootElement().getAttribute("href").getValue();
  return url.split("?")[0];
}

Результаты:

enter image description here

Ссылки:

...