Ukryte pole w formularzu Google

Dodaję unikalny identyfikator do każdego zgłoszenia formularza. W tej chwili zrobiłem to ID pierwszym polem i wstępnie wypełniłem je ID wraz z tekstem pomocy, prosząc użytkownika, aby nie modyfikował tego pola. Czy jest jakaś opcja, za pomocą której nie mogę pokazać tej opcji użytkownikowi?

Author: bluish, 2013-12-03

3 answers

Zakładam, że interesuje Cię tylko sposób programowego przypisania unikalnego identyfikatora, zanim użytkownik wypełni formularz.

Nie, Google Forms nadal nie ma bezpośredniej obsługi ukrytych pól, takich jak w formularzach HTML. Jedyną opcją wydaje się być custom styling route, o której już wiesz.

Oto dwa obiecujące pomysły, które po prostu nie działają...

  1. Wstępnie wypełnij usunięte pytanie. jeśli usuniesz pytanie z formularza, to pozostaje w arkuszu spread odpowiedzi - niestety formularze tłumią wartości dla usuniętych pytań, które są prezentowane w wstępnie wypełnionych adresach URL, w przeciwnym razie będziesz w stanie oszukać swój unikalny identyfikator do zgłoszenia w ten sposób. (Myślałem, że może to być sprytne obejście, ale byłem rozczarowany, że to nie działa.)

  2. Wstępnie wypełnij pytanie na pominiętej stronie1. możesz ustawić pytanie na drugiej Stronie, które zostanie pominięte przez formularz NA ŻYWO, a także wygenerować wstępnie wypełniony adres URL dla tego pytania. Jak na razie dobrze - ale jeśli użytkownik nie przejdzie do tej strony, wstępnie wypełniona odpowiedź nie zostanie przesłana.


1Dzięki @AdamL, który postawił ten pomysł podczas poprzedniej dyskusji na ten temat na starym forum.

 20
Author: Mogsdad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-03 15:35:36

Nie możesz tego zrobić bezpośrednio przez Formularze Google, ale możesz obejść:

  1. Utwórz formularz google zawierający ukryte pole.
  2. Utwórz aplikację Google Wep ( https://developers.google.com/apps-script/guides/web )
  3. Wstaw następujący kod do domyślnego Code.gs plik. (To w zasadzie otwiera indeks.szablon html.)

    doGet(e) { return HtmlService.createTemplateFromFile('index').evaluate(); }

  4. Utwórz nowy indeks.plik html z kodem źródłowym formularza.

  5. Make the input pole ukryte przez dodanie style="display:none" do jego otuliny <div>
  6. Wstaw wszelkie informacje o szablonie do pola <input value=""> używając <?= your_gscript_code() ?>
  7. Publish the web app (Publish/Deploy web app...) i gotowe. Teraz masz link do formularza, który ma ukryte żądane pole i wstępnie wypełnione Twoją ukrytą wartością.

Dzięki temu rozwiązaniu możesz zastosować dowolny niestandardowy styl, a nawet pozbyć się innych niepotrzebnych elementów html zachowując formularz hostowany przez Google.

 4
Author: ezsi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-08 08:29:47

Chyba znalazłem rozwiązanie twojego problemu. Skrypt na arkuszu, do którego będą wysyłane dane formularza, może zostać uruchomiony podczas przesyłania formularza. Następnie można skopiować i zwiększyć "zakres" dla każdego przesłanego wiersza.

*edycja, przykładowy kod został poproszony. Aby ten kod działał, musisz " zainstalować WYZWALACZ "za pomocą menu zasoby na skrypcie aplikacji google i użyć" z arkusza kalkulacyjnego ""na formularzu wyślij". Ugotowałem to, co robię, do poniższego fragmentu.

function myFormUpdates(e) {
  var spreadsheet = SpreadsheetApp.getActive()
  //select the sheet you're form is going to post data to
  var sheet = spreadsheet.setActiveSheet(spreadsheet.getSheets()[1])
  //select the last row and a unused column
  var cell = sheet.getRange(sheet.getLastRow(), 3)
  //set data
  cell.setValue('Data')
}
 1
Author: Puppetx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-25 20:09:01