• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

  • Forum yazılımı güncelenmiştir.

    Beklenmedik durumlar görürseniz lütfen yönetime iletin.

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

Türkiyedeki tüm İl, İlçe ve Mahalleri kodlarıyla birlikte listeleyecek şekilde script'i hazırladım.

Fakat beklediğim gibi, scriptin çalışma süresi 5-6 dakikayı geçtikten sonra Google scriptin çalışmasını sonlandırdı... Bu süre içersinde henüz 2000 adet civarında veri alınabilmişti.


Capture.PNG


Bir ara, sadece seçilen ile ait ilçe ve mahalleleri listeleyecek şekilde yeni bir script hazırlarım.

.
 
Normalde TKGM sorgu limiti günlük 250 adet. IP değiştirme/Modem resetleme gibi işlemlerle geçilebiliyor.
 
Az önceki denememde yaklaşık 3500 adet veri aldıktan sonra script sonlandı.....

.
 
Yeni rekor : 4156 :)


İnternet hızına bağlı olarak, değişiyor sanırım....

Edit:
5070'e kadar çıktı ...... işi "cache" de sanırım etkiliyor......

Edit:
5600'e kadar çıktı ..... Artık sunucu tarafından IP ban yemeden, denemeyi bırakıyorum .... :)

.
 
Son düzenleme:
Tüm İL ve İLÇELERE ait liste kodlarıyla birlikte aşağıdaki script ile tek seferde alınabilmektedir.

Toplam 973 adet verinin alınması bende, yaklaşık 1,5 dakika sürmektedir.


JavaScript:
function getIL_ILCE_Liste() {
    var myArr=["SIRA No","İL","İL KODU","İLÇE","İLÇE KODU"];
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    ss.getRange('A1:E1').setValues([myArr]);
    SpreadsheetApp.flush();
    ss.getRange('A2:E').clear();
    var url='https://cbsservis.tkgm.gov.tr/megsiswebapi.v3/api/idariYapi/ilListe' 
    var j = 1
    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++) {
        SpreadsheetApp.flush();
        var url='https://cbsservis.tkgm.gov.tr/megsiswebapi.v3/api/idariYapi/ilceListe/' + 
                 objJSON.features[i]['properties']['id'] ;
        
        var httpResponse = UrlFetchApp.fetch(url,{'muteHttpExceptions': true});
        var responseCode = httpResponse.getResponseCode();
        var responseContent = httpResponse.getContentText();
        if (responseCode == 200) {  
          objJSON2 = JSON.parse(responseContent);
          for (var ii=0;ii<objJSON2.features.length;ii++) {           
            j = j + 1
            ss.getRange(j,1).setValue(j-1);
            ss.getRange(j,2).setValue(objJSON.features[i]['properties']['text']);
            ss.getRange(j,3).setValue(objJSON.features[i]['properties']['id']);
            ss.getRange(j,4).setValue(objJSON2.features[ii]['properties']['text']);
            ss.getRange(j,5).setValue(objJSON2.features[ii]['properties']['id']);
          }
        }
      }
    }
    else if (responseCode !== 200){
      ss.getRange(i+2,2).setValue(responseContent);
  } 
}




Capture.PNG


.
 
Son düzenleme:
Tahsin Bey, bunlar VBA kodu değil .....

Google Sheets'de script uygulaması.... JavaScript gibi.

.
 
Sayın @Haluk ustam son scripti il kodunu manuel girdikten sonra döngü ile ilçe ve mahalleleri çekme şeklinde düzenlenebilirse 81 ili tek tek güncelleme işlemi daha kolay olur diye düşünmekteyim.

İl kodu 23 girildi mesela. İlçe > mahale şeklinde listeyi oluşturması gibi.
 
@RBozkurt ;

Belirttiğiniz gibi; seçilen bir İle ait tüm İlçe ve Mahalleler kodlarıyla birlikte aşağıdaki videoda görüldüğü gibi listelenmektedir...


.TestHD.gif


Bu işi yapan script aşağıda verilmiştir;

