0

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]}
5
  • 1
    See secrets of debugging in minimal reproducible example. You may even find your answer, when trying the first step of "restarting from scratch". Also look into server side logs. Commented Aug 28, 2022 at 13:17
  • stackoverflow.com/a/59585277/7215091 Commented Aug 28, 2022 at 13:40
  • I don't need email Commented Aug 28, 2022 at 14:58
  • Yeah but the process is pretty much the same. I have an example but since the question was cloased I cannot provide it. Commented Aug 28, 2022 at 16:17
  • null means you're sending illegal values Commented Sep 6, 2022 at 14:30

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.