Есть ли способ связать вопрос стиля «Выбрать из списка» в форме со списком данных (например, в электронной таблице)?
Это будет означать, что по мере добавления новых опций в список в электронной таблице (или где бы то ни было возможно разместить список) они автоматически появятся в качестве опции для выбора в форме в будущем.
В моем случае это будет означать, что респонденты, заполнившие форму, смогут выбрать, какие добровольцы присутствовали на этом конкретном сеансе добровольчества, из полного списка добровольцев (вместо того, чтобы вводить каждое имя по отдельности), но поскольку добровольцы присоединяются спорадически, это было бы очень полезно, если бы можно было автоматически добавлять их в параметры списка, а не каждый раз добавлять новый параметр вручную.
Я понятия не имею, возможно ли это, но я был бы очень признателен, если бы кто-нибудь мог предложить способ сделать это.
Ответы:
Ответ Тома Хорвуда прекрасно работает, но только после исправления важной ошибки в его коде. Все ссылки на
LIST_DATA
элементы должны быть сделаны с использованием индексаj
(неi
). У меня нет достаточной кармы, чтобы комментировать пост Тома, так что вот вам и монти:Ниже приведен исправленный код. Я также изменил название
LIST_DATA
элементов, чтобы они стали более наглядными. Это также показывает, как Том задумался (спасибо!) И предоставил возможность обновлять более одного элемента формы содержимым более одного списка электронных таблиц.Подводя итог, как заставить это работать (для тех, кто, как и я, впервые использует Google Apps Script). В приведенном выше фрагменте кода я сослался на имена листов и имен полей форм, чтобы сделать его более понятным:
В таблице, которая связана с вашей формой:
TaskCategories
). Поместите свой список предметов в первый столбец этого листа. Удалите все лишние столбцы и строки на этом листе (это может или не может быть необходимо - не проверено)FORMID
нужно будет заменить на идентификатор вашей формы. Идентификатор - это длинный код (между косыми чертами) в строке URL-адреса в браузере для нужной формы.LIST_DATA
Переменной необходимо будет изменить в соответствии с вашими форму и ваши потребности. Вы заметите, что каждый элемент вLIST_DATA
является кортежемformFieldTitle
иworksheetName
. Первым является имя поля формы (это должно быть поле типа «выбрать из списка») - в редакторе форм оно вызываетсяQuestion Title
. Последний - это имя созданного ранее листа, содержащего список элементов, которыми вы хотите заполнить поле. Добавьте столько списков в список, сколько вам нужно.Если вы вернетесь к электронной таблице, вы должны увидеть новый пункт меню под названием
List Updater
. У него есть один элемент,Update Lists
который вам нужно запускать каждый раз, когда вы меняете любой лист (ы) своих списков - он обновит форму соответственно.Также отмечу, что в интересах читателей, FormRanger не работает с новыми таблицами Google. Разработчики FormRanger говорят об этом на своем сайте. Возможно / надеюсь, что это изменится в будущем, но на момент публикации, вышеупомянутый код работает для меня, и я использую его в развернутой форме для клиента.
источник
Вы можете сделать это с помощью обычной формы и скрипта, используя Form.getItems (), найти элемент в цикле, затем Item.asListItem (). SetChoices (...)
Вот пример кода, который я использовал в этом примере листа и формы
источник
Существует дополнение Google Forms под названием « Значения форм», которое, по крайней мере, предлагает полуавтоматический способ: всякий раз, когда вы изменяете свои ответы в электронной таблице, вам нужно вручную повторно вводить варианты ответа, но по крайней мере это довольно просто сделать. ,
источник
Вы не можете сделать это с обычными формами Google.
Однако вы можете создать свой собственный графический интерфейс с помощью Google Apps Script и, в частности, UIService . Имейте в виду, однако, что вам придется заново создать весь графический интерфейс - вы не можете использовать части из вашей существующей формы.
Кроме того, вы можете использовать GUI Builder . Это WYSIWYG-редактор для графических интерфейсов Google Apps Script.
Что бы вы ни выбрали, вы должны быть готовы к программированию для достижения того, чего вы хотите.
источник
Для этого есть скрипт под названием FormRanger: https://docs.google.com/document/d/1YvgrxeZJNb2CBpSra1j59Mh1bVpk4vBQYLOoyVjby7A/edit?hl=en&forcehl=1
источник
Есть способ автоматизировать обновление списка, установив Триггер [ 1 ] [ 2 ] для
Update Lists
.Путь - Редактор скриптов -> Ресурсы -> Триггеры текущего проекта
Тогда
add a new trigger
. Для приведенных примеров вы можете установитьupdatesList
для запускаfrom spreadsheet
иOn form submission
. Таким образом, функцияonOpen
не понадобится.источник
Да, это можно сделать, потратив большую часть дня, чтобы найти ответ, а затем разработать его для моих целей, но это можно сделать.
Мне нужно было иметь добровольную регистрационную форму, чтобы люди могли отмечать несколько полей из списка областей, в которых они хотели бы участвовать. Поэтому один вопрос с несколькими полями, проблема в том, что в итоговой электронной таблице Google просто перечислены все проверенные в одной ячейке. Было 21 выбор добровольцев, так что, очевидно, не будет полезным форматом для этой информации. Я хотел сделать то, что, как я понял, вы хотите сказать, что вы хотите, я хотел, чтобы столбец содержал каждый из 21 параметра в отдельном столбце. Затем рядом с их меткой времени (сгенерированная форма), именем, адресом электронной почты и телефоном находятся 21 столбец с «да» или оставлено пустым. Заголовок столбца - это каждый параметр, который они могут выбрать. Кто-то может удивиться, почему бы не задать 21 вопрос с «да» или «нет».
Прежде всего обратите внимание, что когда кто-то заполняет форму Google, результирующая электронная таблица вставляет строку, а не добавляет данные в следующую пустую строку. Это означает, что любые формулы, которые были в строке, просто столкнулись, и новые данные из формулы не имеют следующих двух формул для работы с входными данными. Чтобы выйти за рамки этого, я добавил лист в электронную таблицу (рабочую книгу). Я использовал информацию от brettathds по адресу http://productforums.google.com/forum/#!topic/docs/dlW6U6cHuKw. Поэтому я вставил следующую ячейку в ячейку A1 этого 2-го листа: = ARRAYFORMULA (Sheet1! A1: A). Я проделал подобное для каждого столбца через столбец E. В столбце E есть вопрос с 21 флажком.
Все еще на втором листе строка 1 столбца FY имела заголовки, идентичные тексту на каждой опции флажка из контрольного списка областей, которые они готовы добровольно предложить. Тогда столбец Z был следующим и последним вопросом в форме, это был короткий текстовый вопрос, который был просто озаглавлен «Дополнительные комментарии». Для этого столбца я использовал = ARRAYFORMULA (Sheet1! F1: F). Я сделал это как отдельный вопрос, вместо того, чтобы использовать опцию «other» в конце вопросов-флажков, так как, похоже, не было хорошего способа получить это. данные в электронную таблицу.
Теперь к части, которая отвечает, как вы получаете информацию из ячейки в столбце E (которая может содержать до 21 элемента в списке), чтобы разделить столбцы с «да» или просто пустым. Формула в F2 на втором листе имеет вид = iferror (if (search (F $ 1, $ E2)> 0, "Yes",)) Эта формула проверяет, найден ли точный текст в заголовке столбца (F1) в E2, если это так, он возвращает «Да», если нет, то оставляет его пустым.
Эта формула, на которую ссылаются в F2, написана (с использованием «$», через клавишу F4), так что F2 можно копировать / вставлять в каждую ячейку в строке 2 из GY (Google Spreadsheet не поддерживает копирование формул путем перетаскивания / копирования, как вы можете в Excel, но это можно сделать, выбрав F2, затем CTRL + C, затем выберите G2: Y2, затем CTRL + V). Затем я, используя ту же методологию, вставил копию F2: Y2 в F3: Y100.
Затем я спрятал столбец E на втором листе, чтобы полученная электронная таблица была более компактной (избегая всех переносов из длинных ответов).
Теперь я готов принять 99 добровольцев с помощью быстрой и простой формы, которую они заполняют. Использование параметров фильтра в верхней части столбцов также помогло увидеть, кто был доступен для каких областей.
Одно последнее разочарование, которое я так и не решил. Я заполнил несколько поддельных форм для проверки своих формул и дизайна, а затем удалил эти строки из связанной электронной таблицы. У меня также было несколько человек, которые заполнили дубликаты, я также удалил их строки. Примечательно, что на форумах по продуктам я не единственный, кто разочарован, узнав, что каким-то образом Google до сих пор хранит тестовые / поддельные / дублированные данные в «Сводке ответов» (находится на вкладке «Форма» электронной таблицы). Поэтому сводка ответов бесполезна для точности, если были удалены строки для удаления данных из тестовых / поддельных / дублирующих форм.
Но это сделано, и я сохраняю эти записи в следующий раз, когда мне понадобится подобное, я уверен, что в следующий раз это легко сделать менее чем за 30 минут.
Надеюсь, это поможет, дайте мне знать, если возникнут вопросы.
источник