<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nisa Champagne</title>
    <description>The latest articles on DEV Community by Nisa Champagne (@nisachampagne).</description>
    <link>https://dev.to/nisachampagne</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F195948%2F17a42bc0-556e-4b16-a86b-c70e7e5f9b08.jpeg</url>
      <title>DEV Community: Nisa Champagne</title>
      <link>https://dev.to/nisachampagne</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nisachampagne"/>
    <language>en</language>
    <item>
      <title>qrcode.react usage</title>
      <dc:creator>Nisa Champagne</dc:creator>
      <pubDate>Tue, 26 Apr 2022 18:29:48 +0000</pubDate>
      <link>https://dev.to/nisachampagne/qrcodereact-usage-5bpf</link>
      <guid>https://dev.to/nisachampagne/qrcodereact-usage-5bpf</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;“Talk is cheap. Show me the code.”&lt;br&gt;
– Linus Torvalds&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Recently I have been dabbling back in React after being in Angular world for the past 2 years. Long story short is I wanted a QR code that when scanned will go to my LinkedIn page. &lt;/p&gt;

&lt;p&gt;After looking around for a nice short and sweet approach to this ( because why invent the wheel.. obviously), I stumbled on qrcode.react. Super simple set up and usage. &lt;/p&gt;

&lt;p&gt;Assuming you have a standard react setup already, i'll skip to the good part.&lt;/p&gt;

&lt;p&gt;Open up the terminal and navigate to your react project and run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i qrcode.react
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;BAM all good and installed.&lt;/p&gt;

&lt;p&gt;For this example, you'll add&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import QRCode from 'qrcode.react';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to your app.js&lt;/p&gt;

&lt;p&gt;then you'll add:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  return (
    &amp;lt;div className="App"&amp;gt;
      &amp;lt;h1&amp;gt;QR Code&amp;lt;/h1&amp;gt;
      &amp;lt;br /&amp;gt;
      &amp;lt;QRCode value="www.google.com" size={290} /&amp;gt;
    &amp;lt;/div&amp;gt;
  );

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To actually use utilize the QR Code.&lt;/p&gt;

&lt;p&gt;Your entire app.js file should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from "react";
import QRCode from "qrcode.react";

