Автоматически записать данные в поле анкеты геткурс. На примере записи даты заполнения анкеты
Шаг 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