Google Sheets - TEST

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
9,396
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
Google Sheets web tabanlı bir elektronik tablo uygulaması olduğu için, web'deki bir sayfa üzerinden Google Drive'da barındırdığımız bir Sheet'e, web sayfası üzerindeki bir form'dan verileri yazdırıp, saklayabileceğimiz bir yol olup olmayacağını, epeyce kafa-göz yardıktan sonra buldum​

Şu anda test ve geliştirme aşamasındayım..... Veri tababnına aynı anda 2 kişi bağlandığında herhangibir problem yok ancak, daha fazla kullanıcı olduğunda durumun ne olacağını bilmediğimden, kodu bu duruma göre biraz revize ettim ama, doğal olarak bir test ortamına ihtiyaç duydum. Bu teste katılmak isteyenler, aşağıda yazılanları uygulayarak teste katılabilir...​

Deneme yapmak üzere; aşağıdaki yer alan kodları bir metin dosyasına yazıp, uzantısını *.html olarak değiştirdikten sonra açın.

HTML:
<!DOCTYPE html>

<html>

  <head>

    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9" />

  </head>

  <body>

    <form action="https://script.google.com/macros/s/AKfycbx1XK_WVnQHFBy0n1jz6iRLUgls98BHvZYXUOZpNsyhbflpdjU/exec" method="post" accept-charset="utf-8">

    İsim: <br><input type="text" name="isim" size="48">
    <br><br>

    Mesaj: <br><textarea name="mesaj" rows="4" cols="50"></textarea>

    <input type="hidden" id="time" name="zaman" value="CurrentDate">

    <script type="text/javascript">
            var d = new Date();
            document.getElementById("time").value = d.toLocaleString('tr-TR');
    </script>

    <br><br>

    <input type="submit" value="Gönder">

    </form>

    <br><br>

    <a href="https://docs.google.com/spreadsheets/d/1Z2TcF5WfRvwX3XFuwhwP8RHpELoGct_OJtMeqLjiElE/edit#gid=0">Sonuçları gör</a>

  </body>

</html>


HTML dosyasını açtığınızda, aşağıdaki gibi bir görüntü alacaksınız...


Capture.PNG

HTML dosyasındaki form kutularına bilgileri girip, "Gönder" butonuna tıklayın. Form bilgileri, veri tabanına gönderildikten sonra tarayıcınızın "Back-Geri" tuşuna basıp, formun altındaki "Sonuçları gör" linke tıkladığınızda gönderdiğiniz bilgilerin veri tabanına kaydedildiğini görebilmeniz gerekir....

.
 
Son düzenleme:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
9,396
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
Bir web sitemiz olmadı ki ...... biz de yayınlayalım böyle :)

.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
9,396
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
Şu anda 5 kişi bağlı .... sorun yok gibi.

Diğer forum üyeleri de teste katılsa çok iyi olacak....

.
 

Asri

Altın Üye
Altın Üye
Katılım
24 Nisan 2005
Mesajlar
3,217
Excel Vers. ve Dili
Office 2016 EN 64 Bit
@Haluk bey oto testi bitirmek için buradan mesaj yazarsanız durdururum
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
9,396
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
Asri Bey, Murat Bey'in stress testi bitti .... sizinkini de sonlandırabilirz artık.

Çok teşekkürler...
 

Asri

Altın Üye
Altın Üye
Katılım
24 Nisan 2005
Mesajlar
3,217
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Asri Bey, Murat Bey'in stress testi bitti .... sizinkini de sonlandırabilirz artık.

Çok teşekkürler...
Güzel bir etkinlikti :)
Web sitemdeki linki kaldırayım mı? kalabilir benim açımdan sorun yok.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
9,396
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
Zeki Gürsoy, Murat Boz, Asri ve Ömer Faruk beyler ... teste katılımınız için teşekkür ederim.

Söz konusu çalışma bir "chat" uygulamasından daha çok, merkez ofisin dışında sahada çalışanların, saha verilerini bir veri tabanına yükleyerek güncellenmesi için düşünüldü.

