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

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,383
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Şu andaki haliyle, ifraz edilen son parçayı yakalıyor..... Uğraşıp, öbürlerini de almak gerekir....

Ne çok çeşit problem varmış yahu ! İşin başında bilsem, hiç girmezdim konuya valla.....

.
 

jilazem

Altın Üye
Katılım
17 Temmuz 2007
Mesajlar
26
Excel Vers. ve Dili
2013 x64
Altın Üyelik Bitiş Tarihi
25-09-2026
Şu andaki haliyle, ifraz edilen son parçayı yakalıyor..... Uğraşıp, öbürlerini de almak gerekir....

Ne çok çeşit problem varmış yahu ! İşin başında bilsem, hiç girmezdim konuya valla.....

.
Üstad şu ana kadar yaptıklarınız için çok çok teşekkür ederim. Benim çok işime yaradı çok sağolasın.
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
592
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
Şu andaki haliyle, ifraz edilen son parçayı yakalıyor..... Uğraşıp, öbürlerini de almak gerekir....

Ne çok çeşit problem varmış yahu ! İşin başında bilsem, hiç girmezdim konuya valla.....

.
Bu kadarı da baya iş görür @Haluk üstad sağlık olsun :D
 

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
Şu andaki haliyle, ifraz edilen son parçayı yakalıyor..... Uğraşıp, öbürlerini de almak gerekir....

Ne çok çeşit problem varmış yahu ! İşin başında bilsem, hiç girmezdim konuya valla.....

.
sağlık olsun üstat :D eline sağlık
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
513
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Sayın Haluk Hocam ;

Ücret mukabili olabilecek bu proğramı emek verip-kodlayıp-ürettikten sonra bizlere yaptığınız paylaşım için teşekkürler.

Emeğiniz ödenmez. Emeğinize sağlık. Size duacıyız bu konuda.
Çalışmalarınızın devamını temenni eder
İyi çalışmalar dilerim.

Saygılar.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,383
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bu kadarı da baya iş görür @Haluk üstad sağlık olsun :D

Bir revizyon daha yaptım...... sanırım artık bu sonuncusu olacak...

Ekli dosya ile; eğer işlem görmüş parsel varsa, tüm parsellerin verilerini ayrı ayrı alabiliyorsunuz.


.
 

Ekli dosyalar

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
592
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
Bir revizyon daha yaptım...... sanırım artık bu sonuncusu olacak...

Ekli dosya ile; eğer işlem görmüş parsel varsa, tüm parsellerin verilerini ayrı ayrı alabiliyorsunuz.


.
Sayın @Haluk üstad,
Aşağıdaki veriler ile test yaptım, son satırdaki veride 5 tane gitti parsel var.
Şuan problem gözükmüyor. Elinize emeğinize sağlık. Bir kaç gündür size bu konuda baya rahatsızlık verdik.

Dairede google sheets'i açtırmaya çalışıyorum.BT biraz katı maalesef. Oradan veri çekerken google sistemi üzerinde çalıştığı için günlük sorgu limiti problemi olmadığını düşünüyorum. Müsaitlik durumunuza göre çalışmanın son halini script olarak da paylaşabilirseniz :D çok şey istedik.

MAHALLE ID

ADA

PARSEL

128111​

38658​

16​

133630​

101​

34​

205336​

164​

67​

 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,383
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Evet, benim yaptığım denemelerde de Google Script, günlük limiti aşınca yine de çalışmaya devam ediyordu. Bazen uyarı mesajı çıkıyor ama, 3 - 5 dakika sonra yine devam ediyordu.

Diğer yandan; tevhid/ifraz işlemi yapılan parseller, sunucuya gönderdiğimiz isteğe gelen Json verileri içine yine ayrıca JSon veri kümesi olarak gömüldüğünden, VBA kodlaması bayağı uğraştırmıştı.

