Documentation
Complete reference for Form Bridge: every feature, every column, every edge case.
Overview
Form Bridge is a Google Workspace Add-on for Sheets. It connects a Google Sheet to a Google Form, letting you read the form's question structure into a spreadsheet, edit questions in bulk, and push changes back.
It does not access form responses. It does not modify response data. It only reads and writes the form's structure: question titles, types, answer choices, required flag, help text, conditional logic, and order.
Core Workflow
- Link: Your spreadsheet must be the form's response destination (Forms › Responses › Link to Sheets)
- Set Up Sheet: Reads the form and writes one row per question to a "Form Questions" sheet
- Edit: Make changes in the spreadsheet
- Check for Errors: Checks for errors before pushing
- Push to Form (Pro): Pushes all edits to Google Forms
Column Schema
The "Form Questions" sheet has exactly 9 columns. Do not reorder, rename, or delete columns.
| Column | Description | Editable? |
|---|---|---|
| Title | The question text shown in the form | Yes |
| Type | Question type. Must match exactly. See Question Types. | Yes * |
| Choices | Pipe-separated answer options for Multiple Choice, Checkbox, Dropdown. Example: Option A | Option B | Option C | Yes |
| Required | Yes or No | Yes |
| Logic | Conditional logic rules. See Conditional Logic. | Yes |
| Description | Help text shown under the question in the form | Yes |
| Notes | Internal notes. Never pushed to the form. | Yes |
| Question ID | Google Forms internal ID, used by Form Bridge to track which row maps to which question. Do not edit. | No |
| Status | Managed by Form Bridge. Shows sync result after each operation (e.g., Added ↑, Updated ↑). Left blank for unchanged rows and unsupported question types. Do not edit. | No |
* Changing a question's Type deletes the old question and creates a new one. Question ID will be updated automatically. Any response data already collected for that question will no longer be linked to the new version (see Type Changes).
Question Types
Use these exact values in the Type column:
| Type value | Google Forms equivalent | Uses Choices column? |
|---|---|---|
Multiple choice | Multiple choice | Yes |
Checkboxes | Checkboxes | Yes |
Dropdown | Dropdown | Yes |
Short answer | Short answer | No |
Paragraph | Paragraph | No |
Section title | Page break / section | No |
Text block | Section header / description | No |
Unsupported | Date, time, scale, grid, file upload, image, and other types not editable via the Forms API | No |
Conditional Logic
The Logic column supports choice-based navigation: "if the respondent selects X, go to section Y".
Syntax
Choice label -> Section name
For multiple rules on the same question, separate them with a pipe character:
Yes -> Follow-up Section | No -> End of Form
Section title row exactly (spelling, capitalization, and spacing).
Multiple choice and Dropdown questions. Adding logic to other question types will cause a validation error that blocks Push to Form.
Set Up Sheet
Set Up Sheet reads the linked form via the Google Forms API and writes all question data to the "Form Questions" sheet.
- If the "Form Questions" sheet already exists, a confirmation dialog is shown before overwriting it
- Question IDs are populated automatically
- Unsupported question types are loaded as read-only rows with Status = "Unsupported"
- Questions are written in form order
Use Form Bridge → Pull from Form if you've made changes directly in Google Forms and want to pull them back to the sheet without overwriting your Notes.
Check for Errors
Check for Errors checks every row in the "Form Questions" sheet for problems before allowing a push. It catches:
- Unknown question types in the Type column
- Missing Title for non-header rows
- Invalid Required values (must be Yes or No)
- Malformed conditional logic syntax
- Logic rules referencing section names that don't exist in the sheet
Rows with errors are highlighted. Fix flagged rows and run Check for Errors again before pushing.
Push to Form
Push to Form (Pro) compares the sheet to the current form state and pushes a diff. It:
- Updates changed question properties (title, type, choices, required, help text, logic)
- Adds new questions that appear in the sheet but not the form
- Deletes questions that were removed from the sheet
- Reorders questions to match row order in the sheet
All changes are applied in a single operation, so even large forms sync quickly and reliably.
Unsupported Questions
Some question types cannot be fully represented in the 9-column schema: Linear Scale, Grid (multiple-choice grid and checkbox grid), Date, Time, File Upload, and any type the API returns as Unknown. Form Bridge loads these rows with Type = Unsupported and highlights them in orange. Images and videos are skipped entirely and do not appear in the sheet.
Unsupported rows are read-only: you can reorder them (by moving rows) but content changes in the Title or Description columns are not synced to the form. The question will be repositioned but not modified.
Type Changes
Changing a question's Type (e.g., from Multiple choice to Dropdown) requires deleting the old question and creating a new one. The Google Forms API cannot update a question's type in place.
Form Bridge will note any type changes in the results summary shown after pushing.
Account Types
Form Bridge is designed to work with both personal Google accounts (gmail.com) and Google Workspace accounts (business, education, enterprise).
Known differences:
- Google Workspace Marketplace install flows may differ slightly between personal and Workspace accounts
- Some Google Workspace admins restrict add-on installs. If you can't install, contact your Workspace admin.
If you encounter account-specific issues, report them via Support.
Known Limitations
- One spreadsheet = one form. Multi-form support is not currently available.
- Image and video items are skipped and do not appear in the sheet
- File upload questions are read-only (loaded as Unsupported)
- Grid questions are read-only (loaded as Unsupported)
- Changing a question's type will disconnect existing response data for that question (see Type Changes)
- Form Bridge does not work if the spreadsheet is not linked to the form as a response destination
Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
| "No form linked" error | Spreadsheet is not linked to a form as its response destination | In Google Forms: Responses tab → Link to Sheets → select this spreadsheet |
| Set Up Sheet creates an empty sheet | Form has no questions, or API call failed | Check that your form has questions. Try again. If it persists, report it. |
| Validation error: "Unknown type" | Type column value doesn't match a supported type exactly | Check spelling against the Question Types table |
| Logic error: "Section not found" | Logic column references a section name that doesn't match any Section title row | Check spelling of section name in Logic column vs Title column of the Section title row |
| Push completes but form unchanged | No differences detected between sheet and form | Verify edits were made in the Form Questions sheet (not a copy of it) |
Still stuck? Check the Form Bridge Log sheet for details, then contact support.
Form Bridge Log
When an error or warning occurs during a sync, Form Bridge writes a timestamped entry to a sheet tab called Form Bridge Log in your spreadsheet. The sheet is created automatically the first time it is needed — you do not need to set it up.
The log has five columns:
| Column | Contents |
|---|---|
| Timestamp | Date and time the entry was written |
| Function | Which internal operation logged the entry |
| Level | ERROR, WARNING, or INFO |
| Message | Description of what happened |
| Row | The Form Questions sheet row the entry relates to, if applicable |
The log keeps the most recent 500 entries and automatically trims older rows. It is a normal spreadsheet tab — you can read it, filter it, or delete it without affecting your form or the Form Questions sheet.
When filing a bug report, copy the relevant rows from the Form Bridge Log and paste them into your message. This is the fastest way to get a diagnosis.
Was this documentation helpful? Have a question not answered here? Let us know.