TKGM den excel ile sorgulama yapmak ve bilgi almak mümkün müdür?

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,684
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Haluk Hocam,
İlginize çok teşekkür ederim. Tabii ki "Mahalle ID" değerlerini sağlamayı garanti ederim. Şüpheniz olmasın.
Yaş hadinden emekli olduğumdan beri okullara ve yakın dostlarıma excel ile yardımcı olmaya çalışıyorum. Hem öğreniyor hem öğretiyorum.
Saygılarımla
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,387
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Tamamdır.... eğer Mahalle ID'leri kullanarak sonuç alırsam, haber veririm....

.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,684
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Haluk Hocam,
İlginize çok teşekkür ederim. Haberinizi bekliyorum.
Saygılarımla
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
593
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
5+ yıllık veridir. %100 doğruluğu yoktur.
Güncellenen mahalle vb. isimleri olduğu düşünülmektedir.
Yine de iş görür..


TKGM üzerinden bu ID numalaralına ulaşılabiliyor.
81 il 57900 küsür mahalle..
Kolay bir yöntemi olsa güncellense tamamen süper olur.
 

Ekli dosyalar

  • 2.1 MB Görüntüleme: 25

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,387
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Tevfik Bey, haberler iyi .....

Aşağıdaki görselde belirtildiği gibi siz sadece Mahalle ID, Ada ve Parsel'i gireceksiniz...... gerisini, sunucuya yolladığımız sorgudan geri dönen cevaptan alıp sayfaya işliyoruz....


TestHD.gif


Görseldeki işi yapan script aşağıda verilmiştir;

JavaScript:
function getData_mahalleID() {
  var myArr=["İL","İLÇE","MAHALLE","MEVKİİ","ZEMİN DURUM","NİTELİK","ALAN","PAFTA"];
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  ss.getRange('C1:J1').setValues([myArr])

  const dataRange = ss.getRange('A2:A');
  const values = dataRange.getValues().filter(array=>array != '');

  for(var j = 0; j < values.length; j++) {
    var iRow = j+2

    var mahalleID = ss.getRange('A'+ iRow ).getValue();
    var adaParsel = ss.getRange('B'+ iRow ).getValue()
   
    var url='https://cbsapi.tkgm.gov.tr/megsiswebapi.v3/api/parsel/' + mahalleID + '/' + adaParsel
   
    try {
      var httpResponse = UrlFetchApp.fetch(url,{'muteHttpExceptions': true});
        } catch (e) {httpResponse.getResponseCode();
        Browser.msgBox('Hata var...!\\n\\n' + e.toString(), Browser.Buttons.OK);
        return;
      }
     
    var responseContent = httpResponse.getContentText();
    var responseCode = httpResponse.getResponseCode();

    if (responseCode == 200) {
      objJSON = JSON.parse(responseContent);
     
      // objJSON elemanlari >>> "type", "Feature", "geometry", "properties"
      // Aradigimiz veriler "properties" nesnesi icinde  

        ss.getRange(j+2,3).setValue(objJSON.properties['ilAd']);
        ss.getRange(j+2,4).setValue(objJSON.properties['ilceAd']);
        ss.getRange(j+2,5).setValue(objJSON.properties['mahalleAd']);
        ss.getRange(j+2,6).setValue(objJSON.properties['mevkii']);
        ss.getRange(j+2,7).setValue(objJSON.properties['zeminKmdurum']);
        ss.getRange(j+2,8).setValue(objJSON.properties['nitelik']);      
        ss.getRange(j+2,9).setValue(objJSON.properties['alan']);
        ss.getRange(j+2,10).setValue(objJSON.properties['pafta']);
    }
    else if (responseCode !== 200){
      ss.getRange(j+2,3).setValue(responseContent)
    }
  }
}

Not: Hatalı verilerle ilgili durumda, sayfaya sunucudan gelen mesaj yazdırılmaktadır....


Bu arada, @RBozkurt 'un eklediği dosyadaki Mahalle ID'leri de doğru görünüyor. Gerektiğinde oradan da faydalanabilirsiniz.


.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,684
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Haluk Hocam,
İlginize çok teşekkür ederim.
Saygılarımla
 
Katılım
30 Haziran 2016
Mesajlar
122
Excel Vers. ve Dili
office 2010 türkçe
Altın Üyelik Bitiş Tarihi
25-04-2024
LÜTFEN RİCA EDEYORUM VBA KODLARI GİRİLMİŞ ŞEKİLDE ÖRNEK DOYASINIZ VARSA PAYLŞAIRMISINIZ. YAPTIĞIM İŞLE ÇOK ALAKALI İŞİMİ KOLAYLAŞTIRACAĞINI DÜŞÜNÜYORUM.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,684
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Sonarex33,
Hazırlanan script GoogleSheets te çalışıyor, excel VBA değil.
iyi çalışmalar
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,684
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Sonarex33,
Sanırım GoogleDrive kullanmıyorsunuz?
Belki arkadaşlardan bu konuda yardım eden çıkar.
iyi çalışmalar
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
593
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
@Haluk hocam bu ID numaralarını makro ile sistemden çektirme işlemi yapılabilir mi?
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,387
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
ID'ler hangi URL'de ? Bakmak lazım ....