Zaten VBA kodu, başlı başına değişik bir çalışma oldu zira; JSon verilerini 32 Bit Excel'de "ScriptControl" nesnesiyle yapabilirken, 64 Bit Excel'de bu nesne olmadığı için ona yönelik ayrı bir nesne oluşturup hem 32 Bit hem de 64 Bit Excel'de çalışacak şekilde bir kod düzenlemiştim. Benim kullandığım Excel, 64 Bit ve bir sorun olmadı şimdilik.

Google Script'de 32/64 Bit olayı yok ama ilave parsellerle ilgili işin JSon kısmını Google Script'e uyarlamak yine yorucu bir çalışma olacaktır. Belki ilerleyen günlerde ele alabilirim, şimdilik bilemiyorum.....

.
 

Haluk

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

Dairede google sheets'i açtırmaya çalışıyorum.BT biraz katı maalesef. Oradan veri çekerken google sistemi üzerinde çalıştığı için günlük sorgu limiti problemi olmadığını düşünüyorum. Müsaitlik durumunuza göre çalışmanın son halini script olarak da paylaşabilirseniz :D çok şey istedik.
   





@RBozkurt ;

106 No'lu mesajdaki Excel dosyasında VBA koduyla yapılan işi Google Sheets'de yapacak olan script aşağıda verilmiştir;

JavaScript:
function getData_3() {
  var myArr=["MAHALLE ID","ADA", "PARSEL","İL","İLÇE","MAHALLE",
             "MEVKİİ","ZEMİN DURUM","NİTELİK","ALAN","PAFTA",
             "DURUM","KOORDİNATLAR","GİTTİĞİ PARSEL SEBEP"];

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var myRng = ss.getRange(1,4,ss.getLastRow(),ss.getLastColumn());
  myRng.clear();
  
  ss.getRange('A1:N1').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']);

        var durum = objJSON.properties['durum'].toString();

        if (durum === '1'){
          ss.getRange(j+2,12).setValue('Aktif');
          ss.getRange(j+2,13).setValue(objJSON.geometry['coordinates'].toString());
          ss.getRange(j+2,14).setValue(' ');
        }
        else {
          ss.getRange(j+2,12).setValue('Pasif');
          ss.getRange(j+2,14).setValue(objJSON.properties['gittigiParselSebep']);

          var xColumn = 15;
          var k = 0;

          //var strJSon = objJSON.properties.gittigiParselListe.toString().replace('/','');
          var strJSon = objJSON.properties.gittigiParselListe.toString();

          objJSON2 = JSON.parse(strJSon);
          myList = objJSON2.features;

          var countParcels = myList.length;               

          for (var i = 0; i<countParcels; i++){
            ss.getRange(1,xColumn + k).setValue('İL');
            ss.getRange(1,xColumn + k+1).setValue('İLÇE');
            ss.getRange(1,xColumn + k+2).setValue('MAHALLE');
            ss.getRange(1,xColumn + k+3).setValue('MEVKİİ');
            ss.getRange(1,xColumn + k+4).setValue('ADA');
            ss.getRange(1,xColumn + k+5).setValue('PARSEL');         
            ss.getRange(1,xColumn + k+6).setValue('ALAN');
            ss.getRange(1,xColumn + k+7).setValue('NİTELİK');
            ss.getRange(1,xColumn + k+8).setValue('PAFTA');
            ss.getRange(1,xColumn + k+9).setValue('ZEMİN DURUM'); 

            ss.getRange(1,1,1,xColumn + k + 9).setFontWeight("bold");

            ss.getRange(j+2,xColumn + k + 0).setValue(myList[i]['properties']['ilAd']);
            ss.getRange(j+2,xColumn + k + 1).setValue(myList[i]['properties']['ilceAd']);
            ss.getRange(j+2,xColumn + k + 2).setValue(myList[i]['properties']['mahalleAd']);
            ss.getRange(j+2,xColumn + k + 3).setValue(myList[i]['properties']['mevkii']);
            ss.getRange(j+2,xColumn + k + 4).setValue(myList[i]['properties']['adaNo']);
            ss.getRange(j+2,xColumn + k + 5).setValue(myList[i]['properties']['parselNo']);
            ss.getRange(j+2,xColumn + k + 6).setValue(myList[i]['properties']['alan']);
            ss.getRange(j+2,xColumn + k + 7).setValue(myList[i]['properties']['nitelik']);
            ss.getRange(j+2,xColumn + k + 8).setValue(myList[i]['properties']['pafta']);
            ss.getRange(j+2,xColumn + k + 9).setValue(myList[i]['properties']['zeminKmdurum']);
            
            if ( i % 2 ){
              ss.getRange(1,xColumn + k,j+2,10).setBackgroundRGB(255, 255, 143);
            }
            else {
              ss.getRange(1,xColumn + k,j+2,10).setBackgroundRGB(236, 255, 220);
            }

            k = k+11;
          }
        }     
    }
    else if (responseCode !== 200){
      ss.getRange(j+2,4).setValue(responseContent);
    }
  }
}

