Modify Google Sheet from HTML | HTML Invoices from Google Sheets Data and Update Records

Modify Google Sheet from HTML : Generate professional HTML invoices dynamically from Google Sheets data, and efficiently update records. Learn how to seamlessly modify Google Sheets directly from HTML using easy-to-implement techniques.

इस Article(Modify Google Sheet from HTML) मे हमने Local HTML Page से Google Sheet पर Data भेजना और Save करना , और जो पहले से सैव Data हैं उसे HTML पर Java Script और Apps Script की मदद से Open करना और Changes कर पुनः Data को Google Sheet पर Update करना बताया गया हैं ।

  • यह Article 3 Part मे लिखा गया हैं सबसे पहले Part मे हमने Data को HTML से Google Sheet पर Send किया था और Save किया था वह आपको निम्न Article मे Detail मे मिल जाएगा।

Submit a HTML Form to Google Sheet using Apps Script

  • दूसरे Part मे Google Sheet पर Saved Data को Open कर दिखाया था जिसके बारे मे जानकारी आपको निम्न Article से मिल जाएगी ।

Effortlessly Search HTML Invoices from Google Sheet with Apps Script

  • और तिरसे और इस परत मे हम जो data हमने Open किया हैं उसे Google Sheet पर Update कर रहे हैं । इसमे HTML, CSS, JavaScript, और Apps Script का अभी तक के तीनों ही Part का Code हैं लेकिन हिन्दी मे Detail Description के लिए इस Article मे केवल तीसरे Part से Related ही लिखा गया हैं,

Step 1 : Create a Google Sheet

सबसे पहले आप निम्न Format मे एक Google Sheet बना लीजीए , इसमे आपको दो Sheet बनाना हैं , एक का नाम Inv रखना हैं और दूसरे का नाम Item रखना हैं,

Inv वाली Sheet मे Invoice से Related Data हैं, आप अपने कार्य के अनुसार यहाँ पर Data ले सकते हैं ।

निम्न Sheet जिसका नाम Item हैं इसमे हमने Item का Data लिया हैं । यहाँ पर भी आप अपने व्यवसाय के अनुसार लिस्ट का उपयोग कर सकते हैं ।

उपरोक्त दोनों ही Sheet का नाम का आपको विशेष ध्यान रखना हैं पहली Sheet ओर दूसरी Sheet दोनों मे ही आपको I Capital मे ही लेना हैं । यदि आपने Capital मे नहीं लिया तो Link होने मे इशू आएंगे ।


Modify Google Sheet from HTML on YouTube

Step 2 : Apps Script Code for Modify Google Sheet from HTML

अब आपको Extension मे जा कर Apps Script Open करना हैं ।

Apps Script मे आपको यह निम्न Code Paste करना हैं ।

let MySheets  = SpreadsheetApp.getActiveSpreadsheet();  //01
let InvSheet  = MySheets.getSheetByName("Inv");                   
let ItemSheet = MySheets.getSheetByName("Item");

function doPost(e)          //02 
{
  let Inv = e.parameters; 
  let Qtys = Inv.qty;     
  let IsNew = Inv.IsNew;

  if (IsNew == 'Y') {
    InvSheet.appendRow([Inv.inv_no[0], Inv.inv_dt[0], Inv.cust_nm[0], Inv.addr[0], Inv.city[0]]);    //06

    let i = 0;
    Qtys.forEach(function (value, index)                       //07
    {
      if (i > 0) {
        InvSheet.appendRow(["", "", "", "", "", Inv.item_nm[index], value, Inv.rate[index], Inv.amt[index]]);  //08
      }
      i++;


    });
  }
  else {

    InvSheet.getRange(Inv.StartRow, 1, 1, 5).setValues([[Inv.inv_no[0], Inv.inv_dt[0], Inv.cust_nm[0], Inv.addr[0], Inv.city[0]]]);

    let NextRow = Inv.StartRow;
    let DeleteRow = +Inv.StartRow + 1;
    InvSheet.deleteRows(DeleteRow, Inv.RowCount);

    let i = 0;
    Qtys.forEach(function (value, index)                       //07
    {
      if (i > 0) {
        NextRow++;
        InvSheet.insertRows(NextRow, 1);
        InvSheet.getRange(NextRow, 1, 1, 9).setValues([["", "", "", "", "", Inv.item_nm[index], value, Inv.rate[index], Inv.amt[index]]]);

      }
      i++;
    });
  }
  return ContentService.createTextOutput("Data Submitted"); //09
}

