Move Google Forms Between Accounts: Bulk Migration Without Losing Track
"Move google forms between accounts" is the plural, operational version of a transfer: a teacher leaves, a school changes domain, or an account is about to be closed and there are a dozen or more forms to deal with. Doing them one at a time is how things get missed. This guide gives a runnable Drive inventory script, a per-form decision rule (native ownership transfer vs export/import), and the checklist for what must be saved before the source account disappears.
Why bulk migration is a different problem
One form: you can eyeball it. Fifteen forms: you need an inventory, a per-form decision, and a verification pass. The complications are
- Some forms can be transferred natively (same domain), others cannot (external/personal accounts).
- Some have years of responses that must be archived separately.
- Every form that is rebuilt gets a new URL, so every QR code, LMS assignment, email and embedded link must be updated.
- Quiz mode, answer keys, sections and images need a spot-check after recreation.
Step 1 — inventory every form in Drive (runnable script)
Run this in Apps Script (standalone or Drive-bound). It lists every Google Form file with its ID, owner, URL, share status and last-updated date, so you can work through a real list instead of memory.
function inventoryAllForms() {
const files = DriveApp.searchFiles(
"mimeType = 'application/vnd.google-apps.form' and trashed = false");
const rows = [["Name","File ID","Owner","Edit URL","Shared","Last updated","Done?"]];
while (files.hasNext()) {
const f = files.next();
const owners = f.getOwner ? [f.getOwner().getEmail()] : [];
rows.push([
f.getName(), f.getId(), owners.join(","),
"https://docs.google.com/forms/d/" + f.getId() + "/edit",
f.getSharingAccess ? String(f.getSharingAccess()) : "",
f.getLastUpdated().toISOString().slice(0, 10), ""
]);
}
const ss = SpreadsheetApp.create("forms-migration-inventory");
ss.getSheets()[0].getRange(1, 1, rows.length, rows[0].length).setValues(rows);
ss.getSheets()[0].setFrozenRows(1);
Logger.log(ss.getUrl() + " total=" + (rows.length - 1));
}DriveApp.searchFiles() uses the Drive search syntax; the mimeType for a native Google Form is application/vnd.google-apps.form (not a .docx or PDF). Add a "Done?" column as shown and tick it per form — that single column is what makes a bulk migration verifiable.
Step 2 — per-form decision table
| Situation | Use | Keeps responses / link? |
|---|---|---|
| Same Workspace domain, new owner in org | Drive → Transfer ownership | Yes / Yes |
| Only a duplicate needed, same account | Drive → Make a copy | No (empty sheet) / No (new link) |
| External domain, personal Gmail, admin blocks transfer | Export .docx → import under destination | No / No |
| Only need the questions as an archive | Export .docx, no import | No / N/A |
| Need historical answers preserved | Export responses to Sheets/CSV in addition | Yes (as files) / N/A |
Work down the inventory sheet: try native transfer first for each row, and only fall back to the bridge where Google refuses. Native transfer is free and lossless; the bridge is the escape hatch, not the default.
Step 3 — the two-step bridge for the rows that need it
The two-step migration bridge. ExamParser has two halves: Google Form to Word reads a form share link and writes the questions, options and answer key into an editable .docx; then the document-to-Google-Form importer accepts that .docx and builds a new Google Form under the account you sign in with. Sign in as the destination account before importing and the new form belongs to it. That is a genuine cross-account content migration — but it migrates the question structure, not the original form object.
For each such row: copy the form share link, use the Google Form to Word exporter to get the .docx, sign in as the destination account, and use the document-to-Google-Form importer to create the new form. Record the new URL back in the inventory sheet next to the old one.
What does and does not move
| What the two-step bridge moves | What it does NOT move |
|---|---|
| Question text, order and type | Historical responses / submissions |
| Options A–E | The original form URL (a new link is generated) |
| Correct answer / answer key | Editors, collaborators and sharing permissions |
| Marks and images where supported | The linked response spreadsheet and its formulas |
| — | Publish state, theme, confirmation message, response validation settings |
Move Google Forms between accounts in 7 steps
Before closing the source account: the archive checklist
- Responses. For each form, Responses → linked Sheet → File → Download → XLSX/CSV. The question export does not include submissions.
- Link map. Record old URL → new URL for every rebuilt form; update QR codes, LMS assignments, embeds and email templates.
- Answer keys. Verify quiz mode and a sample correct answer on each rebuilt form.
- Images. Confirm source image URLs still resolve; re-attach where needed.
- Ownership acceptance. Native transfers are not complete until the new owner accepts the invitation.
- Shared drives. Files in a shared drive may be owned by the drive, not a person; check before promising a transfer.
- Retention / privacy. Response exports contain personal data — store them in a restricted folder and follow your school's retention policy.
Troubleshooting
- Inventory is empty. Wrong mimeType or the forms live in a shared drive that the script account cannot see.
- Transfer ownership is blocked for some rows. Expected for external domains; route those rows through the bridge.
- New forms have no responses. Expected — archive responses separately before closing the source account.
- Quiz mode / answer key off on rebuilt forms. Re-enable in Settings and spot-check one question per form.
- Links still point at the old form. Work the link map column; this is the most common post-migration failure.
- The importer built the form under the wrong account. It uses the signed-in account; sign out and re-import as the destination.
- Images or formulas broken. Verify the .docx before import and keep source URLs reachable.
- Ran out of time mid-migration. The inventory sheet is the source of truth — tick "Done?" per row so a partial migration can be resumed safely.
Inventory all forms
Run the Drive script; freeze the header and add a Done? column.
Archive responses
Download each form's responses to XLSX/CSV into a restricted folder.
Try native transfer per row
Same-domain rows: Drive → Transfer ownership; owner accepts.
Bridge the blocked rows
Export .docx → sign in as destination → import to a new form.
Record old → new URLs
Fill the link map; update QR codes, LMS and emails.
Verify samples
Quiz mode, answer key, option order and images on each rebuilt form.
Only then close the source account
Re-run the inventory and confirm every row is Done.
Frequently asked questions
How do I move multiple Google Forms between accounts?
Build an inventory first (the Apps Script in this guide lists every native Form file in Drive), then work row by row: use Drive's Transfer ownership for same-domain forms, and the export-to-.docx / import-under-destination-account bridge for rows where Google blocks the transfer. Mark each row done and record the new URL.
Can I move a Google Form from one account to another if the domains differ?
Native Drive ownership transfer is commonly blocked across domains or to personal Gmail accounts. The reliable route is the two-step bridge: export the form's questions to a Word .docx, sign in with the destination account, and import the .docx to create a new form that account owns.
Does moving forms keep the responses?
Native ownership transfer keeps everything, including responses and the original link. Any duplicate or export/import rebuild starts with an empty response sheet, so download responses to Sheets or CSV before closing the source account.
What should I save before deleting the source account?
Each form's responses (XLSX/CSV), a map of old → new form URLs, and a copy of each question structure (.docx). Then verify quiz mode, answer keys and images on the rebuilt forms. Only close the account once every inventory row is marked done.
Why do my rebuilt forms have different URLs?
Step 2 of the bridge creates a brand new form rather than moving the Drive file. That is why a link map is essential — QR codes, LMS assignments, embeds and emailed links all need updating.
Google Form exporters (step 1)
Step 1 of a migration is getting the question structure out of the source form. ExamParser has a dedicated exporter for each format; the Word (.docx) one is the practical bridge because the importer accepts .docx directly.
Related guides
- Transfer Google Form to Another Account (single form)
- Copy Google Form to Another Account (duplicate)
- Send Google Form Responses to Different Sheets
- Google Form to Google Sheets (save responses)
- Convert File to Google Form (importer workflow)
- Google Form to Word (.docx) exporter
Export the question structure form by form
Work your inventory with a lossless native transfer wherever Google allows it, and a clean .docx export → import bridge wherever it does not. Questions, options and answer keys carried over exactly, no AI rewriting.
Export my Google Form to Word →