.
 
Son düzenleme:

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
592
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
Sayın @Haluk üstad elinize sağlık. Özverili çalışmanız için teşekkür ederim. Gerçekten birtakım işlemleri sonuçlandırma konusunda bizler için birkaç gündür uğraşmaktasınız, hakkınızı helal edin.

Script kodlarını denedim problem olmadan çalışmaktadır. Arka arkaya çalıştırdım en önemli husus günlük sorgu limiti vb. kısıtlamada denk gelmedi.
Ek olarak birkaç başlığı takla attırıp araya Ada Parseli tekrar ekledim.

Manuel olarak düzenledim. Durum1 halinde liste hazırlanıp VERİ ALMA işlevi çalıştırılınca DURUM2 şeklinde verilerin tamamını yeni sütun ekleyerek değilde, tek sütun üzerinde ilgili verinin alt satırına eklenerek sonuçlandırma veri düzeni açısından daha iyi olabilir.

Bu sefer ortaya çıkabilecek olan problem A2 verisini sorguladı altına ekledi A,B,C satırları boş olduğu için {"Message":"Parcel Not Found: Latitude = 0 - Longitude=0 "} şeklinde Parsel Yok gibi veri gelmesi.


***

Yukarıdakinin haricinde aşağıdaki satırda / işareti "" replace işlevi eklenmiş. Bunun özel bir sebebi varmıdır?
replace('/','') yerine replace('/','/') veya replace('/','-') gibi ekledim, yine çalışıyor. Ama sadece ana parselden sonraki veride çalışıyor. Diğer gelenler doğru veri. (Örn: F9-10-11-12-13)
var strJSon = objJSON.properties.gittigiParselListe.toString().replace('/','')

Durum1
durum1.png

Durum2
durum2.png
 

Haluk

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

Yukarıdakinin haricinde aşağıdaki satırda / işareti "" replace işlevi eklenmiş. Bunun özel bir sebebi varmıdır?
replace('/','') yerine replace('/','/') veya replace('/','-') gibi ekledim, yine çalışıyor. Ama sadece ana parselden sonraki veride çalışıyor. Diğer gelenler doğru veri. (Örn: F9-10-11-12-13)
var strJSon = objJSON.properties.gittigiParselListe.toString().replace('/','')
Nazik mesajınız için teşekkürler....

Script'i hazırlarken çeşitli denemeler yapmıştım, oralardan kalma bir şey oradaki "replace" fonksiyonu. Söz konusu satırın yerine aşağıdakini kullanabilirsiniz.... Daha iyi olur.

JavaScript:
var strJSon = objJSON.properties.gittigiParselListe.toString();
109 No'lu mesajdaki script'i buna göre düzenledim.

.
 
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
Bir revizyon daha yaptım...... sanırım artık bu sonuncusu olacak...

Ekli dosya ile; eğer işlem görmüş parsel varsa, tüm parsellerin verilerini ayrı ayrı alabiliyorsunuz.


.
Haluk bey merhaba,

bu aralar xmlhttp ile veri çekmeyi öğrenmeye çalışıyorum, bana kaynak önerebilir misiniz acaba ? İnanır mısınız o kadar kafaya taktımki gece gece yataktan kalkıp xmlhttp öğrenmeye çalışıyorum. İyi akşamlar.
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
592
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
Nazik mesajınız için teşekkürler....