.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,387
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
En güncel İL, İLÇE ve MAHALLE Kodları aşağıdaki videoda görüldüğü gibi Google Script ile alınabilmektedir....

Tüm Türkiyede haliyle çok fazla sayıda mahalle olduğu için; ilk önce aradığımız mahalleye ait İL Kodunu bir script ile buluyoruz. Bulduğumuz bu İL KODU ile İLÇE KODLARINI ikinci script ile sorgulayıp aradığımız İLÇE KODUNU bulduktan sonra bu kez bu İLÇE KODU ile MAHALLE KODLARINI sorgulayıp, aradığımız MAHALLE KODUNU buluyoruz.....


TestHD.gif


.
 
Son düzenleme:

ibere

Altın Üye
Katılım
31 Mart 2018
Mesajlar
129
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
21-04-2027
Tevfik Bey, haberler iyi .....

Aşağıdaki görselde belirtildiği gibi siz sadece Mahalle ID, Ada ve Parsel'i gireceksiniz...... gerisini, sunucuya yolladığımız sorgudan geri dönen cevaptan alıp sayfaya işliyoruz....


Ekli dosyayı görüntüle 238998


Görseldeki işi yapan script aşağıda verilmiştir;

JavaScript:
function getData_mahalleID() {
  var myArr=["İL","İLÇE","MAHALLE","MEVKİİ","ZEMİN DURUM","NİTELİK","ALAN","PAFTA"];
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  ss.getRange('C1:J1').setValues([myArr])

  const dataRange = ss.getRange('A2:A');
  const values = dataRange.getValues().filter(array=>array != '');

  for(var j = 0; j < values.length; j++) {
    var iRow = j+2

    var mahalleID = ss.getRange('A'+ iRow ).getValue();
    var adaParsel = ss.getRange('B'+ iRow ).getValue()
  
    var url='https://cbsapi.tkgm.gov.tr/megsiswebapi.v3/api/parsel/' + mahalleID + '/' + adaParsel
  
    try {
      var httpResponse = UrlFetchApp.fetch(url,{'muteHttpExceptions': true});
        } catch (e) {httpResponse.getResponseCode();
        Browser.msgBox('Hata var...!\\n\\n' + e.toString(), Browser.Buttons.OK);
        return;
      }
    
    var responseContent = httpResponse.getContentText();
    var responseCode = httpResponse.getResponseCode();

    if (responseCode == 200) {
      objJSON = JSON.parse(responseContent);
    
      // objJSON elemanlari >>> "type", "Feature", "geometry", "properties"
      // Aradigimiz veriler "properties" nesnesi icinde 

        ss.getRange(j+2,3).setValue(objJSON.properties['ilAd']);
        ss.getRange(j+2,4).setValue(objJSON.properties['ilceAd']);
        ss.getRange(j+2,5).setValue(objJSON.properties['mahalleAd']);
        ss.getRange(j+2,6).setValue(objJSON.properties['mevkii']);
        ss.getRange(j+2,7).setValue(objJSON.properties['zeminKmdurum']);
        ss.getRange(j+2,8).setValue(objJSON.properties['nitelik']);     
        ss.getRange(j+2,9).setValue(objJSON.properties['alan']);
        ss.getRange(j+2,10).setValue(objJSON.properties['pafta']);
    }
    else if (responseCode !== 200){
      ss.getRange(j+2,3).setValue(responseContent)
    }
  }
}

Not: Hatalı verilerle ilgili durumda, sayfaya sunucudan gelen mesaj yazdırılmaktadır....


Bu arada, @RBozkurt 'un eklediği dosyadaki Mahalle ID'leri de doğru görünüyor. Gerektiğinde oradan da faydalanabilirsiniz.


.

Hocam google script nasıl öğrenebilirim acaba ?
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,684
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba Arkadaşım,
Ben de henüz öğrenebilmiş değilim. Ama sitedeki imkanlar oldukça uygun. İlgi duyduğunuz konulara bakıp tekrarlayarak öğrenebilirsiniz diye düşünüyorum.
İyi çalışmalar
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
593
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
En güncel İL, İLÇE ve MAHALLE Kodları aşağıdaki videoda görüldüğü gibi Google Script ile alınabilmektedir....

Tüm Türkiyede haliyle çok fazla sayıda mahalle olduğu için; ilk önce aradığımız mahalleye ait İL Kodunu bir script ile buluyoruz. Bulduğumuz bu İL KODU ile İLÇE KODLARINI ikinci script ile sorgulayıp aradığımız İLÇE KODUNU bulduktan sonra bu kez bu İLÇE KODU ile MAHALLE KODLARINI sorgulayıp, aradığımız MAHALLE KODUNU buluyoruz.....


Ekli dosyayı görüntüle 239008


