A client's procurement team was onboarding new vendors using a 35-field Google Form. The form covered everything: company registration details, banking information, insurance certificates, technical integration specs, and compliance documentation.
The problem was that no single person at the vendor's end had all of this information. The finance team handled the banking fields. Legal owned the insurance and compliance sections. IT handled the technical specs. Getting everyone in front of a form at the same time was impossible — and losing a half-filled submission and starting over was becoming a recurring complaint.
The obvious solutions all cost money:
They were already using Google Workspace. The form was already built in Google Forms. We solved it for free in about an hour.
Google Forms has a setting called "Allow editing responses". When enabled, every form submission generates a unique edit URL that reopens the form with all previous answers pre-filled. The user can change any field and resubmit.
That's save-and-continue. The only missing piece: the user needs to receive that edit URL after each submission so they can come back to it.
That's where Apps Script comes in.
The flow end-to-end:
VND-2024-0089)The CRM ID in the email subject means anyone can find their continuation link by searching their inbox for their reference number.
Open your form → Settings → Responses → turn on "Allow response editing". This is off by default.
Make Email Address the first required field. The script needs this on the very first submission to know where to send the edit link. If a user skips it, they get nothing.
Add a CRM Reference ID field (short text, required). Your account managers give vendors this ID when they initiate onboarding. It becomes the thread that connects every email in the process.
Go to Settings → Presentation → Confirmation message. Set it to something like:
"Your progress has been saved. Check your email for a link to continue where you left off."
This is important — without it, users think they've submitted a final response and won't know to expect the continuation email.
In your form, click the three-dot menu → Script editor. Paste the following:
function onFormSubmit(e) {
var response = e.response;
var editUrl = response.getEditResponseUrl();
var itemResponses = response.getItemResponses();
var email = '';
var crmId = '';
var companyName = '';
for (var i = 0; i < itemResponses.length; i++) {
var title = itemResponses[i].getItem().getTitle();
var value = itemResponses[i].getResponse();
if (title === 'Email Address') email = value;
if (title === 'CRM Reference ID') crmId = value;
if (title === 'Company Name') companyName = value;
}
// Can't send without an email address
if (!email) return;
var subject = '[REF: ' + crmId + '] Continue Your Vendor Application';
var body =
'Hi ' + (companyName || 'there') + ',\n\n' +
'Your progress has been saved.\n\n' +
'CRM Reference: ' + crmId + '\n\n' +
'Use the link below to continue your application. ' +
'All your previous answers will be pre-filled:\n\n' +
editUrl + '\n\n' +
'You can share this link with colleagues who need to fill ' +
'their sections.\n\n' +
'To find this email later, search your inbox for: ' + crmId + '\n\n' +
'Regards,\nProcurement Team';
GmailApp.sendEmail(email, subject, body);
}
In the Script editor → Triggers (clock icon) → Add trigger. Set it to run onFormSubmit on Form submit event. Authorize the script when prompted — it needs Gmail access to send emails.
Every time they submit (whether it's their first save or their fifth), they get an email like this:
Subject: [REF: VND-2024-0089] Continue Your Vendor Application
Hi Acme Corp,
Your progress has been saved.
CRM Reference: VND-2024-0089
Use the link below to continue your application. All your previous answers will be pre-filled:
https://docs.google.com/forms/d/.../viewform?edit2=...
You can share this link with colleagues who need to fill their sections.
To find this email later, search your inbox for: VND-2024-0089
This is the biggest communication challenge. Users are trained to think of "Submit" as final. You need to explicitly tell them — in the form description, in the confirmation message, and in your onboarding email — that submitting saves their progress and they can come back. Consider renaming your submit button label if your form platform supports it (Google Forms doesn't, which is a real limitation here).
If a user skips the email field or fills it incorrectly on their first submission, the script returns early and they get nothing. Make it required and put it at the top of the form.
This is a hard limitation of Google Forms. If your form includes file upload questions, those specific fields cannot be changed via the edit link — the field shows as locked. For document uploads (insurance certs, compliance docs), consider using a separate Google Drive upload link outside the form, or switching those fields to a Google Drive folder URL text field instead.
If your form requires sign-in, the edit link only works for the person who originally submitted. If you want colleagues to fill different sections, keep the form set to "Anyone with the link can respond" (no sign-in required). The edit link itself is unguessable — it contains a long unique token — so this is safe enough for most internal onboarding use cases.
If you delete a response row from the Google Sheet, the edit link for that submission breaks silently — the user gets a "response not found" error with no explanation. Treat the Sheet as append-only.
For internal workflows on Google Workspace, this approach eliminates a $500/year SaaS subscription with about an hour of Apps Script work. The procurement team in this case went from chasing vendors for incomplete forms to having a self-service system where vendors manage their own progress.
If you're running a similar workflow and want to adapt this for your specific form structure, get in touch.