Веб-сайт, которым я управляю, раскрывает уникальный идентификатор пользователя в разных местах в зависимости от его пути. Идентификатор пользователя может быть получен из уровня данных, параметра ссылающегося URL-адреса или параметра страницы.
В GTM я получаю идентификатор пользователя и сохраняю его в 5 различных переменных, только одна из которых будет иметь фактический идентификатор, а остальные будут иметь значения NULL.
Если я хочу отправить фактический идентификатор пользователя в GA4 с помощью параметра события user_id, как я могу выбрать значение, которое может быть в 1 из 5 переменных, без перезаписи правильного значения NULL?
Я могу представить, что это может сделать JS-скрипт, но я не знаю, где он будет храниться и выполняться.

Вы можете создать собственную переменную Javascript в GTM, которая принимает форму анонимной функции, которая должна возвращать значение, и там вы можете просто выполнить несколько предложений if/else.
Пользовательские переменные Javascript запускаются с помощью eval, работают немного медленно и могут не работать при всех политиках безопасности контента, но если вы специально не установите CSP, это, вероятно, не будет иметь значения.
Более «родной» способ использования GTM — значения по умолчанию. В переменной вы можете использовать другую переменную в качестве значения по умолчанию, если значение не определено (не уверен, работает ли оно с нулевыми значениями).
Итак, у вас будет переменная уровня данных «user_id_from_dl». Затем вы устанавливаете значение по умолчанию для переменной URL «user_id_from_url». Затем вы устанавливаете для этого значения по умолчанию значение «user_id_from_global_var» или любой другой источник.
Затем вы можете просто использовать переменную user_id_from_dl, и если значение не определено, оно по умолчанию будет использовать следующее значение, каскадно перебирая все значения по умолчанию, пока, наконец, не найдет значение, возвращающееся неопределенным.
Недостаток заключается в том, что это не обязательно самое прозрачное решение.
О, хороший звонок. Вы по-прежнему сможете использовать параметр «конвертировать неопределенное» в дополнительных параметрах «формат значения», поскольку он также поддерживает переменные. Но в интересах читаемости собственный js, возможно, не такая уж плохая идея.
Ваше решение вызвало мысль и решение, которое я опубликую здесь.
К счастью, пустые переменные были не «NULL», а «неопределенными». Это означало, что я мог использовать переменную GTM «Таблица поиска» и проверять неопределенное значение, используя переменную GTM «Неопределенное».
Если значение входной переменной было «неопределенным», тогда таблица будет использовать другую определенную переменную, если не неопределенная, то вы можете установить значение по умолчанию, такое же, как «входная» или другую переменную, в зависимости от необходимой логики. Вы можете каскадировать их согласно предложению @Eike Pierstorff.
Спасибо - только начал тестировать и понял, что для типов переменных HTTP и URL нет настроек значений по умолчанию. Вы хотели иметь фиктивные значения для переменных DL, чтобы можно было использовать значения по умолчанию? Тогда по умолчанию от одного DL var к другому?