function doGet(e) {  //03

  let page = e.parameter.page;

  if (page == null || page == undefined) {
    page = "index";
    return HtmlService.createTemplateFromFile(page).evaluate();
  }
  else if (page == 'dropdown') {
    let table = ItemSheet.getRange("A:A").getValues().filter(r => r.every(Boolean));
    let str = JSON.stringify(table);
    return ContentService.createTextOutput(str);
  }
  else if (page == 'max') {
    let table = InvSheet.getRange("A:A").getValues().filter(Number);
    let myMax = Math.max(...table) + 1;
    return ContentService.createTextOutput(myMax);
  }
  else if (page == 'search') {
    let no = e.parameter.no;
    let ReturnData = InvSheet.getRange("A:A").createTextFinder(no).matchEntireCell(true).findAll();

    let StartRow = 0;
    let EndRow = 0;

    ReturnData.forEach(function (range) {
      StartRow = range.getRow();
    });

    if (StartRow > 0) {

      for (var i = StartRow + 1; i <= StartRow + 10; i = i + 1) {

        let val = InvSheet.getRange(i, 6).getValue();

        if (val == "") {
          EndRow = i - 1;
          break;
        }

      }

      let table = InvSheet.getRange("A" + StartRow + ":I" + EndRow).getValues();

      //let str = JSON.stringify(table);
      let cnt = EndRow - StartRow;
      let str = JSON.stringify({ record: table, SR: StartRow, CNT: cnt });

      return ContentService.createTextOutput(str);
    }
    else {
      let str = JSON.stringify("NOT FOUND");
      return ContentService.createTextOutput(str);
    }
  }

  else if (page == 'all') {
       let table = InvSheet.getRange("A:E").getValues().filter(r=>r.every(Boolean));
       let str = JSON.stringify(table);
       return ContentService.createTextOutput(str); 
  }

 
}


  • 01 : इसमे हमने जो Sheet पर दो pages या sheet बनाई थी उन दोनों ही Sheet को Connect किया हैं ।
  • 02 : यहाँ पर हमने Invoice ke Data को Save करने से Related Code लिखा हैं ।
  • 03 : यहाँ पर हमें Parameter pass कर अलग – अलग तरह के टास्क किए हैं ।
    • Dropdown : इससे हमने Item की Dropdown मे Data दिखाया हैं ।
    • Max : इससे हमने जो Invoice open करते ही New Number आता हैं उसे Generate करवाया हैं ।
    • Search : इससे हम दिए गए Invoice No पर Record को Open करवाते हैं ।
    • All : इससे हमने एक साथ सभी Invoice की List जो Show All Data Click करने से आती हैं उसे दिखाया हैं ।

इसके बाद आपको इस Apps Script को डिप्लॉइ करना हैं । डिप्लॉइ कैसे किया जाता हैं इसके बारे मे मेरे द्वारा Article बनाया गया हैं आप निम्न Article की Help से Deploy कर सकते हैं ।

Article : DEPLOYING APPS SCRIPT AS A WEB API: A STEP-BY-STEP GUIDE

Successfully Deploy होने के बाद आपको एक Link मिलता हैं उस लिंक को आपको copy करना हैं और जो हम JavaScript लिखेंगे तब उस Link को आपको Paste करना होगी , जो निम्न प्रकार से होगी ।

https://script.google.com/macros/s/AKfy……XOQ/exec


Step 3 : Create HTML Page for Modify Google Sheet from HTML

इसके बाद आप अपने local Computer या जिस भी Server पर Google Sheet का Data दिखाना चाहते हैं वहाँ पर एक HTML का Page बना लीजिए जिसका नाम आपको index.html रखना हैं या आप अपने हिसाब से भी रख सकते हैं ।