JavaScript:
function get_IL_ILCE_MAHALLE_Liste() {
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

    var myArr=["SIRA No","İL","İL KODU","İLÇE","İLÇE KODU","MAHALLE", "MAHALLE KODU"];
    ss.getRange('A1:G1').setValues([myArr]);

    SpreadsheetApp.flush();
   
    ss.getRange('A2:G').clear();

    var ui = SpreadsheetApp.getUi();
    var IL_ID = ui.prompt("İL Kodunu buraya girin...").getResponseText();

    if (IL_ID !=='') {
        var j =1

        var url='https://cbsservis.tkgm.gov.tr/megsiswebapi.v3/api/idariYapi/ilListe';
       
        var httpResponse = UrlFetchApp.fetch(url,{'muteHttpExceptions': true});
        var responseCode = httpResponse.getResponseCode();
        var responseContent = httpResponse.getContentText();

        if (responseCode == 200) {
          objJSON = JSON.parse(responseContent);

          for (var i=0; i<objJSON.features.length; i++) {
            if (objJSON.features[i]['properties']['id'] == IL_ID){
              var myIL    = objJSON.features[i]['properties']['text'];
              var myIL_ID = objJSON.features[i]['properties']['id'];
              break;
            }
          }    
        }

        var url='https://cbsservis.tkgm.gov.tr/megsiswebapi.v3/api/idariYapi/ilceListe/' + IL_ID        
       
        var httpResponse = UrlFetchApp.fetch(url,{'muteHttpExceptions': true});
        var responseCode = httpResponse.getResponseCode();
        var responseContent = httpResponse.getContentText();

        if (responseCode == 200) {
          objJSON2 = JSON.parse(responseContent);

          for (var ii=0; ii<objJSON2.features.length; ii++) {          
            SpreadsheetApp.flush();
            var url='https://cbsservis.tkgm.gov.tr/megsiswebapi.v3/api/idariYapi/mahalleListe/' +
                      objJSON2.features[ii]['properties']['id'] ;
       
            var httpResponse = UrlFetchApp.fetch(url,{'muteHttpExceptions': true});
            var responseCode = httpResponse.getResponseCode();
            var responseContent = httpResponse.getContentText();

            objJSON3 = JSON.parse(responseContent);

            for (var iii=0; iii<objJSON3.features.length; iii++) {
              j = j + 1
              ss.getRange(j,1).setValue(j-1);

              ss.getRange(j,2).setValue(myIL);
              ss.getRange(j,3).setValue(myIL_ID);

              ss.getRange(j,4).setValue(objJSON2.features[ii]['properties']['text']);
              ss.getRange(j,5).setValue(objJSON2.features[ii]['properties']['id']);

              ss.getRange(j,6).setValue(objJSON3.features[iii]['properties']['text']);
              ss.getRange(j,7).setValue(objJSON3.features[iii]['properties']['id']);
            }
          }
        }
      }  
      SpreadsheetApp.getActive().toast( myIL + " ili için veriler alındı!", "BİLGİ");
    }


.
 
Teşekkürler @Haluk ustam çok makbule geçti. Ben burdan güncellerim.
 
Script'i ayarladım, Fakat verilerde TR karakter yok :(
Api üzerinden verilmemiş


282

Aksaray

90

Sariyahşi

950

Kizilirmak

207436

Olması gereken

282

Aksaray

90

Sarıyahşi

950

Kızılırmak

207436

**


718

Konya

64

Kadinhani

649

Osmancik

22344

Olması gereken

718

Konya

64

Kadınhanı

649

Osmancık

22344
 
Ne diyeyim artık bilemedim..... Web Servisi hazırlayan memur aldığı maaştan memnun değil herhalde, fazla uğraşmamış....

Web servisin bir dokümantasyonu olsa bakardık ama, o da yok....

.
 
Son düzenleme:
Elimde farklı bir programın .dll si var içinde varsa farklı bir server adresi vs bulursam eklerim
 
İşin ilginç tarafı, aşağıdaki resimde olduğu gibi İlçeleri bazen sorunsuz ("ı", "i" karmaşası olmadan) getiriyor....

Capture.PNG

.
 
Merhaba Haluk Hocam,
Ben bunu anlık internet trafiğinin yoğunluğuna bağlıyorum. Tabi yanılmış ta olabilirim.
Saygılarımla
 
Sayın Haluk hocam;

16 nolu posttaki örneğe göre tanzim edilmiş (koordinat bilgisi yazılmadan) Mahalle ID, Ada ve Parsel bilgilerini kullanarak, diğer bilgileri getirecek bir çalışmanızı ücretli veya ücretsiz paylaşım yapmanız mümkünmüdür.Sayglarımla.
 
Script'i ayarladım, Fakat verilerde TR karakter yok :(
Api üzerinden verilmemiş






























Merhaba Haluk Hocam,
Ben bunu anlık internet trafiğinin yoğunluğuna bağlıyorum. Tabi yanılmış ta olabilirim.
Saygılarımla


@RBozkurt ; @Tevfik_Kursun ;


Zaten sitedeki uygulamanın kendisi de aynı web servisi kullandığı için, tarayıcıdan uygulamaya girdiğinizde aynı sorunun orada da olduğu görülebiliyor....


Capture.PNG

.
 
Son düzenleme:
Sisteme giren vatandaş vurgeç yapmış :)
 
Sayın Haluk hocam;

16 nolu posttaki örneğe göre tanzim edilmiş (koordinat bilgisi yazılmadan) Mahalle ID, Ada ve Parsel bilgilerini kullanarak, diğer bilgileri getirecek bir çalışmanızı ücretli veya ücretsiz paylaşım yapmanız mümkünmüdür.Sayglarımla.


Ekli MS Excel dosyasını kullanabilirsiniz....

.
 

Ekli dosyalar

Geri
Üst