Çoklu kullanıcı ile yapılan test ise, başarıyla sonuçlandı.

Tekrar, teşekkürler...

.
 
Son düzenleme:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
9,396
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
Asri Bey, linki kaldırabilirsiniz ... teşekkürler.

Zaten isteyenlere yönelik, lokal HTML sayfası için kodları 1. mesajda vermiştim. İsteyenler, onu da kullanabilir.


.
 
Son düzenleme:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
9,396
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
HTML formunda Türkçe karakterlerde sıkıntı yaşayanlar için, 1. mesajdaki HTML kodu revize edilmiştir.

.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
2,822
Excel Vers. ve Dili
Excel 2010-TR (32 bit)
@Haluk Bey, yine zoru başarmışsınız. ("˙ɹılɐ uɐɯɐz zısuɐʞɯ! zıɹıɹɐşɐq nɹoz”)

Burada işin asıl zor kısmı gönderilecek URL yi elde etmek. Benim kullandığım yöntem Google form düzenleyip verileri google sheete veri gönderirken gönderdiği datayı analiz edip oradan url ve entry id lerini almak. Siz daha başka bir yöntem kullandıysanız öğrenmek isterim.

Benim excel üzerinden gönderirken kullandığım kodları uyarladım.

Kod:
Sub googleSheeteAktarX()
  postDataX [b2] & "-X", [b3]
End Sub

Sub postDataX(ilkAlan As String, ikinciAlan As String)

    With CreateObject("scriptcontrol")
        .Language = "JScript"
        ilkAlan = .Run("encodeURIComponent", ilkAlan)
        ikinciAlan = .Run("encodeURIComponent", ikinciAlan)
    End With
  
    URL = "https://script.google.com/macros/s/AKfycbxqEJumZlSjjtyFYFgxUeP9O2gY3GgA2pcivYKzNlb8QbmQ21c/exec" & _
        "?isim=" & ilkAlan & "&mesaj=" & ikinciAlan & "&zaman=" & Format(Now, "dd.mm.yyyy hh:mm:ss") & ""
   
    With CreateObject("MSXML2.XMLHTTP")
        .Open "POST", URL, True
        '.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
        .send
    End With
   
End Sub
Kod:
Sub googleSheeteAktar()
  postData [b2], [b3]
End Sub

Sub postData(ilkAlan As String, ikinciAlan As String)
 
    With CreateObject("scriptcontrol")
        .Language = "JScript"
        ilkAlan = .Run("encodeURIComponent", ilkAlan)
        ikinciAlan = .Run("encodeURIComponent", ikinciAlan)
   
        URL = "https://script.google.com/macros/s/AKfycbxqEJumZlSjjtyFYFgxUeP9O2gY3GgA2pcivYKzNlb8QbmQ21c/exec" & _
              "?isim=" & ilkAlan & "&mesaj=" & ikinciAlan & "&zaman=" & Format(Now, "dd.mm.yyyy hh:mm:ss") & ""
        code = "function gonder(){" & _
                "var url ='" & URL & "';" & _
                "var xhr =  new ActiveXObject('Microsoft.XMLHTTP');" & _
                "xhr.open('POST', url, true); " & _
                "xhr.send };"
        .addcode code
        .Run "gonder"
    End With
'https://docs.google.com/spreadsheets/d/1XWNVJTd4axusTxeNM5VVhcucmwUpK7n8ZCwWEIuuXrU/edit#gid=547098868
End Sub
 
Son düzenleme:

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
580
Excel Vers. ve Dili
2016 64 TR
@
@Haluk Bey, yine zoru başarmışsınız. ("˙ɹılɐ uɐɯɐz zısuɐʞɯ! zıɹıɹɐşɐq nɹoz”)

Burada işin asıl zor kısmı gönderilecek URL yi elde etmek. Benim kullandığım yöntem Google form düzenleyip verileri google sheete veri gönderirken gönderdiği datayı analiz edip oradan url ve entry id lerini almak. Siz daha başka bir yöntem kullandıysanız öğrenmek isterim.

Benim excel üzerinden gönderirken kullandığım kodları uyarladım.

Kod:
Sub googleSheeteAktar()
  postData "isim", "mesaj"
End Sub

Sub postData(ilkAlan As String, ikinciAlan As String)
    Dim objXML As Object
    Dim strData As String
    Dim strResponse As String

    URL = "https://script.google.com/macros/s/AKfycbx1XK_WVnQHFBy0n1jz6iRLUgls98BHvZYXUOZpNsyhbflpdjU/exec"
    strData = "isim=" & URLEncode(ilkAlan) & "&mesaj=" & URLEncode(ikinciAlan) & "&zaman=" & Format(Now, "dd.mm.yyyy hh:mm:ss")
   
    Set objXML = CreateObject("MSXML2.XMLHTTP")

    objXML.Open "POST", URL & "?" & strData, False
    'objXML.setrequestheader "content-type", "application/x-www-form-urlencoded"
    objXML.Send
End Sub

Function URLEncode(StringToEncode As String, Optional ArtiKullan As Boolean = False) As String
    Dim TempAns As String
    Dim CurChr As Integer
    CurChr = 1
    Do Until CurChr - 1 = Len(StringToEncode)
        Select Case Asc(Mid(StringToEncode, CurChr, 1))
            Case 48 To 57, 65 To 90, 97 To 122
                TempAns = TempAns & Mid(StringToEncode, CurChr, 1)
            Case 231    'ç
                TempAns = TempAns & "%C3%A7"
            Case 199    'Ç
                TempAns = TempAns & "%C3%87"
            Case 252    'ü
                TempAns = TempAns & "%C3%BC"
            Case 220    'Ü
                TempAns = TempAns & "%C3%9C"
            Case 246    'ö
                TempAns = TempAns & "%C3%B6"
            Case 214    'Ö
                TempAns = TempAns & "%C3%96"
            Case 254    'ş
                TempAns = TempAns & "%C5%9F"
            Case 222    'Ş
                TempAns = TempAns & "%C5%9E"
            Case 240    'ğ
                TempAns = TempAns & "%C4%9F"
            Case 208    'Ğ
                TempAns = TempAns & "%C4%9E"
            Case 221    'İ
                TempAns = TempAns & "%C4%B0"
            Case 253    'ı
                TempAns = TempAns & "%C4%B1"
            Case 32
                If ArtiKullan = True Then
                    TempAns = TempAns & "+"
                Else
                    TempAns = TempAns & "%" & Hex(32)
                End If
            Case Else
                TempAns = TempAns & "%" & Right("00" & Hex(Asc(Mid(StringToEncode, CurChr, 1))), 2)
        End Select
        CurChr = CurChr + 1
    Loop
    URLEncode = TempAns
End Function
@veyselemre Hocam örnek excel dosyasını yüklemeniz mümkün mü. Denemek isterim.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
3,994
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
@veyselemre , URL encode için şöyle bir seçeneğimiz daha var:

JavaScript:
Function URL_Encode(strText)
    Static objHtmlfile As Object
    If objHtmlfile Is Nothing Then
        Set objHtmlfile = CreateObject("htmlfile")
        objHtmlfile.parentWindow.execScript "function encode(s) {return encodeURIComponent(s);}", "jscript"
    End If
    URL_Encode = objHtmlfile.parentWindow.encode(strText)
End Function
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
9,396
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
Teşekkürler Veysel Bey, Murat Bey hep birlikte zoru başarıyoruz....

Veysel Bey;

Gördüğüm kadarıyla siz Google Sheets'e veri yazarken arayüz olarak VBA kullanıyorsunuz, ben HTML kullanıyorum.

Yaptığım çalışmayı kişisel blog'umda dilim döndüğünce anlatmaya çalıştım.


 
Son düzenleme:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
9,396
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
Başarılı.

Direkt link üzerinden denemek isteyenler.

www.asriakdeniz.com/deneme/deneme.html
Yapılan projeyi kişisel blog'umda elimden geldiğince anlatmaya çalıştım. Söz konusu HTML formunu da yayınladım..... İsteyenler canlı olarak deneme yapabilir....


.
 
Üst