{"id":11790,"date":"2023-12-26T07:00:00","date_gmt":"2023-12-26T01:30:00","guid":{"rendered":"https:\/\/selfimagination.in\/tips\/?p=11790"},"modified":"2023-12-25T21:54:02","modified_gmt":"2023-12-25T16:24:02","slug":"user-registration-with-otp-mail","status":"publish","type":"post","link":"https:\/\/selfimagination.in\/tips\/user-registration-with-otp-mail\/","title":{"rendered":"User Registration with OTP in Google Apps Script Tutorial | Send Email Using Apps Script"},"content":{"rendered":"\n<p>User Registration with OTP, User Registration with Email OTP, How to Send Mail Using Apps Script<\/p>\n\n\n\n<p>\u092f\u0926\u093f \u0906\u092a \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902 \u0915\u0940 \u092d\u0940 \u0906\u092a \u091c\u092c \u092d\u0940 \u0915\u094b\u0908 \u0928\u092f\u093e User Registered \u0939\u094b \u0924\u092c user \u0915\u0947 Mail \u092a\u0930 \u0915\u0947 OTP \u091c\u093e\u090f \u0914\u0930 \u0938\u0939\u0940 OTP Enter \u0915\u0930\u0928\u0947 \u0915\u0947 \u092c\u093e\u0926 \u0939\u0940 User Registered \u0939\u094b \u0938\u0915\u0947, \u0907\u0938\u0915\u093e \u090f\u0915 \u092b\u093e\u092f\u0926\u093e \u092f\u0939 \u092d\u0940 \u0939\u0948\u0902 \u0915\u0940 user \u0905\u092a\u0928\u0940 \u0938\u0939\u0940 mail id \u0939\u0940 enter \u0915\u0930\u0947\u0917\u093e \u0915\u094d\u092f\u0941\u0915\u0940 \u0917\u0932\u0924 Mail id \u0926\u0947\u0928\u0947 \u092a\u0930 OTP \u0909\u0938\u0947 \u0928\u0939\u0940\u0902 \u092e\u093f\u0932\u0947\u0917\u093e \u0914\u0930 \u0935\u0939 Registration \u0928\u0939\u0940\u0902 \u0915\u0930 \u092a\u093e\u090f\u0917\u093e\u0964 <\/p>\n\n\n\n<p>\u0906\u0907\u090f Step by Step Code \u0915\u094b \u0938\u092e\u091d\u0924\u0947 \u0939\u0948\u0902 \u0964 <\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li><a href=\"#1-google-sheet-for-user-registration-with-otp\">1. Google Sheet For User Registration with OTP<\/a><\/li><li><a href=\"#2-html-code-for-user-registration-with-otp\">2. HTML Code for User Registration with OTP<\/a><\/li><li><a href=\"#3-css-for-user-registration-with-otp\">3. CSS for User Registration with OTP<\/a><\/li><li><a href=\"#4-java-script-code-for-user-registration-with-otp\">4. JavaScript Code for User Registration with OTP<\/a><\/li><li><a href=\"#5-apps-script-code-for-user-registration-with-otp\">5. Apps Script Code for User Registration with OTP<\/a><\/li><li><a href=\"#6-video-\u0915\u0947-\u092e\u093e\u0927\u094d\u092f\u092e-\u0938\u0947-\u0938\u092e\u091d\u0928\u0947-\u0915\u0947-\u0932\u093f\u090f\">6. Video \u0915\u0947 \u092e\u093e\u0927\u094d\u092f\u092e \u0938\u0947 \u0938\u092e\u091d\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f <\/a><\/li><li><a href=\"#7-execution-user-registration\">7. Execution (User Registration)<\/a><\/li><li><a href=\"#8-google-apps-script-email-quotas-daily-mail-sending-limit\">8. Google Apps Script Email Quotas (Daily Mail Sending Limit) <\/a><\/li><li><a href=\"#\u0939\u092e\u093e\u0930\u0947-\u0905\u0928\u094d\u092f-\u0906\u0930\u094d\u091f\u093f\u0915\u0932\">\u0939\u092e\u093e\u0930\u0947 \u0905\u0928\u094d\u092f \u0906\u0930\u094d\u091f\u093f\u0915\u0932<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1-google-sheet-for-user-registration-with-otp\">1. Google Sheet For User Registration with OTP<\/h2>\n\n\n\n<p>\u0938\u092c\u0938\u0947 \u092a\u0939\u0932\u0947 \u090f\u0915 Google Sheet \u092c\u0928\u093e \u0932\u0940\u091c\u093f\u090f, \u0939\u092e \u091c\u094b User Registration Page \u092c\u0928\u093e\u090f\u0902\u0917\u0947 \u0924\u092c \u0935\u0939\u093e\u0901 \u0938\u0947 Entry \u0915\u0930\u0947\u0902\u0917\u0947 \u0924\u094b \u0935\u0939 \u0906\u0915\u093e\u0930 Google Sheet \u092a\u0930 Store \u0939\u094b \u091c\u093e\u090f\u0917\u0940\u0964 \u0907\u0938\u0932\u093f\u090f \u0907\u0938 \u092e\u0947 \u0906\u092a\u0915\u094b \u0915\u0947\u0935\u0932 Columns \u0939\u0940 \u092c\u0928\u093e\u0928\u093e \u0939\u0948\u0902 , Entry \u0939\u092e \u091c\u092c Page \u092a\u0930 \u0915\u0930\u0947\u0902\u0917\u0947 \u0924\u092c \u092f\u0939\u093e \u0926\u093f\u0916\u093e\u0908 \u0926\u0947\u0917\u0940\u0964 <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"391\" src=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-3.png?resize=640%2C391&#038;ssl=1\" alt=\"\" class=\"wp-image-11422\" style=\"width:456px;height:279px\" srcset=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-3.png?w=667&amp;ssl=1 667w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-3.png?resize=300%2C184&amp;ssl=1 300w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-3.png?resize=150%2C92&amp;ssl=1 150w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n<\/div>\n\n\n<p>\u0907\u0938 sheet \u0915\u093e \u0928\u093e\u092e login \u0930\u0916\u0928\u093e \u0939\u0948\u0902 \u091c\u094b \u0915\u0940 \u0939\u092e\u0947 Apps Script \u0938\u0947 link \u0915\u0930\u0924\u0947 \u0938\u092e\u092f \u0915\u093e\u092e \u0906\u090f\u0917\u093e \u0964 <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"2-html-code-for-user-registration-with-otp\">2. HTML Code for User Registration with OTP<\/h2>\n\n\n\n<p>\u0907\u0938\u0915\u0947 \u092c\u093e\u0926 \u0939\u092e Apps Script \u092e\u0947 \u090f\u0915 register.html File \u092c\u0928\u093e \u0932\u0947\u0902\u0917\u0947\u0964 \u0907\u0938\u092e\u0947 \u092b\u093e\u0907\u0932 \u092e\u0947 \u0906\u092a \u0928\u0940\u091a\u0947 CSS \u0914\u0930 JavaScript \u0915\u093e Code \u0932\u093f\u0916\u093e \u0939\u0948\u0902 \u0909\u0938\u0947 \u092d\u0940 Add \u0915\u0930 \u0932\u0940\u091c\u093f\u090f\u0917\u093e \u0964 <\/p>\n\n\n\n<pre title=\"register.html\" class=\"wp-block-code\"><code lang=\"markup\" class=\"language-markup\">&lt;style>&lt;\/style> &lt;!--  Add CSS -->\n&lt;script>&lt;\/script> &lt;!--  Add JS -->\n&lt;div class=\"card shadow rounded-4 rounded \">\n  &lt;h5 class=\"card-header bg-secondary- text-white p-3 mycolor\">User Registration with Email OTP&lt;\/h5>\n  &lt;div class=\"card-body p-4\">\n    &lt;div id=\"RegBody\">\n      &lt;div class=\"input-group mb-3\">\n        &lt;span class=\"input-group-text\" >User Name&lt;\/span>\n        &lt;input type=\"text\" class=\"form-control\" id=\"reg_uname\" placeholder=\"User Name\" onchange=\"ClearText()\">\n      &lt;\/div>\n\n      &lt;div class=\"input-group mb-3\">\n        &lt;span class=\"input-group-text\" >User ID&lt;\/span>\n        &lt;input type=\"text\" class=\"form-control\" id=\"reg_uid\" placeholder=\"User ID\" onchange=\"ClearText()\">\n      &lt;\/div>\n\n      &lt;div class=\"input-group mb-3\">\n        &lt;span class=\"input-group-text\" >Password&lt;\/span>\n        &lt;input type=\"password\" class=\"form-control\" id=\"reg_pass\" placeholder=\"Password\" onchange=\"ClearText()\" >\n      &lt;\/div>\n\n      &lt;div class=\"input-group mb-3\">\n        &lt;span class=\"input-group-text\" >Re-enter&lt;\/span>\n        &lt;input type=\"password\" class=\"form-control\" id=\"reg_repass\" placeholder=\"Re-enter Password\" onchange=\"ClearText()\" >\n      &lt;\/div>\n    &lt;\/div>\n\n    &lt;div id=\"RetMsgReg\" class=\"alert alert-danger \" style=\"display:none\" role=\"alert\"> &lt;\/div>\n\n       &lt;div class=\"input-group mb-3\">\r\n         &lt;div class=\"input-group-prepend\">\r\n          &lt;button class=\"btn btn-outline-success mywidth\" type=\"button\" onclick=\"SendOTP()\">Send OTP&lt;\/button>\r\n          &lt;\/div>\r\n        &lt;input type=\"password\" class=\"form-control\" id=\"reg_otp\" placeholder=\"OTP\" onchange=\"ClearText()\" required maxlength=\"4\" >\r\n\r\n      &lt;div class=\"input-group-append\">\r\n          &lt;button type=\"button\" class=\"btn btn-primary- mycolor float-end px-4 text-white\" onclick=\"Register()\">Register&lt;\/button>\r\n        &lt;\/div>\r\n\r\n      &lt;\/div>\n\n\n  &lt;\/div>\n&lt;\/div><\/code><\/pre>\n\n\n\n<p>\u0906\u092a\u0928\u0947 \u091c\u094b \u092d\u0940 Login Page \u092c\u0928\u093e\u092f\u093e \u0939\u094b \u0909\u0938 \u092a\u0930 \u0906\u092a \u092f\u0939 Code add \u0915\u0930 \u0926\u0940\u091c\u093f\u090f\u0917\u093e \u0924\u093e\u0915\u093f Login \u0938\u0947 Register Page open \u0915\u093f\u092f\u093e \u091c\u093e \u0938\u0915\u0947 \u0964 <\/p>\n\n\n\n<pre title=\"login.html\" class=\"wp-block-code\"><code lang=\"markup\" class=\"language-markup\">&lt;span href=\"#\"  onclick=\"OpenRegisterPage()\"&gt;Register (New User)&lt;\/a&gt;\n&lt;script&gt;\nfunction OpenRegisterPage() {\n        google.script.run.withSuccessHandler(ShowRegister).OpenPage(\"register\");\n  }\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"3-css-for-user-registration-with-otp\">3. CSS for User Registration with OTP<\/h2>\n\n\n\n<p>\u092f\u0939 Css \u0915\u093e Code \u092d\u0940 \u0906\u092a\u0915\u094b HTML \u092b\u093e\u0907\u0932 \u092e\u0947 \u0939\u0940 \u0932\u093f\u0916\u0928\u093e \u0939\u0948\u0902 \u092f\u0926\u093f \u0906\u092a \u0905\u0932\u0917 \u0938\u0947 \u092b\u093e\u0907\u0932 \u092c\u0928\u093e\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902 \u0924\u094b \u092c\u0928\u093e \u0915\u0930 Add \u0915\u0930 \u0932\u0940\u091c\u093f\u090f\u0917\u093e\u0964 <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"css\" class=\"language-css\">&lt;style&gt;\n    body {\n      background-color:  rgba(58, 103, 177, 30%); \/\/rgba(205, 180, 219, 30%);\n    }\n\n    .card {\n      width: 400px;\n      margin: auto;\n      margin-top: 30px;\n    }\n\n    .input-group-text {\n      width: 100px;\n      display: inline-block;\n    }\n\n    .mycolor {\n      background-color: #3a67b1; \/\/#6d3b89;\n    }\n\n    .color {\n      color: #3a67b1; \/\/#6d3b89;\n    }\n\n  \n  &lt;\/style&gt;\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"4-java-script-code-for-user-registration-with-otp\">4. JavaScript Code for User Registration with OTP<\/h2>\n\n\n\n<p>\u092f\u0939 JavaScript \u0915\u093e Code \u092d\u0940 \u0906\u092a\u0915\u094b HTML File \u092e\u0947 \u0939\u0940 add \u0915\u0930\u0928\u093e \u0939\u0948\u0902 \u0964 \u0907\u0938\u092e\u0947 \u091c\u094b function \u092c\u0928\u093e\u092f\u0947 \u0939\u0948\u0902 \u0909\u0938\u0915\u0947 \u092c\u093e\u0930\u0947 \u092e\u0947 \u0928\u0940\u091a\u0947 Detail \u092e\u0947 \u0932\u093f\u0916\u093e \u0939\u0948\u0902 \u0964 <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">&lt;script>\n function SendOTP() {\n      var unm  = document.getElementById(\"reg_uname\").value.trim();\n      var uid  = document.getElementById(\"reg_uid\").value.trim();\n\n      if (unm == \"\" ) {\n        RegReturnMsg(\"danger,Please Enter User Name...\");\n        return;\n      }\n      if (uid == \"\") {\n        RegReturnMsg(\"danger,Please Enter Correct Email ID...\");\n        return;\n      }\n\n      google.script.run.withSuccessHandler(RegReturnMsg).sendPassword(uid,unm);\n  }\n\n  function Register() {\n    var unm    = document.getElementById(\"reg_uname\").value.trim();\n    var uid    = document.getElementById(\"reg_uid\").value.trim();\n    var pass   = document.getElementById(\"reg_pass\").value.trim();\n    var repass = document.getElementById(\"reg_repass\").value.trim();\n    var otp  = document.getElementById(\"reg_otp\").value.trim();\n\n    if (pass != repass) {\n      RegReturnMsg(\"danger,Password Not Matched...\");\n    }\n    else {      \n      google.script.run.withSuccessHandler(RegReturnMsg).CheckOTP(uid,pass,unm, otp);\n\n    }\n  }\n  \n  function RegReturnMsg(data) {\n      let v = data.split(\",\");\n      let type=v[0];\n      $('#RetMsgReg').removeClass(\"alert-success\").removeClass(\"alert-danger\").addClass(\"alert-\"+type);\n      $('#RetMsgReg').html(v[1]);\n      $('#RetMsgReg').show();\n      if (type == 'success') {\n        \/\/setTimeout(function(){  \n           \/\/document.getElementById(\"myid\").click();\n          \/\/ }, 3000);\n      }\n  }\n\n\n&lt;\/script><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>SendOTP() :<\/strong> \u0907\u0938 Function \u0938\u0947 E-mail \u092a\u0930 OTP send \u0915\u093f\u092f\u093e \u091c\u093e\u090f\u0917\u093e\u0964 <\/li>\n\n\n\n<li><strong>Register() :<\/strong> \u0907\u0938 Function \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930 \u0939\u092e Screen \u0938\u0947 \u0938\u092d\u0940 \u091c\u0930\u0942\u0930\u0940 Columns \u0915\u0940 Value \u0915\u094b \u0932\u0947\u0915\u0930 \u0909\u0938\u0947 Apps Script \u092a\u0930 \u092d\u0947\u091c \u0926\u0947\u0924\u0947 \u0939\u0948\u0902 \u0964 \u0938\u093e\u0925 \u0939\u0940 \u092e\u0947 Screen Level \u0915\u0947 Validation \u092d\u0940 \u0939\u092e\u0928\u0947 \u0907\u0938\u092e\u0947 \u0932\u0917\u093e\u090f \u0939\u0948\u0902 \u0964 \u091c\u094b \u092d\u0940 Apps Script \u0938\u0947 Return \u0906\u0924\u093e \u0939\u0948\u0902 \u0909\u0938\u0938\u0947 \u090f\u0915 \u0928\u092f\u093e Function Call \u0915\u0930 \u0926\u0947\u0924\u0947 \u0939\u0948\u0902 \u091c\u094b \u0915\u0940 \u0928\u093f\u092e\u094d\u0928 \u0939\u0948\u0902 \u0964 \u0907\u0938\u092e\u0947 \u0939\u092e\u093e\u0930\u0947 \u0926\u094d\u0935\u093e\u0930\u093e \u0926\u093f\u092f\u093e \u0917\u092f\u093e OTP \u0913\u0930 \u091c\u094b \u0939\u092e\u0947 Mail \u092a\u0930 OTP \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0939\u0941\u0935\u093e \u0939\u0948\u0902 \u091c\u092c \u0926\u094b\u0928\u094b\u0902 \u0939\u0940 \u092e\u0948\u091a \u0939\u094b\u0902\u0917\u0947 \u0924\u092c \u0939\u0948 User Registration \u0939\u094b \u092a\u093e\u090f\u0917\u093e\u0964 <\/li>\n\n\n\n<li><strong>RegReturnMsg(data) :<\/strong> \u0907\u0938 Function \u0938\u0947 \u091c\u0940\u0924\u0928\u0947 \u092d\u0940 Validation \u0932\u0917\u093e\u090f \u0939\u0948\u0902 \u0909\u0928\u094d\u0939\u0947 \u0926\u093f\u0916\u093e\u092f\u093e \u0917\u092f\u093e \u0939\u0948\u0902\u0964<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"5-apps-script-code-for-user-registration-with-otp\">5. Apps Script Code for User Registration with OTP<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">let MySheets  = SpreadsheetApp.getActiveSpreadsheet();\nlet LoginSheet  = MySheets.getSheetByName(\"login\"); \n\nfunction doGet(e) {\n  var output = HtmlService.createTemplateFromFile('login');   \n  return output.evaluate();\n}\n\nfunction OpenPage(PageName) {\n    return HtmlService.createHtmlOutputFromFile(PageName).getContent();\n}\n\nfunction setSession(session) {\r\n  var sId   = Session.getTemporaryActiveUserKey();\r\n  var uProp = PropertiesService.getUserProperties();\r\n  uProp.setProperty(sId, JSON.stringify(session));\r\n}\r\n\r\nfunction getSession() {\r\n  var sId   = Session.getTemporaryActiveUserKey();\r\n  var uProp = PropertiesService.getUserProperties();\r\n  var sData = uProp.getProperty(sId);\r\n  return sData ? JSON.parse(sData) : { loggedIn: false };\r\n}\n\nfunction UserRegister(pUID, pPassword, pName) {\n    \n    let RetMsg = '';\n    let ReturnData = LoginSheet.getRange(\"A:A\").createTextFinder(pUID).matchEntireCell(true).findAll();\n    let StartRow = 0;\n    ReturnData.forEach(function (range) {\n      StartRow = range.getRow();\n    });\n\n    if (StartRow > 0) \n    {\n      RetMsg = 'danger, User Already Exists';\n    }\n    else\n    {\n      LoginSheet.appendRow([pUID, pPassword, pName]) ;  \n      RetMsg = 'success, User Successfully Registered'; \n    }\n\n    return  RetMsg;\n}\n\nfunction sendPassword(id,nm)\r\n{\r\n   let OTP = \"\" + Math.ceil((Math.random() + 1) * 1000);\r\n   OTP = OTP.substring(0,4);\r\n\r\n   let MsgBody =   \"&lt;h4>Hello, &lt;b>\"+nm+\"&lt;\/b>&lt;p>Your OTP for Login&lt;\/p>&lt;\/h4>&lt;h1>\"+OTP+\"&lt;\/h1>\";\r\n   \r\n   \/\/MailApp.sendEmail(id, \"OTP For Login\", MsgBody);\r\n    MailApp.sendEmail({to: id, subject: \"OTP For Login\", htmlBody: MsgBody});\r\n    \r\n\r\n    var sess = getSession();\r\n    sess.OTP = OTP;\r\n    setSession(sess);\r\n\r\n    return 'success, OTP has been sent to your Mail';\r\n}\n\nfunction CheckOTP(pUID, pPassword, pName, pOTP)\r\n{\r\n\r\n    var sess = getSession();\r\n     if (sess.OTP == pOTP) \r\n     {\r\n          return UserRegister(pUID, pPassword, pName) ;\r\n     }\r\n     else\r\n     {\r\n          return 'danger, OTP Not Matched';\r\n\r\n     }\r\n}\r\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"6-video-\u0915\u0947-\u092e\u093e\u0927\u094d\u092f\u092e-\u0938\u0947-\u0938\u092e\u091d\u0928\u0947-\u0915\u0947-\u0932\u093f\u090f\">6. Video \u0915\u0947 \u092e\u093e\u0927\u094d\u092f\u092e \u0938\u0947 \u0938\u092e\u091d\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f <\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"\ud83d\udcf0Email OTP : User Registration in Google Apps Script Tutorial | Send Email Using Apps Script\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/ZfTGavM9D7w?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"7-execution-user-registration\">7. Execution (User Registration)<\/h2>\n\n\n\n<p>\u0907\u0938 Page \u0938\u0947 \u0939\u092e \u0915\u094b\u0908 \u092d\u0940 \u0928\u090f User \u0915\u093e Registration \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 \u0964 \u0907\u0938\u092e\u0947 Example \u0915\u0947 \u0915\u0947\u0935\u0932 \u0935\u0939\u0940 Columns \u0932\u093f\u090f \u0939\u0948\u0902 \u091c\u094b \u091c\u0930\u0942\u0930\u0940 \u0939\u0948\u0902 \u0906\u092a \u091a\u093e\u0939\u0947 \u0924\u094b \u0914\u0930 \u092d\u0940 Columns \u0932\u0947 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 \u0964 \u0907\u0938 Page \u092a\u0930 \u0939\u092e\u0928\u0947 \u0915\u0941\u091b Validation \u092d\u0940 \u0932\u0917\u093e\u090f \u0939\u0948\u0902 \u0964 <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"639\" height=\"604\" src=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-18.png?resize=639%2C604&#038;ssl=1\" alt=\"\" class=\"wp-image-11795\" style=\"width:401px;height:auto\" srcset=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-18.png?w=639&amp;ssl=1 639w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-18.png?resize=300%2C284&amp;ssl=1 300w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-18.png?resize=150%2C142&amp;ssl=1 150w\" sizes=\"auto, (max-width: 639px) 100vw, 639px\" \/><\/figure>\n<\/div>\n\n\n<p>\u0938\u092d\u0940 Field Enter \u0915\u0930\u0928\u0947 \u0915\u0947 \u092c\u093e\u0926 \u0906\u092a Send OTP Button \u092a\u0930 Click \u0915\u0930\u0947\u0902\u0917\u0947 \u0910\u0938\u093e \u0915\u0930\u0928\u0947 \u092a\u0930 \u0906\u092a\u0915\u0947 Mail \u092a\u0930 \u090f\u0915 OTP \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0939\u094b\u0917\u093e \u0914\u0930 \u0938\u093e\u0925 \u0939\u0940 \u092e\u0947 \u0906\u092a\u0915\u094b \u0928\u093f\u092e\u094d\u0928 \u092a\u094d\u0930\u0915\u093e\u0930 \u0938\u0947 Message \u0926\u093f\u0916\u093e\u0908 \u0926\u0947\u0917\u093e\u0964 <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"545\" height=\"102\" src=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-19.png?resize=545%2C102&#038;ssl=1\" alt=\"\" class=\"wp-image-11796\" style=\"width:369px;height:auto\" srcset=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-19.png?w=545&amp;ssl=1 545w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-19.png?resize=300%2C56&amp;ssl=1 300w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-19.png?resize=150%2C28&amp;ssl=1 150w\" sizes=\"auto, (max-width: 545px) 100vw, 545px\" \/><\/figure>\n<\/div>\n\n\n<p>Mail \u092e\u0947 OTP \u0915\u0941\u091b \u0907\u0938 \u092a\u094d\u0930\u0915\u093e\u0930 \u0938\u0947 \u0926\u093f\u0916\u093e\u0908 \u0926\u0947\u0917\u093e\u0964 <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"352\" src=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-20.png?resize=640%2C352&#038;ssl=1\" alt=\"How to send Email from Apps Script \" class=\"wp-image-11797\" style=\"width:617px;height:auto\" srcset=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-20.png?resize=1024%2C563&amp;ssl=1 1024w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-20.png?resize=300%2C165&amp;ssl=1 300w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-20.png?resize=768%2C422&amp;ssl=1 768w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-20.png?resize=150%2C82&amp;ssl=1 150w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-20.png?w=1262&amp;ssl=1 1262w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n<\/div>\n\n\n<p>\u0907\u0938 OTP \u0915\u094b \u0906\u092a\u0915\u094b Screen \u092a\u0930 Type \u0915\u0930\u0928\u093e \u0939\u0948\u0902 \u0938\u0939\u0940 \u0938\u0939\u0940 \u0939\u0941\u0935\u093e \u0924\u094b \u0906\u0917\u0947 \u0915\u0947 Success \u0915\u0947 Message \u0906\u090f\u0902\u0917\u0947<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"545\" height=\"99\" src=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-8.png?resize=545%2C99&#038;ssl=1\" alt=\"\" class=\"wp-image-11445\" style=\"width:357px;height:65px\" srcset=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-8.png?w=545&amp;ssl=1 545w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-8.png?resize=300%2C54&amp;ssl=1 300w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-8.png?resize=150%2C27&amp;ssl=1 150w\" sizes=\"auto, (max-width: 545px) 100vw, 545px\" \/><\/figure>\n<\/div>\n\n\n<p>\u0914\u0930 \u092f\u0926\u093f \u0906\u092a\u0928\u0947 Password \u0914\u0930 Re-enter Password same \u0928\u0939\u0940\u0902 \u0939\u094b\u0928\u0947 \u092a\u0930 \u0928\u093f\u092e\u094d\u0928 \u092a\u094d\u0930\u0915\u093e\u0930 \u0938\u0947 Message \u0906\u090f\u0917\u093e, \u092f\u0939 JavaScript \u0938\u0947 \u0915\u093f\u092f\u093e \u0939\u0948\u0902 \u0964 <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"545\" height=\"106\" src=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-5.png?resize=545%2C106&#038;ssl=1\" alt=\"\" class=\"wp-image-11438\" style=\"width:345px;height:67px\" srcset=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-5.png?w=545&amp;ssl=1 545w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-5.png?resize=300%2C58&amp;ssl=1 300w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-5.png?resize=150%2C29&amp;ssl=1 150w\" sizes=\"auto, (max-width: 545px) 100vw, 545px\" \/><\/figure>\n<\/div>\n\n\n<p>\u092f\u0926\u093f \u090f\u0915 \u092c\u093e\u0930 \u092a\u0939\u0932\u0947 \u0938\u0947 User Registered \u0939\u0948\u0902 \u0924\u092c User Already Exists \u0915\u093e Message \u0906\u090f\u0917\u093e\u0964 <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"542\" height=\"97\" src=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-9.png?resize=542%2C97&#038;ssl=1\" alt=\"\" class=\"wp-image-11447\" style=\"width:343px;height:61px\" srcset=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-9.png?w=542&amp;ssl=1 542w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-9.png?resize=300%2C54&amp;ssl=1 300w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/09\/image-9.png?resize=150%2C27&amp;ssl=1 150w\" sizes=\"auto, (max-width: 542px) 100vw, 542px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"8-google-apps-script-email-quotas-daily-mail-sending-limit\">8. Google Apps Script Email Quotas (Daily Mail Sending Limit) <\/h2>\n\n\n\n<p>Google Apps Script \u092a\u0942\u0930\u0940 \u0924\u0930\u0939 \u0938\u0947 Free \u0928\u0939\u0940\u0902 \u0939\u0948\u0902 , \u090f\u0915 \u0932\u093f\u092e\u093f\u091f \u0924\u0915 \u0906\u092a Free \u092e\u0947 \u0909\u092a\u092f\u094b\u0917 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 \u0909\u0938\u0915\u0947 \u092c\u093e\u0926 \u0906\u092a\u0915\u094b \u0928\u093f\u092e\u094d\u0928 Table \u0915\u0947 \u0905\u0928\u0941\u0938\u093e\u0930 Charges \u0932\u0917\u0947\u0902\u0917\u0947\u0964 \u092f\u0939 \u091f\u0947\u092c\u0932 16-08-2023 \u0915\u094b \u092c\u0928\u093e\u0908 \u0939\u0948\u0902 \u0907\u0938 \u0938\u092e\u092f \u0915\u0947 Charges \u092f\u0939 \u0939\u0948\u0902 \u0964 <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"338\" src=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-17.png?resize=640%2C338&#038;ssl=1\" alt=\"Apps Script Email Quota Daily Limit\" class=\"wp-image-11794\" srcset=\"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-17.png?resize=1024%2C540&amp;ssl=1 1024w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-17.png?resize=300%2C157&amp;ssl=1 300w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-17.png?resize=768%2C405&amp;ssl=1 768w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-17.png?resize=1536%2C811&amp;ssl=1 1536w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-17.png?resize=220%2C115&amp;ssl=1 220w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-17.png?resize=140%2C73&amp;ssl=1 140w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-17.png?resize=60%2C31&amp;ssl=1 60w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-17.png?resize=150%2C79&amp;ssl=1 150w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-17.png?w=1554&amp;ssl=1 1554w, https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/image-17.png?w=1280&amp;ssl=1 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>\u0906\u0936\u093e \u0939\u0948\u0902 \u092e\u0941\u091d\u0947 \u0906\u092a\u0915\u094b User Registration with OTP \u092c\u0939\u0941\u0924 \u0939\u0940 \u0905\u091a\u094d\u091b\u0947 \u0938\u0947 \u0938\u092e\u091d \u092e\u0947 \u0906 \u0917\u092f\u093e \u0939\u0948\u0902, \u0907\u0938 Article \u0938\u0947 related \u0915\u094b\u0908 \u092d\u0940 Query \u0939\u094b \u0924\u094b \u0906\u092a \u092e\u0941\u091d\u0947 \u0928\u093f\u0903\u0938\u0902\u0915\u094b\u091a comment \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 \u0964 \u092f\u0939 Article \u0915\u0948\u0938\u093e \u0932\u0917\u093e Comment \u0915\u0930\u0928\u093e \u0928 \u092d\u0942\u0932\u0947 \u0964 \u0905\u092a\u0928\u093e \u0915\u0940\u092e\u0924\u0940 \u0938\u092e\u092f \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0927\u0928\u094d\u092f\u0935\u093e\u0926 \u0964 <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u0939\u092e\u093e\u0930\u0947-\u0905\u0928\u094d\u092f-\u0906\u0930\u094d\u091f\u093f\u0915\u0932\"><strong>\u0939\u092e\u093e\u0930\u0947 \u0905\u0928\u094d\u092f \u0906\u0930\u094d\u091f\u093f\u0915\u0932<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/selfimagination.in\/tips\/mysql-function\/\">MySQL Function<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/mysql-stored-procedure\/\">MySQL Stored Procedure<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/get-post-method\/\">PHP Get \/Post Method \u0915\u0947 \u092c\u093e\u0930\u0947 \u092e\u0947\u0902 \u091c\u093e\u0928\u0947<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/php-math-function\/\">PHP Math Function \u0915\u0947 \u092c\u093e\u0930\u0947 \u092e\u0947\u0902 \u091c\u093e\u0928\u0947<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/learn-cpp-from-c\/\">C \u0938\u0947 C ++ \u0938\u0940\u0916\u0947 \u0938\u0930\u0932 \u0936\u092c\u094d\u0926\u094b\u0902 \u092e\u0947\u0902<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/php-variables\/\">PHP Variable \u0915\u0947 \u092c\u093e\u0930\u0947 \u092e\u0947\u0902 \u091c\u093e\u0928\u0947<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/arduino-control-structure\/\">Arduino Control Structure<\/a>&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/c-union\/\">Union in C<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/c-pointer\/\">Declaration of Pointer in C<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/search-jquery\/\">jQuery Search Filter<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/mysql-table-create-alter-drop\/\">MySQL Create Table | Alter Table | Drop Table<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/api-using-node-react-express-mysql\/\">API Using NODE REACT EXPRESS MYSQL SEQUELIZE (For Backend OR Server Side)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/selfimagination.in\/tips\/cpanel\/\">CPANEL In Hindi<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>User Registration with OTP, User Registration with Email OTP, How to Send Mail Using Apps Script \u092f\u0926\u093f \u0906\u092a \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902 \u0915\u0940 \u092d\u0940 \u0906\u092a \u091c\u092c \u092d\u0940 \u0915\u094b\u0908 \u0928\u092f\u093e User Registered \u0939\u094b \u0924\u092c user \u0915\u0947 Mail \u092a\u0930 \u0915\u0947 OTP \u091c\u093e\u090f \u0914\u0930 \u0938\u0939\u0940 OTP Enter \u0915\u0930\u0928\u0947 \u0915\u0947 \u092c\u093e\u0926 \u0939\u0940 User Registered \u0939\u094b \u0938\u0915\u0947, \u0907\u0938\u0915\u093e \u090f\u0915 \u092b\u093e\u092f\u0926\u093e \u092f\u0939 \u092d\u0940 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11799,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[28],"tags":[],"class_list":["post-11790","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-google-apps-script"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/selfimagination.in\/tips\/wp-content\/uploads\/2023\/12\/email-otp-apps-script.jpg?fit=1280%2C720&ssl=1","_links":{"self":[{"href":"https:\/\/selfimagination.in\/tips\/wp-json\/wp\/v2\/posts\/11790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/selfimagination.in\/tips\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/selfimagination.in\/tips\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/selfimagination.in\/tips\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/selfimagination.in\/tips\/wp-json\/wp\/v2\/comments?post=11790"}],"version-history":[{"count":4,"href":"https:\/\/selfimagination.in\/tips\/wp-json\/wp\/v2\/posts\/11790\/revisions"}],"predecessor-version":[{"id":11800,"href":"https:\/\/selfimagination.in\/tips\/wp-json\/wp\/v2\/posts\/11790\/revisions\/11800"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/selfimagination.in\/tips\/wp-json\/wp\/v2\/media\/11799"}],"wp:attachment":[{"href":"https:\/\/selfimagination.in\/tips\/wp-json\/wp\/v2\/media?parent=11790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/selfimagination.in\/tips\/wp-json\/wp\/v2\/categories?post=11790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/selfimagination.in\/tips\/wp-json\/wp\/v2\/tags?post=11790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}