Script'i hazırlarken çeşitli denemeler yapmıştım, oralardan kalma bir şey oradaki "replace" fonksiyonu. Söz konusu satırın yerine aşağıdakini kullanabilirsiniz.... Daha iyi olur.

JavaScript:
var strJSon = objJSON.properties.gittigiParselListe.toString();
109 No'lu mesajdaki script'i buna göre düzenledim.

.
Bu şekilde mahalle adı verisi düzeldi. Teşekkürler
 

Haluk

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

Manuel olarak düzenledim. Durum1 halinde liste hazırlanıp VERİ ALMA işlevi çalıştırılınca DURUM2 şeklinde verilerin tamamını yeni sütun ekleyerek değilde, tek sütun üzerinde ilgili verinin alt satırına eklenerek sonuçlandırma veri düzeni açısından daha iyi olabilir.

Bu sefer ortaya çıkabilecek olan problem A2 verisini sorguladı altına ekledi A,B,C satırları boş olduğu için {"Message":"Parcel Not Found: Latitude = 0 - Longitude=0 "} şeklinde Parsel Yok gibi veri gelmesi.

Anladığım kadarıyla, işlem görmüş parsel varsa; o paresllere ilişkin verilerin sayfada yan yana değil de tüm verilerle birlikte alt alta aynı sütunlarda görmek istiyorsunuz.

Ben bu isteğinize yönelik olarak şöyle birşey geliştirdim.

Öncelikle "Data" ve "Sonuçlar" adında 2 adet sayfa oluşturalım. "Data" sayfasında, sorgulama yapacağımız "Mahalle ID", "Ada" ve "Parsel" verileri olacak. Diğer "Sonuçlar" sayfasında bir düzenleme yapmanıza gerek yok. Aşağıdaki script, sorgu sonuçlarını o sayfaya alt alta yazacak.

Bununla ilgili uygulama sırasındaki video ve script aşağıdadır.....


TestHD.gif



