Добавление отслеживания UTM Google Analytics к ячейкам в Google Таблицах

sigur7 спросил: 12 мая 2018 в 05:14 в: javascript

Я пытаюсь реплицировать построитель UTM Google Analytics в Google Таблицах. У меня есть формула, которую я использую в другом месте, которая работает чуть менее 50% случаев использования, но требует добавления некоторого дополнительного регулярного выражения.

=ARRAYFORMULA(IF(ISBLANK(A2:A),"",CONCAT(REGEXREPLACE(A2:A, "(/[^/]+)(?:/(?:\?|ref=)[^/]*)?$", "$1/"),"&utm_source=cpc&utm_medium=mysite")))

Вот лист Google, в котором показаны примеры и результат в столбце D. Формула с регулярным выражением в ней частично работает с предоставленными данными. Копировать можно с помощью файла > Сделайте копию.

После того, как Unminified JS-файл, используемый на странице Google Dev Tools, появляется функция регулярного выражения, которую, как я думаю, использует Google для выполнения построителя строк, но формат отличается от того, как он используется в Google Таблицах.

f = function(e) {
            var t = e.replace(".", "\\.");
            return h("^(?:https?://)?(:?" + t + ")(?:$|[/?#])")
        },

Если вы посмотрите на строки с 5 по 8 в Листе Google, это может быть просто настройка, необходимая для существующей формулы, чтобы справиться с добавлением строка с ячейками с расширениями файлов и не выполняющая никаких действий, если строка UTM уже присутствует.

EDIT Существующая формула, содержащая регулярное выражение, добавляет строку "& utm_source = cpc & utm_medium = mysite"до конца ячеек. В приведенном ниже списке показан ORIGINAL url, с запросом REQUIRED

https://www.aol.com

https:// www. aol.com/?utm_source=cpc&utm_medium=mysite

(Standard URL без расширений файлов, поэтому добавляется / добавляется и добавляется строка UTM. STATUS: WORKING)


https://aol.com https://aol.com/?utm_source=cpc&utm_medium=mysite (St URL-адрес ордера без www или расширений файлов, поэтому добавляется / и добавляется строка UTM. СТАТУС: РАБОТА)

https://www.aol.com/

https://www.aol.com/?utm_source=cpc&utm_medium=mysite

(Стандартный URL-адрес без расширений файлов, но существует окончание /, поэтому он не добавляется и добавляется строка UTM. STATUS: WORKING)


https:// www.aol.com/index.html

https://www.aol.com/index.html?utm_source=cpc&utm_medium=mysite

(Файлы расширения существуют, поэтому добавив a / в конец вместе с строкой UTM, приложенной к ней. STATUS: FAILING. Она не требовала расширения файлов / файлов)


https://www.aol.com/index. php

https://www.aol.com/index.php?utm_source=cpc&utm_medium=mysite

(Существует еще один тип расширения файла (из которого будут сотни ), поэтому, добавив / / в конец вместе с добавленной строкой UTM, она ломается. STATUS: FAILING. Он не требует / расширения файлов)


http://www.asos.com /puma/puma-suede-classic-black-trainers/prd/3272954

http://www.asos.com/puma/puma-suede-classic-black-trainers/prd/327295 4? Utm_source = cpc & utm_medium = mysite

(В этой строке используется идентификатор продукта, поэтому, добавив / в конец вместе с добавленной строкой UTM, он разбивается. СТАТУС: НЕИСПРАВНОСТЬ. Он не требовал идентификаторов продуктов / на идентификаторах продуктов)


http://www.asos.com/puma/puma-suede-classic-black-trainers/prd/3272954?utm_source=cpc&utm_medium= ASOS http://www.asos.com/puma/puma-suede-classic-black-trainers/prd/3272954?utm_source=cpc&utm_medium=asos (The Строка UTM уже существует, поэтому она снова добавляется. STATUS: FAILING. Если существует UTM, нам нужно игнорировать его и оставить ячейку как есть)

1 ответ

Есть решение
wp78de ответил: 12 мая 2018 в 10:28

Здесь мы находимся:

^((?:^https?:\/\/[^\/\n]+))(\/?$|\/)((?:(?!\?utm_source=cpc).)*)$

substitue: $1/$3?utm_source=cpc&utm_medium=mysite

Основные идеи здесь

  • , чтобы захватить все, пока первый разделитель каталога (или ранний конец) в качестве части домена
  • не перебросит первый / в полный матч и не перестроит его, чтобы получить нормализованный URL-адрес
  • захватить остальных с умеренным жадным токеном, который исключает utm_source=cpc

Демо


Однако это не работает, поскольку Google Таблицы не поддерживают обратные ссылки. Трудно создать это только при базовом синтаксисе re2. В любом случае, я нашел решение. Это уродливо и должно быть улучшено, но показывает, что это можно сделать:

=ARRAYFORMULA(IF(ISBLANK(A2:A),"",CONCAT(REGEXREPLACE(A2:A, "^((?:^https?:\/\/[^\/\n]+))(?:\/?$|\/)(.*?)(?:\?.*)?$", "$1/$2"),IF(REGEXREPLACE(A2:A, "^.*?(\?.*)?$", "$1")="", "&utm_source=cpc&utm_medium=mysite", REGEXREPLACE(A2:A, "^.*?(\?.*)?$", "$1")))))

Основные идеи здесь:

  • восстановить нормализованный URL (тот же первые два шага выше), пока не появится параметр запроса ?. добавьте фиксированный текст, если его нет, в противном случае оставьте как есть.

Demo2

Кроме того, Google Таблицы не справляется с этой задачей. Сделайте себе одолжение и обработайте это с помощью другого инструмента или другого подхода.

sigur7 ответил: 12 мая 2018 в 07:48
Вау, это так здорово. Не могли бы вы включить функцию Google Таблиц? Похоже, они имеют немного другой формат. Вот формула Google Таблиц: =ARRAYFORMULA(IF(ISBLANK(A2:A),"",CONCAT(REGEXREPLACE(A2:A, "(/[^/]+)(?:/(?:\?|ref=)[^/]*)?$", "$1/"),"&utm_source=cpc&utm_medium=mysite")))
sigur7 ответил: 12 мая 2018 в 08:11
Вот попытка: =ARRAYFORMULA(IF(ISBLANK(A2:A),"",(REGEXREPLACE(A2:A, "^((?:^https?:\/\/[^\/\n]+))(\/?$|\/)((?:(?!\?utm_source=cpc).)*)$", "$1/$3?utm_source=cpc&utm_medium=mysite")))), которая выдает ошибку