इस HTML Code के form tag पर action मे हमे Apps Script से Deploy कर जो लिंक आई थी वही Paste करना हैं , ऐसा करने से जब हम form को save करेंगे तो Data Google Sheet पर Store हो जाएगा ।

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Imagination Invoice Example</title>
    <!-- For Bootstrap-->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
    
    <!-- CSS For Print Format -->
    <link rel="stylesheet" media="print" href="invoiceprint.css">
    
    <!-- CSS For Invoice -->
    <link rel="stylesheet"  href="invoice.css">

    <!-- jQuery CDN -->
    <!--<script src="https://code.jquery.com/jquery-3.6.2.slim.js" integrity="sha256-OflJKW8Z8amEUuCaflBZJ4GOg4+JnNh9JdVfoV+6biw=" crossorigin="anonymous"></script>-->
    <script src="https://code.jquery.com/jquery-3.6.3.js" ></script>
    <!-- For Invoice  -->
    <script src="invoice.js"></script>
    
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.3.0/font/bootstrap-icons.css">

</head>
  <body>
    

    <div class="container ">

      <form method="POST" class="needs-validation" novalidate   action="https://script.google.com/macros/s/.../exec"   >

        <div class="card mt-3">
            <div class="card-header text-center">
             <h4>Imagination (INVOICE) Apps Script</h4>
            </div>
            <div class="card-body">
               <div class="row">
                    <div class="col-8">
                        <div class="input-group mb-3">
                            <span class="input-group-text" >Customer</span>
                            <input type="text" class="form-control"   
                                   placeholder="Customer" name="cust_nm" 
                                   required minlength="4"  >

                            <div class="invalid-feedback">
                                Please Enter Customer Name </div>                          
                        </div>
            
                        <div class="input-group mb-3">
                            <span class="input-group-text" >Address</span>
                            <input type="text" 
                                   class="form-control" placeholder="Address" 
                                   name="addr"  >
                        </div>
            
                        <div class="input-group mb-3">
                            <span class="input-group-text" >City</span>
                            <input type="text" class="form-control" 
                                   placeholder="City"  name="city">
                        </div>
                    </div>
                    <div class="col-4">
                      
                        <div class="input-group mb-3">
                            <span class="input-group-text" >Inv. No</span>
                            <input type="text" class="form-control" 
                                   placeholder="Inv. No"  id="inv_no" 
                                   name="inv_no" autocomplete="off" 
                                   required >
                            <div class="input-group-append">
                                  <button class="btn btn-outline-secondary"  
                                          type="button" onclick="Search();">
                                      <i class="bi bi-search"></i></button>
                            </div>
                            <div class="valid-feedback">Invoice No. is 
                            OK</div>
                        </div>

                        <div class="input-group mb-3">
                            <span class="input-group-text" >Inv. Date</span>
                            <input type="date" class="form-control" 
                                   placeholder="Inv. Date" name="inv_dt">
                        </div>
                    </div>
               </div>

               <input type="hidden"  id="IsNew"    name="IsNew"    value="Y">
               <input type="hidden"  id="StartRow" name="StartRow" value="0"> 
               <input type="hidden"  id="RowCount" name="RowCount" value="0"> 

                <table class="table table-bordered">
                    <thead class="table-success">
                      <tr>
                        <th scope="col">#</th>
                        <th scope="col">Particular</th>
                        <th scope="col" class="text-end">Qty</th>
                        <th scope="col" class="text-end">Rate</th>
                        <th scope="col" class="text-end">Amount</th>
                        <th scope="col" class="NoPrint">                         
                            <button type="button" 
                                    class="btn btn-sm btn-success" 
                                    onclick="BtnAdd()">+</button>
                        </th>

                      </tr>
                    </thead>
                    <tbody id="TBody">
                      <tr id="TRow" class="d-none">
                        <th scope="row">1</th>
                        <td>
                          <input class="form-control " name="item_nm" 
                                 list="mylist" autocomplete="off" 
                                 required value="a"  >
                          <datalist id="mylist" ></datalist>
                        </td>
                        <td><input type="number" 
                                   class="form-control text-end" name="qty"  
                                   onchange="Calc(this);" ></td>
                        <td><input type="number" 
                                   class="form-control text-end" name="rate" 
                                   onchange="Calc(this);"></td>
                        <td><input type="number" 
                                   class="form-control text-end" name="amt" 
                                   value="0" readonly=""></td>
                        <td class="NoPrint">
                          <button type="button" class="btn btn-sm btn-danger" 
                                  onclick="BtnDel(this)">X</button></td>
                      </tr>
                    </tbody>
                  </table>

                  <div class="row">
                    <div class="col-8">
                        <button type="submit" 
                                class="btn btn-primary" >Submit</button>
                        <button type="button" class="btn btn-primary"  
                                onclick="GetPrint()">Print</button>
						<button type="button" class="btn btn-primary"  
                                onclick="ShowAllData()">Show All Data</button>
                    </div>
                    <div class="col-4">
                        <div class="input-group mb-3">
                            <span class="input-group-text" >Total</span>
                            <input type="number" 
                                   class="form-control text-end" id="FTotal" 
                                   name="FTotal" disabled="">
                        </div>
                        <div class="input-group mb-3">
                            <span class="input-group-text" >GST</span>
                            <input type="number" 
                                   class="form-control text-end" id="FGST" 
                                   name="FGST" onchange="GetTotal()">
                        </div>
                        <div class="input-group mb-3">
                            <span class="input-group-text" >Net Amt</span>
                            <input type="number" 
                                   class="form-control text-end" id="FNet" 
                                   name="FNet" disabled="">
                        </div>
                    </div>
                </div>
            </div>
          </div>
        </form>
    </div>
	
	<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h1 class="modal-title fs-5" id="exampleModalLabel">Show Invoice</h1>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
       <table class="table table-striped">
		<tbody id="MyTBody"></tbody>
	   </table>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
        
      </div>
    </div>
  </div>