JavaScript:
function getData_4() {
  var myArr=["MAHALLE ID","ADA", "PARSEL","İL","İLÇE","MAHALLE",
             "MEVKİİ","ZEMİN DURUM","NİTELİK","ALAN","PAFTA",
             "DURUM","KOORDİNATLAR","GİTTİĞİ PARSEL SEBEP"];

  var ssData     = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
  var ssSonuclar = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sonuçlar");

  ssSonuclar.getRange('A1:N1').setValues([myArr]);
  ssSonuclar.getRange(1,1,1,ssSonuclar.getLastColumn()).setFontWeight("bold");

  var myRng = ssSonuclar.getRange(2,1,ssSonuclar.getLastRow(),ssSonuclar.getLastColumn());
  myRng.clear();

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

  var iRow = 1
  var jRow = 1

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

    var mahalleID = ssData.getRange('A'+ jRow ).getValue();
    var ada = ssData.getRange('B'+ jRow ).getValue() + 0;
    var parsel = ssData.getRange('C'+ jRow ).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);

        ssSonuclar.getRange(iRow,1).setValue(objJSON.properties['mahalleId']);
        ssSonuclar.getRange(iRow,2).setValue(objJSON.properties['adaNo']);
        ssSonuclar.getRange(iRow,3).setValue(objJSON.properties['parselNo']);
        ssSonuclar.getRange(iRow,4).setValue(objJSON.properties['ilAd']);
        ssSonuclar.getRange(iRow,5).setValue(objJSON.properties['ilceAd']);
        ssSonuclar.getRange(iRow,6).setValue(objJSON.properties['mahalleAd']);
        ssSonuclar.getRange(iRow,7).setValue(objJSON.properties['mevkii']);
        ssSonuclar.getRange(iRow,8).setValue(objJSON.properties['zeminKmdurum']);
        ssSonuclar.getRange(iRow,9).setValue(objJSON.properties['nitelik']);      
        ssSonuclar.getRange(iRow,10).setValue(objJSON.properties['alan']);
        ssSonuclar.getRange(iRow,11).setValue(objJSON.properties['pafta']);

        var durum = objJSON.properties['durum'].toString();

        if (durum === '1'){
          ssSonuclar.getRange(iRow,12).setValue('Aktif');
          ssSonuclar.getRange(iRow,13).setValue(objJSON.geometry['coordinates'].toString());
          ssSonuclar.getRange(iRow,14).setValue(' ');
        }
        else {
          ssSonuclar.getRange(iRow,12).setValue('Pasif');
          ssSonuclar.getRange(iRow,14).setValue(objJSON.properties['gittigiParselSebep']);


          var strJSon = objJSON.properties.gittigiParselListe.toString();

          objJSON2 = JSON.parse(strJSon);
          myList = objJSON2.features;

          var countParcels = myList.length;              

          for (var i = 0; i<countParcels; i++){
            iRow = iRow+1
            //ssSonuclar.getRange(iRow,1).setValue(myList[i]['properties']['mahalleId']);
            ssSonuclar.getRange(iRow,2).setValue(myList[i]['properties']['adaNo']);
            ssSonuclar.getRange(iRow,3).setValue(myList[i]['properties']['parselNo']);
            ssSonuclar.getRange(iRow,4).setValue(myList[i]['properties']['ilAd']);
            ssSonuclar.getRange(iRow,5).setValue(myList[i]['properties']['ilceAd']);
            ssSonuclar.getRange(iRow,6).setValue(myList[i]['properties']['mahalleAd']);
            ssSonuclar.getRange(iRow,7).setValue(myList[i]['properties']['mevkii']);
            ssSonuclar.getRange(iRow,8).setValue(myList[i]['properties']['zeminKmdurum']);
            ssSonuclar.getRange(iRow,9).setValue(myList[i]['properties']['nitelik']);
            ssSonuclar.getRange(iRow,10).setValue(myList[i]['properties']['alan']);
            ssSonuclar.getRange(iRow,11).setValue(myList[i]['properties']['pafta']);

            var durum = myList[i]['properties']['durum'].toString();

            if (durum === '1'){
              ssSonuclar.getRange(iRow,12).setValue('Aktif');
              ssSonuclar.getRange(iRow,13).setValue(myList[i]['geometry']['coordinates'].toString());
              ssSonuclar.getRange(iRow,14).setValue(' ');
            }
              else {
                ssSonuclar.getRange(iRow,12).setValue('Pasif');
                ssSonuclar.getRange(iRow,14).setValue(objJSON.properties['gittigiParselSebep']);
              }
          }
        }    
    }
    else if (responseCode !== 200){
      ssSonuclar.getRange(iRow,4).setValue(responseContent);
    }
  }
}

.
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
592
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
Sayın @Haluk üstad tek kelimeyle mükemmel olmuş. Elinize emeğinize sağlık.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,383
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Eyvallah, teşekkürler.... bence de güzel oldu. 239409 239410 239411

.
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
592
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
Hocam paylaştığınız excel vba dosyasını en güncel kodlarla günceller misiniz acaba ? Teşekkürler
VBA yerine Google Sheets kullanın. Çünkü çok fazla sorgu tetikliyor kota bitiyor veya IP yasaklıyor. Pek verim alamazsınız.
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
592
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
Sayın @Haluk üstad. Script kodlarını bizim kurumda kullanılacak şekilde aşağıdaki gibi biraz light hale getirdim.

A sütununa çekilen verilerin dolgu renginini ayarlamak için aşağıdaki koda nasıl bir revizyon yapmak gerekir?

JavaScript:
        ssSonuclar.getRange(iRow,1).setValue(objJSON.properties['mahalleId']+' '+(objJSON.properties['mahalleAd'])+' '+(objJSON.properties['adaNo'])+' / '+(objJSON.properties['parselNo']));
ssSonuclar.getRange(iRow,5).setValue(objJSON.properties['adaNo']); verisi boş ise hücreye "0" yazdırılabilir mi?