.
@Haluk ustam bu işlemi bir döngüye,

İl sorgusu yapıp akabinde ilçeleri akabinde mahalleleri derken yukarıda paylaşmış olduğum ID listesi güncellenmiş olur :D
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,387
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Tabii ki yapılır, ama yaklaşık 60.000 mahalle için script biraz uzun sürer herhalde......

Sonuçta Google Script web tabanlı bir yazılım olduğu için ve bu script'de bir Web Servis kullandığımız için süreden dolayı çekindiğimden ben o yolu tercih etmedim.

.
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
593
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
Sizin içinde mümkünse kodları paylaşmak, ben peyderpey il il güncelleme yaparım.
İl kodunu girip veriyi çekme gibi.

Yukarıdaki veri normalde bir .mdb database şeklinde. Ben excele çevirip paylaştım.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,387
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
İL LİSTESİ için script;

JavaScript:
function getIL_Liste() {
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    ss.getRange('A2:C').clear()
    var url='https://cbsservis.tkgm.gov.tr/megsiswebapi.v3/api/idariYapi/ilListe' 
    
    try {
      var httpResponse = UrlFetchApp.fetch(url,{'muteHttpExceptions': true});
        } catch (e) {
          httpResponse.getResponseCode();
          Browser.msgBox('Hata var...!\\n\\n' + e.toString(), Browser.Buttons.OK);
          return;
      }
      
    var responseContent = httpResponse.getContentText();
    var responseCode = httpResponse.getResponseCode();
    if (responseCode == 200) {  
      objJSON = JSON.parse(responseContent);
      for (var i=0;i<objJSON.features.length;i++) {
        ss.getRange(i+2,1).setValue(i+1);
        ss.getRange(i+2,2).setValue(objJSON.features[i]['properties']['text']);
        ss.getRange(i+2,3).setValue(objJSON.features[i]['properties']['id']);
      }
    }
    else if (responseCode !== 200){
      ss.getRange(i+2,2).setValue(responseContent);
  } 
}

İLÇE LİSTESİ için script;

JavaScript:
function getILCE_Liste() {
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    ss.getRange('A2:C').clear()
    var ui = SpreadsheetApp.getUi();
    var IL_ID = ui.prompt("İL Kodunu buraya girin...").getResponseText();
    if (IL_ID !=='') {
      var url='https://cbsservis.tkgm.gov.tr/megsiswebapi.v3/api/idariYapi/ilceListe/' + IL_ID ;
      
      try {
        var httpResponse = UrlFetchApp.fetch(url,{'muteHttpExceptions': true});
          } catch (e) {
            httpResponse.getResponseCode();
            Browser.msgBox('Hata var...!\\n\\n' + e.toString(), Browser.Buttons.OK);
            return;
        }
        
      var responseContent = httpResponse.getContentText();
      var responseCode = httpResponse.getResponseCode();
      if (responseCode == 200) {  
        objJSON = JSON.parse(responseContent);
        for (var i=0;i<objJSON.features.length;i++) {
          ss.getRange(i+2,1).setValue(i+1);
          ss.getRange(i+2,2).setValue(objJSON.features[i]['properties']['text']);
          ss.getRange(i+2,3).setValue(objJSON.features[i]['properties']['id']);
        }
      }
      else if (responseCode !== 200){
        Browser.msgBox(responseContent);
    } 
    }
}

MAHALLE LİSTESİ için script;

JavaScript:
function getMAHALLE_Liste() {
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    ss.getRange('A2:C').clear()
    var ui = SpreadsheetApp.getUi();
    var ILCE_ID = ui.prompt("İLÇE Kodunu buraya girin...").getResponseText();
    if (ILCE_ID !=='') {
      var url='https://cbsservis.tkgm.gov.tr/megsiswebapi.v3/api/idariYapi/mahalleListe/' + ILCE_ID ;
      
      try {
        var httpResponse = UrlFetchApp.fetch(url,{'muteHttpExceptions': true});
          } catch (e) {
            httpResponse.getResponseCode();
            Browser.msgBox('Hata var...!\\n\\n' + e.toString(), Browser.Buttons.OK);
            return;
        }
        
      var responseContent = httpResponse.getContentText();
      var responseCode = httpResponse.getResponseCode();
      if (responseCode == 200) {  
        objJSON = JSON.parse(responseContent);
        for (var i=0;i<objJSON.features.length;i++) {
          ss.getRange(i+2,1).setValue(i+1);
          ss.getRange(i+2,2).setValue(objJSON.features[i]['properties']['text']);
          ss.getRange(i+2,3).setValue(objJSON.features[i]['properties']['id']);
        }
      }
      else if (responseCode !== 200){
        Browser.msgBox(responseContent);
    } 
    }
}


.
 
Son düzenleme:

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
593
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
@Haluk ustam yukarıdaki işlemleri tek bir script üzerinden döngüyle il'e ait tüm ilçeler/mahalleler şeklinde düzenleyebilir misiniz?
 
Üst