export default function App() {


  return (
    &amp;lt;div className="App"&amp;gt;
      &amp;lt;h1&amp;gt;QR Code&amp;lt;/h1&amp;gt;
      &amp;lt;br /&amp;gt;
      &amp;lt;QRCode value="www.google.com" size={290}  /&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On the screen you should see the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gK7d5rZn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qa4ujxorb3vkyrbljraz.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gK7d5rZn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qa4ujxorb3vkyrbljraz.PNG" alt="QR Code that will take you to google" width="335" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AND look at that :) You can go a big deeper here if you want to with a download button to download a png/svg of your qr code or an input field to let the user set the link or value that the qr code would have. Probably a ton of other things you can do to make it even better!&lt;/p&gt;

&lt;p&gt;Initial link that are helpful:&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/qrcode.react"&gt;https://www.npmjs.com/package/qrcode.react&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My codesandbox repo link:&lt;br&gt;
&lt;a href="https://codesandbox.io/s/qr-code-personal-8bdltl"&gt;https://codesandbox.io/s/qr-code-personal-8bdltl&lt;/a&gt; &lt;/p&gt;

</description>
      <category>react</category>
      <category>qrcode</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Export your table data to a .csv file</title>
      <dc:creator>Nisa Champagne</dc:creator>
      <pubDate>Fri, 08 Oct 2021 15:13:40 +0000</pubDate>
      <link>https://dev.to/nisachampagne/export-your-table-data-to-a-csv-file-4ca0</link>
      <guid>https://dev.to/nisachampagne/export-your-table-data-to-a-csv-file-4ca0</guid>
      <description>&lt;p&gt;I love that my job has me learning a new thing ( or two :) ) every day. This time it was exporting table data to a .csv file that could therefore be used whichever way needed. Of course, there are many ways to go about this.&lt;/p&gt;

&lt;p&gt;Lets set the project in view here: &lt;br&gt;
-Angular 11&lt;br&gt;
-Mock data being used in a table&lt;br&gt;
-Task to return the table data as viewable and if desired, printable.&lt;/p&gt;

&lt;p&gt;Now to figure out how to approach it. &lt;/p&gt;

&lt;p&gt;As I was figuring out how I wanted to work on this, my mind was on simple and to the point as we just want to create the file client-side. I found &lt;a href="https://www.npmjs.com/package/file-saver"&gt;https://www.npmjs.com/package/file-saver&lt;/a&gt; to which suits my needs. Now all that's left is to implement the exportCSV function. &lt;/p&gt;

&lt;p&gt;In my typescript file,  I added the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; exportFile(data: any) {
    const replacer = (key, value) =&amp;gt; value === null ? '' : value;
    const header = Object.keys(data[0]);
    let csv = data.map(row =&amp;gt; header.map(fieldName =&amp;gt; JSON.stringify(row[fieldName], replacer)).join(','));
    csv.unshift(header.join(','));
    let csvArray = csv.join('\r\n');

    var blob = new Blob([csvArray], {type: 'text/csv' });
    saveAs(blob, "ClaimPayments.csv");
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to which all I would need now is to add a button in the corresponding html file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;button (click)="exportFile(this.data)"&amp;gt;Export as CSV&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where this.data is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  data: Object[] = [
    { "Policy Number": "922874", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'Bob', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" },
  { "Policy Number": "922873", "Claim Number": "001568", "Check Number": "922873", "Payment Type": 'Check',
  "Check Date": '01/01/2021', "Policy Name": 'A Name', "Payee Name": 'A Nother Name', "Amount": "100.00" }
  ];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://quick-csv-file-from-data.stackblitz.io"&gt;https://quick-csv-file-from-data.stackblitz.io&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>angular</category>
      <category>portfolio</category>
    </item>
    <item>
      <title>Google Apps Script + Simple Form RSVP Setup</title>
      <dc:creator>Nisa Champagne</dc:creator>
      <pubDate>Mon, 01 Feb 2021 12:18:00 +0000</pubDate>
      <link>https://dev.to/nisachampagne/google-apps-script-angular-forms-simple-rsvp-system-e56</link>
      <guid>https://dev.to/nisachampagne/google-apps-script-angular-forms-simple-rsvp-system-e56</guid>
      <description>&lt;p&gt;What is Google Apps Script? (In reference to Google Sheets)&lt;/p&gt;

&lt;p&gt;Apps Script includes special APIs to let you programmatically create, read, and edit Google Sheets. Apps Script can interact with Google Sheets in two broad ways: any script can create or modify a spreadsheet if the script's user has appropriate permissions for the spreadsheet, and a script can also be bound to a spreadsheet, which gives the script special abilities to alter the user interface or respond when the spreadsheet is opened.&lt;/p&gt;

&lt;p&gt;Let's use this idea in creating a RSVP form that sends an email to you when someone RSVPs to your event.&lt;/p&gt;

&lt;p&gt;To start, youll have to create your Google Sheet:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WiGpOMog--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/0otcyn0c8osfpkqgsari.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WiGpOMog--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/0otcyn0c8osfpkqgsari.png" alt="l75k1mqey1w7yep12a3l" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Name your spreadsheet something relevant to your project.&lt;br&gt;
Youll create your column names that will be used in your form.&lt;br&gt;
For example, for my RSVP form I will have a email, name, extras, and a invite code.&lt;/p&gt;

&lt;p&gt;For your own sanity, I'd suggest adding a timestamp&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8nrOLENt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/l90y98zl4laff4c98g2m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8nrOLENt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/l90y98zl4laff4c98g2m.png" alt="sheet" width="800" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Okay now that your spreadsheet is set up to your liking and you saved it, we will work in the script editor :)&lt;/p&gt;

&lt;p&gt;To get to the script editor you'll navigate to Tools -&amp;gt; script editor. This is what you should see :)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nzdBgrBm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/7wzg3qy77n9gw7huqplf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nzdBgrBm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/7wzg3qy77n9gw7huqplf.jpg" alt="GAS-first-function-660_mini" width="660" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next is the fun part! ^_^ Getting it to work haha&lt;/p&gt;

&lt;p&gt;Here is some example code to use within the script editor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let To_Email = "PUTYOUREMAILHERE@yahoo.com"; // email to send the form data to

/**
 * This fn is the entry point.
 */
function postData(e) {

  try {
    Logger.log(e); // the Google Script version of console.log see: Class Logger

    let emailData = e.parameters; // just create a slightly nicer variable name for the data

    if (emailData.invite_code != "123456") { // validate invite code before saving data
      Logger.log("Incorrect Invite Code");
      return ContentService
          .createTextOutput(JSON.stringify({"result":"error", "message": "Sorry, your invite code (" + emailData.invite_code + ") is incorrect."}))
          .setMimeType(ContentService.MimeType.JSON);
    }

    record_data(e);

    MailApp.sendEmail({
      to: To_Email,
      subject: "A new guest RSVP'd for your wedding",
      replyTo: String(emailData.email), // This is optional and reliant on your form actually collecting a field named `email`
      htmlBody: formatMailBody(emailData)
    });

    return ContentService    // return json success results
          .createTextOutput(JSON.stringify({"result":"success","data": JSON.stringify(e.parameters) }))
          .setMimeType(ContentService.MimeType.JSON);
  } catch(error) { // if error return this
    Logger.log(error);
    return ContentService
          .createTextOutput(JSON.stringify({"result":"error", "message": "Sorry, there is an issue with the server."}))
          .setMimeType(ContentService.MimeType.JSON);
  }
}


/**
 * This fn inserts the data received from the html form submission
 * into the sheet. e is the data received from the POST
 */
function recordData(e) {
  Logger.log(JSON.stringify(e)); // log the POST data in case we need to debug it
  try {
    let doc     = SpreadsheetApp.getActiveSpreadsheet();
    let sheet   = doc.getSheetByName('responses'); // select the responses sheet
    let headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
    let nextRow = sheet.getLastRow()+1; // get next row
    let row     = [ new Date().toUTCString() ]; // first element in the row should always be a timestamp
    // loop through the header columns
    for (let i = 1; i &amp;lt; headers.length; i++) { // start at 1 to avoid Timestamp column
      if(headers[i].length &amp;gt; 0) {
        row.push(e.parameter[headers[i]]); // add data to row
      }
    }
    // more efficient to set values as [][] array than individually
    sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);
  }
  catch(error) {
    Logger.log(error);
    Logger.log(e);
    throw error;
  }
  finally {
    return;
  }
}


/**
 * This method is just to prettify the email.
 */
function formatEmailBody(obj) { // function to spit out all the keys/values from the form in HTML
  let result = "";
  for (let key in obj) { // loop over the object passed to the function
    result += "&amp;lt;h4 style='text-transform: capitalize; margin-bottom: 0'&amp;gt;" + key + "&amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;" + obj[key] + "&amp;lt;/div&amp;gt;";
    // for every key, concatenate an `&amp;lt;h4 /&amp;gt;`/`&amp;lt;div /&amp;gt;` pairing of the key name and its value, 
    // and append it to the `result` string created at the start.
  }
  return result; // once the looping is done, `result` will be one long string to put in the email body
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Obviously this can be modified to whatever your projects needs are.&lt;/p&gt;

&lt;p&gt;GETTING YOUR SCRIPT UP AND RUNNING&lt;/p&gt;

&lt;p&gt;Once youre satisfied with your script code, publish the changes by:&lt;br&gt;
File -&amp;gt; manage version -&amp;gt; enter in what changed -&amp;gt; click save new version -&amp;gt; click ok to close&lt;br&gt;
Click publish -&amp;gt; deploy as web app&lt;br&gt;
Change your project version to the newest&lt;br&gt;
-execute the app as [Me (&lt;a href="mailto:youremailhere@yahoo.com"&gt;youremailhere@yahoo.com&lt;/a&gt;)]&lt;br&gt;
-make sure  the who has access to your app is set to anyone, even anonymous&lt;br&gt;
-COPY THE CURRENT WEB APP URL AS YOULL USE THAT IN YOUR FORM (will set it equal to action within your form)&lt;br&gt;
Click update&lt;/p&gt;

&lt;p&gt;BOOM you're up and running, ready to take on all the forms!&lt;/p&gt;

&lt;p&gt;SETTING UP YOUR FORM&lt;/p&gt;

&lt;p&gt;In this example, I'm following the column names I set up in my spreadsheet to dictate what fields I will need to collect via my form. I'm developing my form within an angular component. You will need to change up the form to follow your spreadsheet!&lt;/p&gt;

&lt;p&gt;FORM CODE:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form class="gform pure-form pure-form-stacked"
method="POST" 
data-email="example@email.net"
action="https://script.google.com/macros/s/AKfycbx1AQpIsZzuNX3VWwLCucruNuLytoTbFpWMZ4ndpfxfRztHMn8/exec"&amp;gt; 
&amp;lt;!-- change the form action to your script editor published url --&amp;gt;
&amp;lt;h2 class="content-head is-center"&amp;gt;The Kirk Wedding&amp;lt;/h2&amp;gt;
&amp;lt;aside&amp;gt;
&amp;lt;p&amp;gt;
We would &amp;lt;em&amp;gt;love&amp;lt;/em&amp;gt; to have you at our wedding! &amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Please use the &amp;lt;b&amp;gt;&amp;lt;em&amp;gt;RSVP form&amp;lt;/em&amp;gt;&amp;lt;/b&amp;gt;
to let us know you'll be there.
&amp;lt;/p&amp;gt;
&amp;lt;/aside&amp;gt;
&amp;lt;div class="input-container"&amp;gt;
&amp;lt;div class="col-md-6 col-sm-6"&amp;gt;
&amp;lt;div class="form-input-group"&amp;gt;
&amp;lt;i class="fa fa-envelope"&amp;gt;&amp;lt;/i&amp;gt;
&amp;lt;label&amp;gt;Email: &amp;lt;/label&amp;gt;
&amp;lt;input type="email" name="email" class="" placeholder="Your email" required&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class="col-md-6 col-sm-6"&amp;gt;
&amp;lt;div class="form-input-group"&amp;gt;
&amp;lt;i class="fa fa-user"&amp;gt;&amp;lt;/i&amp;gt;
&amp;lt;label&amp;gt;Full Name: &amp;lt;/label&amp;gt;
&amp;lt;input name="name" class="" placeholder="Your name" required&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class="row"&amp;gt;
&amp;lt;div class="col-md-6 col-sm-6"&amp;gt;
&amp;lt;div class="form-input-group"&amp;gt;
&amp;lt;i class="fa fa-users"&amp;gt;&amp;lt;/i&amp;gt;
&amp;lt;label&amp;gt;Husband/Wife or kids: &amp;lt;/label&amp;gt;
&amp;lt;input type="number" name="extras" class="" min="0" max="4" placeholder="" required&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class="col-md-6 col-sm-6"&amp;gt;
&amp;lt;div class="form-input-group"&amp;gt;
&amp;lt;i class="fa fa-key"&amp;gt;&amp;lt;/i&amp;gt;
&amp;lt;label&amp;gt;Invite Code: &amp;lt;/label&amp;gt;
&amp;lt;input type="number" name="invite_code" id="invite_code" class="" min="0" placeholder="Invite code" required&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class="form-input-group"&amp;gt;
&amp;lt;button class="button-success pure-button button-xlarge"&amp;gt;
&amp;lt;i class="fa fa-paper-plane"&amp;gt;&amp;lt;/i&amp;gt;&amp;amp;nbsp;Send&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NOW ideally you should be able to spin up your app once you have replaced everything with your spreadsheet specific needs. Remember you set up an invite_code in your script so make sure to use that invite_code within your form. Once all required fields are filled in, you should be able to successfully submit the form data. You will see the following:&lt;br&gt;
{&lt;br&gt;
   "result": "success",&lt;br&gt;
   "data": "{\"extras\":[\"4\"], \"invite_code\":[\"271117\"], &lt;br&gt;
          \"email\":[\"&lt;a href="mailto:nisa@nisa.com"&gt;nisa@nisa.com&lt;/a&gt;\"], \"name\":[\"Nisa\"]}"&lt;br&gt;
}&lt;br&gt;
You'll probably want to hide this with a Thank You page :)&lt;/p&gt;

&lt;p&gt;Here is what you should get in your email once someone would RSVP to your event:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bfQDt5mu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/1mgl6y58gu42kjkjvcmk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bfQDt5mu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/1mgl6y58gu42kjkjvcmk.jpg" alt="response.png_LI" width="750" height="1212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AND there you have it! :) I hope this will be informative. I had a lot of fun learning about Google Script while creating my wedding RSVP. &lt;/p&gt;

</description>
      <category>functional</category>
      <category>googlescripts</category>
      <category>form</category>
      <category>rsvp</category>
    </item>
    <item>
      <title>Managing your ADD/ADHD and coding</title>
      <dc:creator>Nisa Champagne</dc:creator>
      <pubDate>Tue, 15 Sep 2020 14:55:13 +0000</pubDate>
      <link>https://dev.to/nisachampagne/discuss-experience-with-add-and-coding-j0p</link>
      <guid>https://dev.to/nisachampagne/discuss-experience-with-add-and-coding-j0p</guid>
      <description>&lt;p&gt;Just curious on how you may manage your ADD/ADHD while coding. Does it hinder your work? Does it keep you jumping from project to project? &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>IntelliJ vs Eclipse vs VSCode</title>
      <dc:creator>Nisa Champagne</dc:creator>
      <pubDate>Tue, 15 Sep 2020 11:54:37 +0000</pubDate>
      <link>https://dev.to/nisachampagne/intellij-vs-eclipse-vs-vscode-1g09</link>
      <guid>https://dev.to/nisachampagne/intellij-vs-eclipse-vs-vscode-1g09</guid>
      <description>&lt;p&gt;When I started out learning Java at Lambda, we could have used VSCode or used our student pack for a free year of IntelliJ IDEA. I gave VSCode all of one day to get it set up for Java usage but Lambdas curriculum showed examples using IntelliJ. My choice was obvious at the time as I really didn't want to be stuck behind. IntelliJ impressed me far more than I thought it would haha!&lt;/p&gt;

&lt;p&gt;Fast forward to May of this year with the new job and here I have become comfortable with Eclipse. I have been back and forth using Eclipse and finally setting up VSCode for Java development. I like to change it up occasionally at work and get experience. &lt;/p&gt;

&lt;h2&gt;
  
  
  ANYWAYS
&lt;/h2&gt;

&lt;p&gt;What a long round-a-bout to get to the point of this post! Now that I have experience using all three code editors for Java development, I think I can give my opinion on learning curves and etc like that!&lt;/p&gt;

&lt;h4&gt;
  
  
  keep in mind this is a very small list from my point of view*
&lt;/h4&gt;

&lt;h2&gt;
  
  
  Eclipse
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;runs on anything that supports JVM&lt;/li&gt;
&lt;li&gt;very basic hardware demands &lt;/li&gt;
&lt;li&gt;immense ecosystem of plugins &lt;/li&gt;
&lt;li&gt;bigger learning curve&lt;/li&gt;
&lt;li&gt;commonly used IDE &lt;/li&gt;
&lt;li&gt;more frequent software updates&lt;/li&gt;
&lt;li&gt;free&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  IntelliJ
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;beginner friendly&lt;/li&gt;
&lt;li&gt;code completion&lt;/li&gt;
&lt;li&gt;smaller learning curve&lt;/li&gt;
&lt;li&gt;preferred IDE by new and experienced Java devs&lt;/li&gt;
&lt;li&gt;two editions depending on your needs&lt;/li&gt;
&lt;li&gt;version control to manage branches, browse changes, and merge conflicts&lt;/li&gt;
&lt;li&gt;indexes the entire project when you start up (speeds up search process )&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  VSCode
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;good for working on single file or smaller things&lt;/li&gt;
&lt;li&gt;many extensions to turn it into a full fledged IDE&lt;/li&gt;
&lt;li&gt;not as preferred as IntelliJ&lt;/li&gt;
&lt;li&gt;debugger not as good as IntelliJ&lt;/li&gt;
&lt;li&gt;no extensions installed upon use&lt;/li&gt;
&lt;li&gt;live share functionality&lt;/li&gt;
&lt;li&gt;built on top of an Electron platform where as IntelliJ is running on an older JVM&lt;/li&gt;
&lt;li&gt;ease of multiple windows when coding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Obviously there are many more points to touch on with each code editor but probably would take a bit more than a post to get to every point...&lt;/p&gt;

&lt;p&gt;All in all, my personal preference will always be IntelliJ. I encourage devs (especially newer devs) to give each a go to see what suits their needs.&lt;/p&gt;

</description>
      <category>java</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>tools</category>
    </item>
    <item>
      <title>Useful extensions for VSCode</title>
      <dc:creator>Nisa Champagne</dc:creator>
      <pubDate>Mon, 14 Sep 2020 20:06:27 +0000</pubDate>
      <link>https://dev.to/nisachampagne/useful-extensions-for-vscode-1g57</link>
      <guid>https://dev.to/nisachampagne/useful-extensions-for-vscode-1g57</guid>
      <description>&lt;p&gt;If you're like me, VSCode is just your go to code editor. I've personally used it since the beginning of my web development journey. Some extensions just enhance your experience. So here I will list a couple that are just :chefkiss: perfection!&lt;/p&gt;

&lt;h2&gt;
  
  
  1) Peacock
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gmlMpHj4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/qx7ahaoky4jfl89d2kv0.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gmlMpHj4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/qx7ahaoky4jfl89d2kv0.PNG" alt="peacock" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This extension is super nice to color code your open VSCode windows. (As long as you remember what color goes to what) You can easily fish through and pull up the right window, saving time and probably your patience haha!&lt;/p&gt;

&lt;h2&gt;
  
  
  2) Gremlins tracker
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1UksYCr2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/049awpwa4bijn7bwexky.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1UksYCr2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/049awpwa4bijn7bwexky.PNG" alt="gremlins" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This extension reveals invisible whitespace and other annoying characters. A gremlin icon is shown in the gutter for every line that contains at least one of these characters&lt;/p&gt;

