Структура опитування у форматі значень, розділених табуляцією
From LimeSurvey Manual
Імпорт та експорт структури опитування у форматі значень, розділених табуляцією
Ця функція створена для того, щоб полегшити використання електронних таблиць, таких як LibreOffice, Excel або Google Docs, для створення та редагування опитувань. Це повністю виключає залежність від кодів SGQA.
Ця функція підтримує імпорт із файлів зі значеннями, розділеними табуляцією (TSV), у кодуванні ASCII або UTF-8, які мають розширення .txt.
Початок роботи
Найпростіший спосіб — взяти наявне опитування та експортувати його у форматі значень, розділених табуляцією. Скористайтеся звичайною кнопкою експорту опитування і замість формату .lss виберіть «Tab Separated Values format (*.txt)». Опитування буде збережено як файл зі значеннями, розділеними табуляцією, у правильному форматі (файл Unicode із роздільниками-табуляціями) з усіма потрібними заголовками стовпців.
Підійде будь-яка програма для роботи з електронними таблицями, що підтримує значення, розділені табуляцією (наприклад, OpenOffice або LibreOffice). LimeSurvey ігнорує будь-яке форматування в таблиці, але ви можете додати його, якщо це вам допомагає.
Для кожної групи, питання, підпитання та відповіді буде один рядок. Також є рядки для глобальних змінних опитування та для змінних опитування, специфічних для мови. Спочатку буде перелічено основну мову, а потім — усі додаткові мови. Тож якщо мов кілька, спочатку з’явиться весь вміст основної мови (наприклад, усі групи, питання, підпитання та відповіді). Далі йде перекладена копія для кожної додаткової мови (з абсолютно такою самою кількістю та порядком рядків для перекладеного набору).
Зв’язки визначаються за розташуванням. Тобто питання, що йдуть після групи, є частиною цієї групи; підпитання, що йдуть після питання, є частиною цього питання, а відповіді, що йдуть після питання, є частиною цього питання. Таким чином, вам не потрібно знати ідентифікатори (gid, qid, sqid) жодного з питань. Вони будуть обчислені автоматично під час імпорту. Насправді цей формат узагалі не використовує gid, qid чи sqid (або коди SGQA).
Поради
Мета імпорту/експорту у форматі значень, розділених табуляцією, — дати вам змогу швидко розробляти опитування за допомогою електронної таблиці. Ми очікуємо, що ви часто імпортуватимете таблицю, перевірятимете її коректність за допомогою функції «Show Survey Logic» і тестуватимете її. Кожного разу під час імпорту ви отримуватимете нове опитування. Тож у вас може накопичитися багато частково розроблених опитувань, але це нормально. Просто звикніть відстежувати, яке з них найновіше, або видаляйте старе після імпорту нових. Оскільки у форматі значень, розділених табуляцією, ви ніколи не використовуєте коди SGQA, вам не потрібно турбуватися про те, які коди LimeSurvey призначає ключам основного опитування, групи, питання та відповіді. Тому імпортуйте й експортуйте так часто, як вам потрібно.
Ось кілька зручних можливостей, які дає такий підхід до створення опитувальників:
- Використання однакових відповідей для багатьох питань. Просто скопіюйте рядки 'A' і вставте їх після кожного питання, яке має мати такий самий набір.
- Використання однакових підпитань для багатьох питань. Просто скопіюйте рядки 'SQ' і вставте їх після кожного питання, якому вони потрібні.
- «Цикли» — багаторазове використання однієї групи. Коли група виглядає так, як потрібно, скопіюйте її стільки разів, скільки необхідно. Скористайтеся фільтрацією Excel, щоб переглянути лише рядки 'G' (для груп), і функцією перетягування стовпця Excel, щоб оновити рівняння релевантності для кожної групи (наприклад, для перепису першою релевантністю може бути "numPeople > 1", наступною має бути "numPeople > 2". Функція перетягування автоматично оновить число). Відфільтруйте рядки 'Q' і переконайтеся, що кожне питання має унікальне значення (наприклад, якщо ви називаєте змінні g1_q1, g1_q2, g1_qN, скористайтеся пошуком і заміною, щоб замінити g1 на g2 для другої групи; g3 для третьої тощо).
- Зміна порядку питань/груп. Просто змініть порядок рядків у файлі електронної таблиці.
- Тестування модулів опитування. Для довгих опитувань ви можете захотіти розбити тестування на модулі. Просто створіть нові файли електронних таблиць для кожного модуля, видаливши непотрібні рядки. Це позбавляє необхідності вводити багато даних для тестування пізніших розділів опитування.
- Тестування обов’язкових питань. Поширена скарга стосується не потреби робити багато питань обов’язковими, а потреби вимикати обов’язковість для тестування. Просто створіть головну електронну таблицю з обов’язковістю, встановленою у кінцеві бажані значення. Потім для тестування просто видаліть стовпець "mandatory" і збережіть тестову версію таблиці. Коли ви імпортуєте цю версію, жодне з питань не буде обов’язковим. Після завершення тестування імпортуйте головну копію.
- Встановлення значень за замовчуванням. Замість використання графічного інтерфейсу ви можете ввести будь-які бажані значення за замовчуванням у стовпець default. Це особливо корисно у випадках, коли графічний інтерфейс не дозволяє ввести потрібне значення, наприклад вирази для встановлення значення за замовчуванням для елементів списку (наприклад, заповнення списку з атрибута учасника опитування).
- Переклад. Ви можете створити копії своєї електронної таблиці — по одній для кожної мови. Додайте всі рядки для основної мови, потім скопіюйте та вставте їх нижче й за допомогою перетягування змініть поле мови на цільову мову. Їх можна розповсюдити перекладачам, а після завершення роботи об’єднати в один файл електронної таблиці.
- Масове встановлення розширених атрибутів питань. Ви можете захотіти, щоб усі ваші рівняння спочатку були видимими (щоб бачити їхні значення під час збору даних), а потім приховати їх усі перед запуском у виробництво. Просто відфільтруйте таблицю за class = 'Q' і типом питання = '*' (рівняння) та встановіть always_hide у 1 для кожного з цих питань. Так само, скажімо, після створення опитування ви вирішуєте, які питання мають відображатися в публічній статистиці. Замість редагування кожного питання через графічний інтерфейс відфільтруйте за class = 'Q' і встановіть public_statistics = 1 для всіх питань, які мають бути видимими у статистиці.
- Пошук і заміна. Припустімо, ви вирішили змінити формулювання в усіх своїх питаннях — ви можете скористатися пошуком і заміною в Excel для внесення цих змін. Так само, якщо ви вирішили масово перейменувати змінні, на допомогу прийде пошук і заміна. Якщо вам потрібні пошук і заміна на основі регулярних виразів, ви можете виділити потрібний стовпець, скопіювати його в текстовий редактор, виконати пошук і заміну та вставити стовпець назад у таблицю.
- Отримання погоджень. Якщо ви проводите дослідження, у вас може бути інституційна наглядова рада, яка наполягає на перегляді тексту питань. Це може бути зручним способом поділитися ним. Так само для обговорень із замовником.
- Консенсус команди. Якщо ви намагаєтеся домогтися згоди групи щодо формулювання чи вигляду питання або групи, ви можете швидко створити прототип/відредагувати таблицю, імпортувати її та показати команді (через попередній перегляд питання чи групи), що саме побачать користувачі. Так ви зможете отримати схвалення команди ще до того, як вона залишить кімнату, замість того щоб документувати вимоги, реалізовувати їх і погоджувати на майбутніх зустрічах.
- Перехід з інших форматів опитувань. Якщо ваше опитування у форматі XML, Word чи іншому, ви можете створити процес перетворення для відображення їх у цей формат. Хоча можна спробувати також перетворення у формат .lss, перевага цього формату в тому, що він не вимагає відстежувати зв’язки зовнішніх ключів між групами, питаннями, підпитаннями, відповідями та значеннями за замовчуванням.
Обмеження
- За задумом ця функція коректно працює лише для опитувань, що використовують іменування qcode (а не SGQA). Функція припускає, що імена змінних (ідентифікатори питань) унікальні в усьому опитуванні. Імена підпитань можуть повторюватися, якщо вони унікальні в межах конкретного питання.
Формат файлу
Загальні відомості
Ми використовуємо один і той самий набір заголовків стовпців для різних цілей. Перші 14 стовпців виконують різні функції залежно від типу сутності (наприклад, група, питання, відповідь). Решта стовпців — це алфавітний список назв полів бази даних для розширених кодів питань. Нижче наведено синтаксис для кожного типу сутності
Перші 14 стовпців:
- id (New in 3.14.0 )
- related_id (New in 3.14.0 )
- class
- type/scale
- name
- relevance
- text
- help
- language
- validation
- mandatory
- other
- default
- same_default
Глобальні параметри опитування
Для кожного параметра в таблиці surveys є один рядок.
- class => 'S'
- name => назва поля бази даних
- text => значення
Параметри опитування, специфічні для мови
Для кожного поля та кожної мови в таблиці surveys_languagesettings є один рядок. Усі записи для певної мови збираються перед вставкою в цю таблицю.
- class => 'SL'
- name => назва поля бази даних
- text => значення
- language => мова
Групи
Один рядок групи на кожну мову опитування (наприклад, буде 3 рядки групи, якщо опитування має 3 мови).
- id => унікальний числовий ідентифікатор групи, починаючи з числа 1; використовуйте той самий ID для додаткових мов, що належать до поточної групи
- class => 'G'
- name => group_name -- унікальний ідентифікатор групи
- relevance => grelevance -- рівняння релевантності на рівні групи, без фігурних дужок
- text => description -- опис групи для конкретної мови
- language => language -- мова групи (наприклад, 'en')
Питання
Один рядок питання на кожну мову опитування (наприклад, буде 3 рядки питання, якщо опитування має 3 мови). Вважається, що питання належать до групи, яка передує їм.
- id => унікальний числовий ідентифікатор питання, починаючи з числа 1; використовуйте той самий ID для додаткових мов, що належать до поточного питання
- class => 'Q'
- type/scale => type -- (зазвичай однолітерний) тип питання (наприклад, 'M' — Множинний вибір)
- name => title -- унікальна назва питання (корінь системи іменування qcode)
- relevance => relevance -- рівняння релевантності для питання
- text => question -- текст питання для конкретної мови
- help => help -- текст довідки для конкретної мови
- language => language -- мова групи (наприклад, 'en')
- validation => preg -- необов’язкові критерії перевірки питання за регулярним виразом
- mandatory => mandatory -- 'Y', якщо питання обов’язкове
- other => other -- 'Y', якщо має бути доступний варіант «Інше» (лише для деяких типів питань)
- default => default -- якщо встановлено, це значення вставляється в таблицю defaultvalues для цього питання
- same_default => same_default -- 'Y' для істини; у такому разі будь-яке значення за замовчуванням, встановлене для основної мови, застосовується до інших мов
Підпитання
Один рядок підпитання на кожну мову опитування. Вважається, що підпитання належать до питання, яке передує їм.
- id => той самий унікальний числовий ідентифікатор, що використовується для питань. Для підпитань слід використовувати наступне доступне значення; ідентифікатори питання та підпитань мають бути різними (наприклад, використайте ID 1 для питання та ID 2, 3 і 4 для підпитань, що належать до питання 1, ID наступного питання має бути 5 і так далі). Використовуйте той самий ID підпитання для додаткових мов поточного підпитання.
- class => 'SQ'
- type/scale => scale_id -- 0 або 1, залежно від типу питання (наприклад, текстовий масив матиме дві шкали)
- name => title -- «ім’я» підпитання, наприклад, те, що використовується для exclude_all_others
- relevance => relevance -- (У майбутньому) для підтримки релевантності на рівні підпитання
- text => question -- текст підпитання певною мовою
- help => help -- (У майбутньому) для підтримки довідки на рівні підпитання
- language => language -- мова підпитання
- validation => preg -- (У майбутньому) для підтримки перевірки за регулярним виразом на рівні підпитання (наприклад, для частин адреси)
- mandatory => mandatory -- (У майбутньому) для підтримки обов'язковості на рівні підпитання (наприклад, щоб зробити обов'язковими лише кілька підпитань)
- default => default -- якщо задано, це значення за умовчанням для підпитання (вставляється в таблицю defaultvalues)
- same_default => same_default -- якщо задано, значення за умовчанням для основної мови використовується для всіх інших мов
Відповіді
Один рядок відповіді на кожну мову опитування (наприклад, якщо опитування має 3 мови, буде 3 рядки відповіді). Вважається, що відповіді належать до питання, яке передує їм, і розташовані в потрібному порядку сортування.
- id => використовуйте той самий ID, що й ID питання, до якого вони належать
- class => 'A'
- type/scale => scale_id -- 0 або 1 (наприклад, для подвійної шкали)
- name => code -- унікальний ідентифікатор відповіді
- relevance => assessment_value -- якщо використовується опція оцінювання, це значення оцінки для відповіді
- text => answer -- текст відповіді певною мовою
- language => language -- мова цієї відповіді (наприклад, 'en')
Оцінювання
Один рядок оцінювання на кожну мову опитування (наприклад, якщо опитування має 3 мови, буде 3 рядки оцінювання). Оцінювання записуються в кінці файлу.
- id => унікальний числовий ідентифікатор оцінювання, починаючи з числа 1, використовуйте той самий ID для додаткових мов поточного оцінювання
- related_id => ідентифікатор групи, до якої належить поточне оцінювання
- class => 'AS'
- type/scale => область оцінювання: T-Total (загальне), G-group (група)
- name => name
- text => message
- min_num_value => Мінімум
- max_num_value => Максимум
- language => language -- мова цієї відповіді (наприклад, 'en')
Квоти
Один рядок на кожну квоту. Квоти записуються в кінці файлу.
- id => унікальний числовий ідентифікатор квоти, починаючи з числа 1
- class => 'QTA'
- name => ім'я квоти
- mandatory => limit
- other => дія квоти
- default => активний
- same_default => автоматичне завантаження URL
Налаштування мови квоти
Один рядок квоти на кожну мову опитування. Вважається, що налаштування мови квоти належать до квоти, яка передує їм.
- id => унікальний числовий ідентифікатор налаштувань мови квоти, починаючи з числа 1. Кожен рядок для різних мов опитування повинен мати різні ID
- related_id => ідентифікатор квоти, до якої належить це налаштування
- class => 'QTALS'
- relevance => повідомлення
- text => URL
- help => опис URL
- language => language -- мова цієї квоти (наприклад, 'en')
Учасники квоти
Один рядок на кожного учасника квоти, не залежить від мови. Рядок учасника квоти слід розміщувати одразу після питання, до якого він належить. Вважається, що учасники квоти належать до питання, яке передує їм.
- id => унікальний числовий ідентифікатор учасника квоти, починаючи з числа 1
- related_id => ідентифікатор квоти, до якої належить цей учасник
- class => 'QTAM'
- name => код відповіді
Умови
Один рядок на кожну умову, не залежить від мови. Рядок умови слід розміщувати одразу після питання, до якого він належить. Вважається, що умови належать до питання, яке передує їм.
- id => унікальний числовий ідентифікатор умови, починаючи з числа 1.
- related_id => ідентифікатор пов'язаного питання, якщо застосовно
- class => 'C'
- type/scale => сценарій
- name => ім’я поля відповіді
- relevance => оператор порівняння
- text => очікувана відповідь