Skip to main content

Newbie - Google Sheets Web Form Debugging

Simple contact web form. I cannot figure out why it does not work as intended.

On open sets up a menu, allows me to select a modal, non-modal or sidebar for form input.

I fill out the form and click submit.

It does not append data to my sheet. The form wipes it self clean (like blank - no fields). All I can to is close and reopen the form.

Here is the Apps Script

function showForm() {
  
  // Add Custom 'CWAS Menu'
  var ui = SpreadsheetApp.getUi();
    ui.createMenu('CWAS Menu')
      .addItem('Sidebar Form', 'showInSideBarForm')
      .addItem('Modal Dialog Form', 'showInModalDialogForm')
      .addItem('Modeless Dialog Form', 'showInModelessDialog')
      .addToUi();
}

function showInSideBarForm() {
  var userForm = HtmlService.createTemplateFromFile('form').evaluate().setTitle('New Passenger Details');
  SpreadsheetApp.getUi().showSidebar(userForm);
}

function showInModalDialogForm() {
  var userForm = HtmlService.createTemplateFromFile('form').evaluate().setTitle('New Passenger Details');
  SpreadsheetApp.getUi().showModalDialog(userForm, 'New Passenger Details');
}

function showInModelessDialog() {
  var userForm = HtmlService.createTemplateFromFile('form').evaluate().setTitle('New Passenger Details');
  SpreadsheetApp.getUi().showModelessDialog(userForm, 'New Passenger Details');
}

function appendData(data) {
  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Passenger Data');
  ws.appendRow([data.firstName, data.lastName, data.email, data.phone]);
}

Here is the HTML

      <!DOCTYPE html>
  <html>
    <head>
      <!--Import Google Icon Font-->
      <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
      <!-- Compiled and minified CSS -->
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">

      <!--Let browser know website is optimized for mobile-->
      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    </head>

    <body>
      <div class='container'>
        <form class="col s12">
          <!---- First Name ---->
          <div class="input-field col s12">
            <i class="material-icons prefix">account_circle</i>
            <input id="firstNameInput" type="text" class="validate" required>              
            <label for="firstNameInput">First Name</label>
          </div>
          <!---- Last Name ---->
          <div class="input-field col s12">
            <i class="material-icons prefix">account_circle</i>
            <input id="lastNameInput" type="tel" class="validate" required>
            <label for="lastNameInput">Last Name</label>
          </div>  
          <!---- Email ----> 
          <div class="input-field col s12">
            <i class="material-icons prefix">email</i>
            <input id="emailInput" type="email" class="validate" required>
            <label for="emailInput">Email</label>
          </div>
          <!---- Telephone ---->
          <div class="input-field col s12">
            <i class="material-icons prefix">phone</i>
            <input id="phoneInput" type="tel" class="validate" pattern='[0-9]{10}' required>
            <label for="phoneInput">Telephone</label>
            <span class="helper-text" data-error='Please enter a 10 digit phone number' data-success=''></span>
          </div>
          <!---- Submit Button ---->
          <div class="input-field col s12">
            <button class="btn waves-effect waves-light" id='submitButton'>Submit
              <i class="material-icons right">send</i>
            </button>
          </div> <!--end submit button-->


        </form>
      </div>
    
      <!-- Compiled and minified JavaScript -->
      <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
      <script>



console.log(firstName);

        function addRecord(){
          
          var firstName = document.getElementById('firstNameInput');
          var lastName = document.getElementById('lastNameInput');
          var email = document.getElementById('emailInput');
          var phone = document.getElementById('phoneInput');
          
          var data = {
            firstName: firstName.value,
            lastName: lastName.value,
            email: email.value,
            phone: phone.value
          };

          google.script.run.appendData(data);

          //clear form
          firstNameInput.value='';
          lastNameInput.value='';
          emailInput.value='';
          phoneInput.value='';

        }//End of addRecord Function

        document.getElementById('submitButton').addEventListener('click', addRecord);

      </script>
    </body>
  </html>
Via Active questions tagged javascript - Stack Overflow https://ift.tt/NPZM6FY

Comments

Popular posts from this blog

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console...

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

The number of nodes and edges I calculated manually and by a method provided by networkx library dont match

I am trying to analyse a graph using networkx library in Python. I have implemented a function that returns the nodes and edges of that graph. After that I counted the number of nodes and edges by implementing the len() function for nodes and edges, which gave me 17 for both nodes and edges. However, when I used the method graph.number_of_nodes() of networkx library it gave me 53. My code: import pandas as pd import networkx as nx import matplotlib.pyplot as plt header_list = ["a","b","w"] E =pd.read_csv("aves-barn-swallow-contact-network.edges",sep=" ",header= None,names=header_list) # print(E.head()) # prints first few rows of the csv file G = nx.from_pandas_edgelist(E,"a","b",["w"]) nx.draw(G) plt.show() class GraphAnalyse: #finding nodes and edges def nodeEdge(self,Graph): nodes = Graph.nodes() edges = Graph.edges() ...