У меня есть форма с набором вопросов, и я хочу использовать ее для создания других форм. Другими словами, я хочу перебрать элементы формы этого шаблона, выбрать те, которые мне нужны, и добавить их в другую, только что созданную форму.
У меня не было проблем с получением предметов и выбором тех, которые мне нужны; однако я не могу найти способ добавить эти элементы в другую форму - все методы Form.addSomethingItem()
не принимают аргументы (например, документы 🔁 ). Неужели это невозможно, или я упускаю что-то глупо простое?
Методы формы, такие как 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);
})
Есть два способа добиться этого:
Сделайте копию формы с помощью DriveApp и удалите/измените элементы на месте в новой копии формы.
Переберите существующие элементы, проверьте их тип и добавьте их в новую форму. Например, следующее получает перечисление 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()
Затем вы можете добавить варианты и другие конфигурации по мере необходимости аналогичным образом.
Похоже, что первый вариант будет работать лучше всего, так как помимо имен элементов и параметров у меня также есть пользовательские проверки, поэтому копирование свойств из элемента в элемент может оказаться слишком утомительным. Спасибо!