I'm trying to submit data from html form to a google sheet, everything works correctly, but when I try to submit the form without reloading the page, the data is not displayed.I am trying to implement this in pure js without any libraries.
Apps Script code
var SHEET_KEY = '1IW8xdxivaSALFgUxGs9SIwAe07S6ZENEx-Ekr8l8aqU'
var SHEET_NAME = 'page1'
function doGet(e) {
var lock = LockService.getPublicLock()
try {
var doc = SpreadsheetApp.openById(SHEET_KEY)
var sheet = doc.getSheetByName(SHEET_NAME)
var data = []
data = [
e.parameter['pr_name'],
e.parameter['ing'],
e.parameter['gramm'],
e.parameter['class_p'],
]
sheet.getRange(sheet.getLastRow() + 1, 1, 1, data.length).setValues([data])
return ContentService.createTextOutput(
JSON.stringify({ result: 'success' })
).setMimeType(ContentService.MimeType.JSON)
} catch (e) {
return ContentService.createTextOutput(
JSON.stringify({ result: 'error', error: e })
).setMimeType(ContentService.MimeType.JSON)
} finally {
lock.releaseLock()
}
}
html form
<form class="gform" method="GET" action="https://script.google.com/macros/s/AKfycbxoDeBDNJtnPkNxsMmWwIAT7ojRnxgzWBH-wHQnCmfWD6a-gsOdPrSopQ_fK3GJVtlw3w/exec" >
<input type="text" name="pr_name" >
<input type="text" name="ing">
<input type="text" name="gramm">
<input type="text" name="class_p">
<input type="submit">
</form>
js сode shows that everything works but data does not appear
let form = document.querySelector('form');
form.addEventListener('submit', function(evt) {
evt.preventDefault();
sendData();
});
function sendData() {
const XHR = new XMLHttpRequest();
const FD = new FormData( form );
XHR.addEventListener( "load", function(event) {
alert( event.target.responseText );
} );
XHR.addEventListener( "error", function( event ) {
alert( 'Oops! Something went wrong.' );
} );
XHR.open( "GET", "https://script.google.com/macros/s/AKfycbxoDeBDNJtnPkNxsMmWwIAT7ojRnxgzWBH-wHQnCmfWD6a-gsOdPrSopQ_fK3GJVtlw3w/exec" );
XHR.send( FD );
}
I get this response
{"result":"success","data":[null,null,null,null]}
nullmeans you're sending illegal values