</div>
	
	
	<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js" integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r" crossorigin="anonymous"></script>
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.min.js" integrity="sha384-fbbOQedDUMZZ5KreZpsbe1LCZPVmfTnH7ois6mU1QK+m14rQ1l2bGBq41eYeM/fS" crossorigin="anonymous"></script>

  </body>
</html>

Step 4 : Create CSS File

अब हमे एक CSS फाइल बनाना होगी जीसे हमने HTML (index.html) पर लिंक किया हैं । जिसका नाम हमने invoice.css रखा हैं ।

.input-group-text {
   width: 85px;
}   

Step 5: Create CSS Media Print File for Print View

हमने यहा पर इसी HTML का एक Print View भी बनाया हैं जिसके लिए हमने invoiceprint.css का उपयोग किया हैं जीसे भी हमने HTML (index.html) से लिंक किया हैं । इसकी मदद से हम जैसा भी हमारा Print View बनाना चाहते है आसानी से बना सकते हैं ।


.btn , .NoPrint 
{
    display: none;
}

.form-control
{
    border: 0px;
}

.input-group-text
{
    border: 0px;
    background-color: white;
}

table 
{
    border : 1px solid black;
}

Step 6 : Create JavaScript File For Modify Google Sheet from HTML

इसके बाद हमने एक JavaScript file बनाना होगी जिससे की सभी Event को handle करना होगा ।

इसमे आपको जो Link Apps Script Code को Deploy करने के बाद प्राप्त हूई थी उसे पेस्ट करना हैं । ध्यान रहे केवल जो https://script.google.com/macros/s/ इसके बाद जो कोड होता हैं /exec के बीच का केवल उतना ही यहाँ पर आपको Paste करना हैं ।

var AppsScriptLink = "AKf......OQ";


function GetPrint()
{
    /*For Print*/
    window.print();
}

function BtnAdd()
{
    /*Add Button*/
    var v = $("#TRow").clone().appendTo("#TBody") ;
    $(v).find("input").val('');
    $(v).removeClass("d-none");
    $(v).find("th").first().html($('tr').length - 2);
}

function BtnDel(v)
{
    /*Delete Button*/
    $(v).parent().parent().remove();
    GetTotal();
    ReGenSrNo();
}

function ReGenSrNo()
{
     $("#TBody").find("tr").each(
     function(index)
     {
          $(this).find("th").first().html(index);
     }
     );
}

function Calc(v)
{
    /*Detail Calculation Each Row*/
    var index = $(v).parent().parent().index();

    var qty = document.getElementsByName("qty")[index].value;
    var rate = document.getElementsByName("rate")[index].value;

    var amt = qty * rate;
    document.getElementsByName("amt")[index].value = amt;

    GetTotal();
}

