Добавление отслеживания UTM Google Analytics в ячейки в Google Sheets - PullRequest
0 голосов
/ 05 июня 2018

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

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

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

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

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

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

EDIT Существующая формула, содержащая регулярное выражение, добавляет строку "& utm_source= cpc & utm_medium = mysite "до конца ячеек. В приведенном ниже списке показан ОРИГИНАЛЬНЫЙ URL-адрес с последующим ТРЕБУЕМЫМ результатом

https://www.aol.com

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

(Стандартный URL без расширений файла, поэтому добавляется / и добавляется строка UTM. СОСТОЯНИЕ: РАБОТАЕТ)


https://aol.com

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

(Стандартный URL сНет www или расширений файлов, поэтому добавляется / и добавляется строка UTM.СОСТОЯНИЕ: РАБОТАЕТ)


https://www.aol.com/

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

(стандартный URL-адрес без расширений файла, но присутствует окончание /, поэтому это не таки добавлена ​​строка UTM. СОСТОЯНИЕ: РАБОТАЕТ *


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

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

(Расширения файлов существуют, поэтому путем добавления / кконец вместе с добавленной строкой UTM разрывается. СОСТОЯНИЕ: СБОЙ. Не требуется никаких расширений файлов /)


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

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

(Существует другой тип расширения файла (которых будет несколько сотен), поэтому, добавляя / в конец вместе с добавленной строкой UTM, он разрывается. СОСТОЯНИЕ: СБОЙ. Не требует расширений файла / on)


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

http://www.asos.com/puma/puma-suede-classic-black-trainers/prd/3272954?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

(строка UTM уже существует, поэтому она добавляется на agaiп.СТАТУС: СБОЙ.Если UTM существует, мы должны его игнорировать и оставить ячейку такой, какая она есть)

1 Ответ

0 голосов
/ 06 июня 2018

Здесь мы идем:

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

замена с: $1/$3?utm_source=cpc&utm_medium=mysite

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

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

Демо


Однако это не работает, поскольку Google Sheets делаетне поддерживают бдительность.Трудно сделать это только с базовым синтаксисом 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 Sheets не до работы.Сделайте себе одолжение и обработайте это с помощью другого инструмента или другого подхода.

...