239413


JavaScript:
function TKGM_V4Light() {
  var myArr=["SORGULANAN VERİ","İL","İLÇE","MAHALLE","ADA","PARSEL",
             "NİTELİK","ALAN","DURUM","GİTTİĞİ PARSEL SEBEP"];

  var ssData     = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
  var ssSonuclar = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sonuçlar");

  ssSonuclar.getRange('A1:J1').setValues([myArr]);
  ssSonuclar.getRange(1,1,1,ssSonuclar.getLastColumn()).setFontWeight("bold");

  var myRng = ssSonuclar.getRange(2,1,ssSonuclar.getLastRow(),ssSonuclar.getLastColumn());
  myRng.clear();

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

  var iRow = 1
  var jRow = 1

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

    var mahalleID = ssData.getRange('A'+ jRow ).getValue();
    var ada = ssData.getRange('B'+ jRow ).getValue() + 0;
    var parsel = ssData.getRange('C'+ jRow ).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);

        ssSonuclar.getRange(iRow,1).setValue(objJSON.properties['mahalleId']+' '+(objJSON.properties['mahalleAd'])+' '+(objJSON.properties['adaNo'])+' / '+(objJSON.properties['parselNo']));
        ssSonuclar.getRange(iRow,2).setValue(objJSON.properties['ilAd']);
        ssSonuclar.getRange(iRow,3).setValue(objJSON.properties['ilceAd']);
        ssSonuclar.getRange(iRow,4).setValue(objJSON.properties['mahalleAd']);
        ssSonuclar.getRange(iRow,5).setValue(objJSON.properties['adaNo']);
        ssSonuclar.getRange(iRow,6).setValue(objJSON.properties['parselNo']);
        ssSonuclar.getRange(iRow,7).setValue(objJSON.properties['nitelik']);
        ssSonuclar.getRange(iRow,8).setValue(objJSON.properties['alan']);

        var durum = objJSON.properties['durum'].toString();

        if (durum === '1'){
          ssSonuclar.getRange(iRow,9).setValue('Aktif');
          ssSonuclar.getRange(iRow,10).setValue(' ');
        }
        else {
          ssSonuclar.getRange(iRow,9).setValue('Pasif');
          ssSonuclar.getRange(iRow,10).setValue(objJSON.properties['gittigiParselSebep']);

          var strJSon = objJSON.properties.gittigiParselListe.toString();

          objJSON2 = JSON.parse(strJSon);
          myList = objJSON2.features;

          var countParcels = myList.length;            

          for (var i = 0; i<countParcels; i++){
            iRow = iRow+1
            ssSonuclar.getRange(iRow,2).setValue(myList[i]['properties']['ilAd']);
            ssSonuclar.getRange(iRow,3).setValue(myList[i]['properties']['ilceAd']);
            ssSonuclar.getRange(iRow,4).setValue(myList[i]['properties']['mahalleAd']);
            ssSonuclar.getRange(iRow,5).setValue(myList[i]['properties']['adaNo']);
            ssSonuclar.getRange(iRow,6).setValue(myList[i]['properties']['parselNo']);
            ssSonuclar.getRange(iRow,7).setValue(myList[i]['properties']['nitelik']);
            ssSonuclar.getRange(iRow,8).setValue(myList[i]['properties']['alan']);

            var durum = myList[i]['properties']['durum'].toString();

            if (durum === '1'){
              ssSonuclar.getRange(iRow,9).setValue('Aktif');
              //ssSonuclar.getRange(iRow,16).setValue(myList[i]['geometry']['coordinates'].toString());
              ssSonuclar.getRange(iRow,10).setValue(' ');
            }
              else {
                ssSonuclar.getRange(iRow,9).setValue('Pasif');
                ssSonuclar.getRange(iRow,10).setValue(objJSON.properties['gittigiParselSebep']);
              }
          }
        }  
    }
    else if (responseCode !== 200){
      ssSonuclar.getRange(iRow,4).setValue(responseContent);
    }
  }
}
 
Son düzenleme:
Üst