function GetTotal()
{
    /*Footer Calculation*/  

    var sum=0;
    var amts =  document.getElementsByName("amt");

    for (let index = 0; index < amts.length; index++)
    {
        var amt = amts[index].value;
        sum = +(sum) +  +(amt) ;
    }

    document.getElementById("FTotal").value = sum;

    var gst =  document.getElementById("FGST").value;
    var net = +(sum) + +(gst);
    document.getElementById("FNet").value = net;


}

$(document).ready(function () {
    FormValidation();
    SetCurrentDate();
    BtnAdd();
    FillDataList();
    MaxInv();
      
       
});


function FillDataList()
{
        $.getJSON("https://script.google.com/macros/s/"+AppsScriptLink+"/exec?page=dropdown",
       
        function (data) {

          var Options="";

          $.each(data, function(key, value)
          {
            Options = Options + '<option>' + value + '</option>';
          });

          $("#mylist").append(Options);
         
        });
}

function MaxInv()
{
        $.getJSON("https://script.google.com/macros/s/"+AppsScriptLink+"/exec?page=max",
        function (data) {
         
          $("input[name='inv_no']").val(data);

        });
}


function SetCurrentDate()
{
    const date = new Date();
    console.log(date);

    let d = date.getDate();
    let m = date.getMonth() + 1;
    let y = date.getFullYear();

    if (d < 10) d = '0' + d;
    if (m < 10) m = '0' + m;

    let CurrDate = y + '-' + m + '-' + d;

    $('input[name="inv_dt"]').val(CurrDate);

}


function FormValidation()
{
    // Example starter JavaScript for disabling form submissions if there are invalid fields
(function () {
    'use strict'
 
    // Fetch all the forms we want to apply custom Bootstrap validation styles to
    var forms = document.querySelectorAll('.needs-validation')
 
    // Loop over them and prevent submission
    Array.prototype.slice.call(forms)
      .forEach(function (form) {
        form.addEventListener('submit', function (event) {
          if (!form.checkValidity()) {
            event.preventDefault()
            event.stopPropagation()
          }
 
          form.classList.add('was-validated')
        }, false)
      })
  })()
}

function Search(pNo="")
{
        var no = $('#inv_no').val();

		if (pNo != "") no = pNo;

        $.getJSON("https://script.google.com/macros/s/"+AppsScriptLink+"/exec?page=search&no="+no,
        function (data) {

         
          //alert(data);
         // console.log(data);
          if (data == "NOT FOUND")
          {
            alert('Invoice No. Not Found...');

          }
          else
          {
            //var record = data;
            var record   = data.record;

            var StartRow = data.SR;
            var RowCount = data.CNT;

            $('#IsNew').val('N');
            $('#StartRow').val(StartRow);
            $('#RowCount').val(RowCount);
         
            var i = 0;
            $.each(record, function(key, value)
            {
           
              if (i == 0)
              {
                var dt = value[1].substring(0,10);
                document.getElementsByName("inv_no")[0].value = value[0];
                document.getElementsByName("inv_dt")[0].value = dt;
                document.getElementsByName("cust_nm")[0].value = value[2];
                document.getElementsByName("addr")[0].value = value[3];
                document.getElementsByName("city")[0].value = value[4];
              }
              else
              {
                if (i > 1) BtnAdd();
               
             
                document.getElementsByName("item_nm")[i].value = value[5];
                document.getElementsByName("qty")[i].value     = value[6];
                document.getElementsByName("rate")[i].value    = value[7];
                document.getElementsByName("amt")[i].value     = value[8];

              }

              i = i + 1;
            });

            GetTotal();
			ReGenSrNo();

          }
        });
		$('#exampleModal').modal('hide');
		 
}

