При открытии ссылки на анкету в параметрах строки запроса можно передать какую-то дополнительно информацию. Например, UTM-метки, чтобы узнать, откуда пришёл респондент.
Значения этих параметров сохраняются в системе, и их можно добавить в массив, если при запросе поставить флаг Выгружать параметры из ссылки на опрос. Они также доступны в анкете из скриптов через объект parameters.
Иногда нужно не просто видеть переданные значения, а использовать их в качестве ответов на вопросы. Чаще всего это нужно в вопросах Текстовый, Числовой или Единственный выбор.
Например, в анкете есть вопрос со списком городов, и респондент должен выбрать свой. Если мы заранее знаем ответ, то можем добавить его в ссылку и ответить на вопрос автоматически. Для этого можно использовать действия или скрипт. Во втором случае логику поведения можно сделать гибче.
Допустим, код ответа, который должен быть выбран автоматически, 3. Добавим его в ссылку, в параметр city:
https://do
.survey-studio.com/s/ef87c2dae?extid=65ghgyh4&city=3
Название параметра можно выбрать на своё усмотрение. Первый параметр ссылки всегда ставится после ?, каждый следующий — после &.
Осталось добавить в вопрос действия или скрипт перед показом.
- Действия
- Скрипт
- Заполнить ответ из параметра ссылки "city"
- Пометить как отвеченный или пропустить
let name = 'city'; // имя вашего параметра
let value = parameters[name]; // ищем параметр в ссылке
if (Q.isAnswered) return answered; // если ранее уже ответили - повторно не выполняем
if (isTesting() && value === undefined) return ok; // если запуск в режиме тестирования в параметре ничего нет - показываем вопрос
if (value === undefined || (Q.type === QuestionTypeIds.SingleChoice && !(value in Q))) return exitWithResult(InterviewResult.Interrupted, 'Не указан ' + name); // если в параметре ничего не указано - не дать заполнить интервью
if (Q.type === QuestionTypeIds.Text) Q.openValueTxt = value; // если текстовый вопрос - запишем параметр в поле для текста
if (Q.type === QuestionTypeIds.Numeric) Q.openValueNum = value; // если числовой вопрос - запишем параметр в поле для числа
if (Q.type === QuestionTypeIds.SingleChoice) Q[value].checked = true; // если вопрос с выбором - отметим ответ
return answered; // считаем вопрос отвеченным
Теперь город с кодом 3 будет выбираться автоматически без показа вопроса на экране.