Автоматически записать данные в поле анкеты геткурс. На примере записи даты заполнения анкеты
Шаг 1. Создаем поле анкеты с типом "Дата"
Переходим в раздел Анкеты. В созданной анкете создаем поле даты. Поле можно назвать "Дата заполнения анкеты". Сохраняем
Шаг 2. Добавляем блок анкеты на страницу. Присваиваем блоку класс
Нужно поставить класс блоку, например survey_block
Это нужно для того, чтобы скрипт обратился к нужному нам блоку с анкетой
Шаг 3. Пишем js код
Добавляем блок JavaScript-код и вставляем туда код
/** * Script Name: JS Запись данных в поле анкеты на Getcourse * Script description: Автоматически записать данные в поле анкеты геткурс c помощью js кода. На примере записи даты заполнения анкеты * Version: 1.0 * Author: Максим Калмыков * Url: https://t.me/getcomponent */ $(() => { // Получаем дату для записи в поле анкеты const nowDate = new Date().toLocaleDateString('ru'); setTimeout(() => { // Записываем данные в поле анкеты // Вместо 1111111 - id поля анкеты putDataToSurveyInput(1111111, nowDate, '.survey_block'); // putDataToSurveyInput(ID_ПОЛЯ_АНКЕТЫ, ЧТО_ЗАПИСЫВАЕТСЯ_В_ПОЛЕ, 'СЕЛЕКТОР_БЛОКА_АНКЕТЫ'); }) }); // Функция для записи данных в поле анкеты function putDataToSurveyInput(surveyDataInputId, enteredData = "Данные в поле анкеты", surveyBlocksSelector = '.lt-form-survey') { // Получаем блок анкеты const surveyBlocks = $(surveyBlocksSelector); surveyBlocks.each((_, survey) => { // Получаем скрытый инпут в анкете const surveyJsonInput = $(survey).find('input[name="surveyData"]'); // Получаем поле для записи данных const fieldForEntered = $(survey).find(`#field-input-${surveyDataInputId}`); // Если такие поля не найдены, то скрипт дальше не выполняем if (fieldForEntered.length === 0 || surveyJsonInput.length === 0) return; // Скрываем видимость блока поля анкеты fieldForEntered.parents('.field-wrapper').hide(); // Получаем объект данных анкеты const surveyData = JSON.parse(surveyJsonInput.val()); // Записываем в свойство объекта данные surveyData[surveyDataInputId] = enteredData; // В скрытый инпут записываем json с обновленном значением поля surveyJsonInput.val(JSON.stringify(surveyData)); // Если это поле type="text" или тег "TEXTAREA" можно записать в них видимые данные (не обязательно) if (fieldForEntered.attr('type') === 'text' || fieldForEntered[0]?.tagName === 'TEXTAREA') { fieldForEntered.val(enteredData); } }) }
Нужно прописать в функции параметры
putDataToSurveyInput(ID_ПОЛЯ_АНКЕТЫ, ЧТО_ЗАПИСЫВАЕТСЯ_В_ПОЛЕ, 'СЕЛЕКТОР_БЛОКА_АНКЕТЫ');
СЕЛЕКТОР_БЛОКА_АНКЕТЫ
- класс блока анкеты который мы задали (например survey_block
или survey_block_1
или другой)
Как найти ID_ПОЛЯ_АНКЕТЫ
?
1. Навести мышку на поле анкеты
2. Нажать ПКМ -> Просмотреть код
3. В html коде скопировать цифры из атрибута id="field-input-1673820"
Шаг 4. Проверяем
После сохранения можно проверить в коде страницы или отправить анкету
*Скриптом это поле скрывается при просмотре страницы, на данном скриншоте оно показано с помощью инструментов разработчика в хроме
Результат после отправки анкеты
1. В поле анкеты записать с помощью скрипта можно не только дату и не только в поле с типом "Дата"
2. Если скрипт будет использоваться часто в аккаунте, можно подключить функцию через тему в настройки аккаунта getcourse. Это позволит писать только вызов функции там где нужно (т.е. без самого тела функции, это позволит менять(если нужно будет) функцию из единого места - в теме)
3 В данном скрипте запись в скрытое поле происходит после загрузки страницы(+небольшой задержки). Можно записать и по триггеру нажатия на кнопку отправки анкеты (это если вдруг хочется заморочиться и учитывать ситуацию при которой пользователь зашел заполнять анкету в 23:59 а отправил на след. день и считать именно то число, когда нажал кнопку отправки )
Нужно задать класс для кнопки анкеты, например btn_send_survey
$(() => { // Получаем дату для записи в поле анкеты const nowDate = new Date().toLocaleDateString('ru'); // Записать после загрузки страницы setTimeout(() => { putDataToSurveyInput(1673718, nowDate, '.survey_block'); }) // Записать при клике на кнопку $('.btn_send_survey .btn').on('click', function (e) { e.preventDefault(); // Записываем данные putDataToSurveyInput(1673718, nowDate, '.survey_block'); // затем отправляем форму $(this).parents('form').submit() }); }); // ...
Телеграм-канал: https://t.me/getcomponent