function ShowAllData()
{
	$(document).ready(function (){
		
		$.getJSON("https://script.google.com/macros/s/"+AppsScriptLink+"/exec?page=all",
        function (data) {
	
		var Table="", Rows="", Columns="";
		$.each(data, function(key, value)
		{
			var InvNo="";
			Columns ="";
			i=0;
			$.each(value, function(key1, value1)
			{
				i++;
				if (i ==2) 
				{
					value1 = "" + value1;
					value1 = value1.substring(0, 10);	
				}
				Columns = Columns + '<td>' + value1 + '</td>';
				if (InvNo == "") InvNo = value1;
				
				
			});
			Rows = Rows + '<tr onclick="Search('+InvNo+')">' + Columns + '</tr>';
		});
		
		$("#MyTBody").html(Rows);
		$('#exampleModal').modal('show');
	});	
	});			

}
  • GetPrint() : इस Function से हम HTML Invoice का Print View देख सकत हैं और साथ ही मे Print निकाल सकते हैं ।
  • BtnAdd() : इस Function से हम Detail वाली Table मे Rows Add कर सकते हैं ।
  • BtnDel() : इस Function से हम Table से Rows को Delete कर सकत हैं ।
  • ReGenSrNo() : इस ReGenSrNo Function से हम Delete करने से Sr No को फिर से सही करते हैं ।
  • Calc() : इस Calc से हम Amount से Related Calculation करते हैं ।
  • GetTotal() : इस GetTotal Function से हम Header के Total को Footer मे Shift करते हैं ।
  • FillDataList() : इस FillDataList Function से हम Item की select लिस्ट मे Data को Fill करते हैं ।
  • MaxInv() : इस MaxInv Function से हम Open करने पर जो नई Invoice का No Generate होता हैं वह दिखाई देता है।
  • SetCurrentDate() : इस Function से हम Invoice पर आज की दिनांक सेट करते हैं ।
  • FormValidation() : इस FormValidation Function से हम Form के Validation से Related working करते हैं।
  • Search() : इस Search Function से हम Invoice no दे कर Google Sheet के data को HTML पर दिखाते हैं।
  • ShowAllData() : इस ShowAllData Function से हम Google Sheet के data को Modal मे display करवाते हैं जिससे की User उस पर Click कर data को HTML Page पर दिखा सके ।

Step 7: Preview HTML for Modify Google Sheet from HTML

इसके बाद हम HTML (index.html) File को Browser पर run कर देखेंगे ।

Page Open होने के बाद आपको Show All Data Button पर click करना हैं ऐसा करने से कुछ ही समय मे आपको निम्न प्रकार से Show Invoice Dialog Box दिखाई देगा । इसमे आपको Display Google Sheets Data in a Table होने लगेगा।

उपरोक्त Dialog Box मे दिखाई देने वाली Entries मे से आप जिस पर भी Click करेंगे वह Open हो कर कुछ निम्न तरह से दिखाई देने लगेगा ।

अब आए हुवे Data मे कुछ भी बदलाव कर जब आप अपडेट करेंगे तो data Google sheet मे भी चेंज हो जाएगा, आइए हम इस उपरोक्त Record मे Item का नाम बदल देते हैं ।

Submit करने के बाद जब आप Data Google Sheet मे देखेंगे तो कुछ इस प्रकार दिखाई देगा। Modify Google Sheet from HTML

आशा हैं मुझे की आपको किस तरह से HTML पर Google Sheet से दिखाई दे रहे Record को किस तरह से पुनः Google Sheet पर Update किया जाता हैं समझ मे आ गया होगा। आपको यह Article Modify Google Sheet from HTML कैसा लगा बताना न भूले ।


हमारे अन्य आर्टिकल

आपका समय देने का धन्यवाद! हमें खुशी हुई कि आपने हमारे ब्लॉग को पढ़ा और विचार साझा किया। यदि आपको हमारे ब्लॉग से कुछ नया सिखने को मिला हो या यह आपके लिए उपयोगी रहा हो, तो कृपया इसे अपने दोस्तों और परिवार के साथ साझा करें। हमें और भी रोचक विषयों पर लिखने का इच्छुक है, इसलिए आप हमारे साथ जुड़े रहें और हमारे ब्लॉग को नियमित रूप से चेक करते रहें।

यदि आपके पास कोई सुझाव या प्रतिक्रिया है, तो कृपया हमें बताएं, हम आपके विचारों का स्वागत करेंगे। धन्यवाद फिर से और बिताए गए समय के लिए आपका धन्यवाद। साथ में आने वाले ब्लॉगों में भी मिलते रहें। आपका साथ हमारे लिए महत्वपूर्ण है।

One Comment

Add a Comment

Your email address will not be published. Required fields are marked *