&lt;h2&gt;
  
  
  3) Bracket Pair Colorizer
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mWFi6cj3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/z1lvhjn5cy1hks4o7h53.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mWFi6cj3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/z1lvhjn5cy1hks4o7h53.PNG" alt="colorizer" width="800" height="413"&gt;&lt;/a&gt;&lt;br&gt;
(new version is available but if it's not broke... well you know the phrase haha!)&lt;/p&gt;

&lt;p&gt;This is just lovely to have open and closing brackets that are identifiable by color. Probably has saved me a little bit of time (possible understatement... )&lt;/p&gt;

&lt;h2&gt;
  
  
  4) Better Comments
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_9XWS5R0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/l0u12qrve1497h8k00pm.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_9XWS5R0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/l0u12qrve1497h8k00pm.PNG" alt="comments" width="800" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Seems to be a trend in my suggestions.... colors help me organize my code more efficently. Better Comments just helps make your comments more human friendly and easy to spot.&lt;/p&gt;

&lt;p&gt;This post was just to name a few that I personally have found useful and use in my day to day life. Hopefully whom ever reads this finds a nifty new extension to use!&lt;/p&gt;

</description>
      <category>extensions</category>
      <category>vscode</category>
      <category>webdev</category>
      <category>watercooler</category>
    </item>
  </channel>
</rss>
