Created
April 9, 2026 00:35
-
-
Save ejfox/8f65f59be41c1eb7dcd2075f70a16f20 to your computer and use it in GitHub Desktop.
Hudson Line Studios - Google Apps Script for waitlist + survey sync
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function doPost(e) { | |
| var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); | |
| var data = JSON.parse(e.postData.contents); | |
| // Ensure headers exist | |
| var headers = sheet.getRange(1, 1, 1, 9).getValues()[0]; | |
| if (!headers[0]) { | |
| sheet.getRange(1, 1, 1, 9).setValues([ | |
| ['Timestamp', 'Name', 'Email', 'Phone', 'Type', 'Services', 'Days Available', 'Budget', 'Submission ID'] | |
| ]); | |
| } | |
| if (data.type === 'survey') { | |
| // Survey submission — find and update existing row by submissionId or email | |
| var lastRow = sheet.getLastRow(); | |
| var updated = false; | |
| if (lastRow > 1) { | |
| var emails = sheet.getRange(2, 3, lastRow - 1, 1).getValues(); | |
| var ids = sheet.getRange(2, 9, lastRow - 1, 1).getValues(); | |
| for (var i = emails.length - 1; i >= 0; i--) { | |
| if ((data.submissionId && ids[i][0] == data.submissionId) || | |
| (data.email && emails[i][0] === data.email)) { | |
| var row = i + 2; | |
| sheet.getRange(row, 6).setValue((data.services || []).join(', ')); | |
| sheet.getRange(row, 7).setValue((data.daysAvailable || []).join(', ')); | |
| sheet.getRange(row, 8).setValue(data.budget || ''); | |
| updated = true; | |
| break; | |
| } | |
| } | |
| } | |
| if (!updated) { | |
| sheet.appendRow([ | |
| data.timestamp || new Date().toISOString(), | |
| data.name || '', data.email || '', data.phone || '', | |
| 'survey', | |
| (data.services || []).join(', '), | |
| (data.daysAvailable || []).join(', '), | |
| data.budget || '', | |
| data.submissionId || '' | |
| ]); | |
| } | |
| } else { | |
| // Waitlist signup — new row | |
| sheet.appendRow([ | |
| data.timestamp || new Date().toISOString(), | |
| data.name || '', data.email || '', data.phone || '', | |
| 'waitlist', '', '', '', | |
| data.submissionId || '' | |
| ]); | |
| } | |
| return ContentService.createTextOutput(JSON.stringify({ success: true })) | |
| .setMimeType(ContentService.MimeType.JSON); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment