Сценарий приложения: используйте форму в качестве шаблона для создания других форм

У меня есть форма с набором вопросов, и я хочу использовать ее для создания других форм. Другими словами, я хочу перебрать элементы формы этого шаблона, выбрать те, которые мне нужны, и добавить их в другую, только что созданную форму.

У меня не было проблем с получением предметов и выбором тех, которые мне нужны; однако я не могу найти способ добавить эти элементы в другую форму - все методы Form.addSomethingItem() не принимают аргументы (например, документы 🔁 ). Неужели это невозможно, или я упускаю что-то глупо простое?

JS - События опций формы
JS - События опций формы
В продолжение предыдущей статьи CSS - стили, связанные с вводом формы , в этой статье мы будем использовать JS для взаимодействия с формами, на этот...
CSS - Стили, связанные с вводом формы
CSS - Стили, связанные с вводом формы
Общими стилями ввода для форм являются Input (включая Text, Radio, checkbox), Select и Textarea, из которых Input относительно прост, поэтому в этой...
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Наличие на корпоративном сайте форм заявлений о приеме на работу, или "трудовых анкет", экономит время и деньги как для соискателей, так и для...
1
0
82
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Методы формы, такие как addTextItem() , не принимают аргументов, а возвращают классы Items (например, TextItem). Эти классы Item имеют свои собственные методы для назначения свойств вопросу в форме.

Примеры

вот пример добавления текстового элемента с определенным заголовком

form.addTextItem().setTitle('I am a text question title');

вот пример добавления элемента множественного выбора в форму с некоторыми вариантами

var item = form.addMultipleChoiceItem();
var choices = ['choice 1', 'choice 2', 'choice 3'];
choices.forEach(function(choice) {
  item.createChoice(choice);
})
Ответ принят как подходящий

Есть два способа добиться этого:

  1. Сделайте копию формы с помощью DriveApp и удалите/измените элементы на месте в новой копии формы.

  2. Переберите существующие элементы, проверьте их тип и добавьте их в новую форму. Например, следующее получает перечисление Item1 и преобразует его в строку camelCase, а выполняет метод add{Type}Item , где Type — это MultipleChoice в случае MULTIPLE_CHOICE Тип элемента Enum.

const newForm2Item0 = Form2[
  `add${String(Form1.getItems()[0].getType())
    .toLowerCase()
    .replace(/(^|_)[A-Z]/gi, match =>
      match.toUpperCase().replace('_', '')
    )}Item`
]();//equivalent to Form2.addMultipleChoiceItem()

Затем вы можете добавить варианты и другие конфигурации по мере необходимости аналогичным образом.

Похоже, что первый вариант будет работать лучше всего, так как помимо имен элементов и параметров у меня также есть пользовательские проверки, поэтому копирование свойств из элемента в элемент может оказаться слишком утомительным. Спасибо!

grreeenn 23.12.2020 15:26

Другие вопросы по теме