Question types
What value to pass for each kind of Google Forms question. The same shapes work in useGoogleForm and in @ez-gform/core.
| Question | Value | Notes |
|---|---|---|
| Short answer | "text" | |
| Paragraph | "text" | Use \n for line breaks. |
| Multiple choice | "Option text" | |
| Dropdown | "Option text" | |
| Checkboxes | ["Option A", "Option B"] | |
| "Other" option | { other: "my text" } | Works in multiple choice, and inside a checkboxes array. |
| Linear scale | 4 | |
| Date | { year, month, day } | year is optional. Add hour and minute if the question asks for a time. |
| Time | { hour, minute } | |
| Multiple choice grid | { "entry.<rowId>": "Column" } | One key per row. Each row has its own entry id. |
| Checkbox grid | { "entry.<rowId>": ["Col A", "Col B"] } | |
| File upload | not supported | Google requires sign-in for uploads. |
ts
setValue("entry.1", "Jane"); // short answer
setValue("entry.2", ["Swimming", "Chess"]); // checkboxes
setValue("entry.3", { other: "Kite surfing" }); // "Other" option
setValue("entry.4", { year: 2026, month: 3, day: 9 }); // dateWatch out for
- Option text must match the form exactly, including case and spaces. Google silently drops answers that don't match.
- Empty strings,
nullandundefinedare skipped, not sent as blank answers. - Pass a
schematouseGoogleForm(or callvalidateValues) to catch wrong entry ids and missing required answers before submitting.
Writing plain HTML by hand?
Most inputs just use name="entry.N", but a few types split into several fields: dates are entry.N_year, entry.N_month, entry.N_day; times are entry.N_hour, entry.N_minute; "Other" sends entry.N=__other_option__ plus entry.N.other_option_response. It's easier to let the CLI generate the form with --format html.