• 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?

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

Haluk Hocam, elinize sağlık, çok teşekkür ederim.
 
İşin ilginç tarafı, aşağıdaki resimde olduğu gibi İlçeleri bazen sorunsuz ("ı", "i" karmaşası olmadan) getiriyor....

Ekli dosyayı görüntüle 239038

.

Sayın Haluk Hocam ;

Benim bu scripti kullanma becerim maalesef yoktur.

İl-İlçe-Mahalle ve Mahalle kodları olan bir listeyi paylaşmanız mümkün olurmu ?

Saygılar iyi geceler
 
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.


.

@Haluk ustam,
Müsait bir zamanda yukarıdaki çalışmada B sütununu bölerek B=Ada, C=Parsel şeklinde uyarlama imkanınız varmıdır?
 
@RBozkurt ;


TestHD.gif




JavaScript:
function getData_2() {
  var myArr=["MAHALLE ID","ADA", "PARSEL","İL","İLÇE","MAHALLE",
             "MEVKİİ","ZEMİN DURUM","NİTELİK","ALAN","PAFTA"];
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  ss.getRange('A1:K1').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 ada = ss.getRange('B'+ iRow ).getValue() + 0;
    var parsel = ss.getRange('C'+ iRow ).getValue() + 0;
    
    var url='https://cbsapi.tkgm.gov.tr/megsiswebapi.v3/api/parsel/' + mahalleID + '/' + ada + '/' + parsel ;
        
    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,4).setValue(objJSON.properties['ilAd']);
        ss.getRange(j+2,5).setValue(objJSON.properties['ilceAd']);
        ss.getRange(j+2,6).setValue(objJSON.properties['mahalleAd']);
        ss.getRange(j+2,7).setValue(objJSON.properties['mevkii']);
        ss.getRange(j+2,8).setValue(objJSON.properties['zeminKmdurum']);
        ss.getRange(j+2,9).setValue(objJSON.properties['nitelik']);       
        ss.getRange(j+2,10).setValue(objJSON.properties['alan']);
        ss.getRange(j+2,11).setValue(objJSON.properties['pafta']);
    }
    else if (responseCode !== 200){
      ss.getRange(j+2,4).setValue(responseContent);
    }
  }
}


.
 
Son düzenleme:
@Haluk ustam kodu normal bir excele atama yapsak problem olmaz değil mi?
Sizin dosyada vba kapalı farklı bir makro varmı bilmiyorum.

Ek olarak VBA koruma yöntemini paylaşabilirmisiniz? Şifre sorma kısmıda kapalı :)
 
-Kod, Google Script (JavaScript gibi birşey... diyelim) ile yazıldığı için VBA ile çalışmaz. VBA'de yeniden tasarlayıp, yazmak gerekir.

-VBA koruma yöntemi için @Zeki Gürsoy 'a müracaat edebilirsiniz. Bu konuda kendisinin geliştirdiği ücretli bir programı var.

.
 
-Kod, Google Script (JavaScript gibi birşey... diyelim) ile yazıldığı için VBA ile çalışmaz. VBA'de yeniden tasarlayıp, yazmak gerekir.

-VBA koruma yöntemi için @Zeki Gürsoy 'a müracaat edebilirsiniz. Bu konuda kendisinin geliştirdiği ücretli bir programı var.

.

Daha önce eklediğiniz dosya normal excel olaraktı
 

Ekli dosyalar

Scriptleri ayarladım. Kurumda google sheets kapalı. Açtırabilirsem kullanırız :)
Teşekkürler Sayın @Haluk
 
Merhaba Arkadaşlar,
Haklısınız, genelde pek çok kurumda GoogleDrive kullanmak bile mümkün değil. Herkesin ihtiyacı da farklı. Script ve VBA, Ada ve parsel numarası ve mahalle numarası olan noktalarda çok başarılı. Sadece parsel numarası olan noktaların neredeyse % 80 den fazlasına erişimde maalesef başarılı değil. Ben sorunumu KML dosyasını indirerek çözdüm. Bana tarlanın sadece alanı ve koordinatı gerekli, ama tüm bilgiler var içinde.
Belki arkadaşların işine yarayabilir diye konuyu paylaştım.
Herkese teşekkür ederim.
Saygılarımla
Kod:
<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Placemark>
    <name>Güneykent Mahallesi 5263-parsel</name>
    <ExtendedData>
Örneklerde kullanılan parseldir, bilgilerine hem script hem de VBA de erişilememişti
 
Son düzenleme:
Tüm mail, video, dosya yükleme, hotmail, Google vb. heryer kapalı
 
Daha önce eklediğiniz dosya normal excel olaraktı

Siz Google Script ile ilgili mesajı referans gösterince, ben de oradaki script'i revize etmiştim. MS Excel ile hazırladığım dosyayı da, Mahalle ID'leri için hazırladım diye düşünmüştüm ama o da bununla ilgiliymiş. Anlayacağınız, konuyu karıştırmışım biraz....

Sonuçta, istediğiniz MS Excel dosyası ekte revize edilerek verilmiştir...

.
 

Ekli dosyalar

Sayın Haluk Hocam,
İlginize çok teşekkür ederim. Ancak burada da 5263 parselin verileri gelmiyor. Ama kendi sitesinden çağırdığınızda geliyor. hem kml hem json ekli sonuç dosyaları indirilebiliyor.
Saygılarımla
 
Tevfik Bey, son dosyayı sizin mesajınız üzerine değil, @RBozkurt 'un talebi üzerine göndermiştim.

.
 
Sayın Haluk Hocam,
Ben üzerime alınmamıştım, ama parsel bilgilerini getirmede bir sıkıntı olduğunu paylaşmıştım.
Saygılarımla
 
Geri
Üst