I’m trying to connect a web form to Google Sheets using Apps Script. The form data should be sent via POST request and then added to my spreadsheet. Everything seems set up correctly but I’m getting errors.
Here’s my client-side code that sends the data:
const formData = {
fullName: "jane smith",
userEmail: "[email protected]",
contactNumber: "9876543210",
userMessage: "What time does the event begin?"
}
const webAppUrl = 'YOUR_WEB_APP_URL';
try {
const result = await fetch(webAppUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: new URLSearchParams(formData)
});
if (result.ok) {
console.log('Data sent successfully');
} else {
console.log('Failed to send data');
}
} catch (err) {
console.error('Request error:', err);
}
And here’s my Apps Script function:
function doPost(request) {
Logger.log(JSON.stringify(request));
var spreadsheet = SpreadsheetApp.openById('YOUR_SHEET_ID_HERE').getActiveSheet();
var dataRow = [];
dataRow.push(new Date());
dataRow.push(request.parameter.fullName);
dataRow.push(request.parameter.userEmail);
dataRow.push(request.parameter.contactNumber);
dataRow.push(request.parameter.userMessage);
spreadsheet.appendRow(dataRow);
var responseHeaders = {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers": "Content-Type,Authorization"
};
return ContentService.createTextOutput("Data saved")
.setMimeType(ContentService.MimeType.JSON)
.setHeaders(responseHeaders);
}
When I test this with Postman, I get an error saying: “Unexpected error while getting the method or property openById on object SpreadsheetApp.” The spreadsheet ID is definitely correct though. What could be causing this issue?