[Yardım]  Api ile elektrik piyasalarından veri çekmek

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

Api ile elektrik piyasalarından veri çekmek

İleti#1)  gokced » 01 Kas 2020 11:38

Merhabalar,
" https://seffaflik.epias.com.tr/transpar ... 2020-10-31"
linkinde bulunan verileri excele aktarmak istiyorum bir çok kod denedim ama ne yazık ki başarılı olmadım. Yardımlarınızı bekliyorum.
Kullanıcı avatarı
gokced
 
Kayıt: 12 Haz 2019 09:57
Meslek: Uzman
Yaş: 28
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çankaya

Api ile elektrik piyasalarından veri çekmek

İleti#2)  gokced » 01 Kas 2020 11:39

Merhabalar,
" https://seffaflik.epias.com.tr/transpar ... 2020-10-31"
linkinde bulunan verileri excele aktarmak istiyorum bir çok kod denedim ama ne yazık ki başarılı olmadım. Yardımlarınızı bekliyorum.
Kullanıcı avatarı
gokced
 
Kayıt: 12 Haz 2019 09:57
Meslek: Uzman
Yaş: 28
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çankaya

Cevap: Api ile elektrik piyasalarından veri çekmek

İleti#3)  veyselemre » 01 Kas 2020 16:31

Kod: Tümünü seç
Sub test()

    Dim myData As Object, retVal As Object, mcpSmpsData As Object, statistics As Object
    Dim url$, response$, i&

    With CreateObject("MSXML2.XMLHTTP")
        url = "https://seffaflik.epias.com.tr/transparency/service/market/mcp-smp?startDate=2020-10-1&endDate=2020-10-31"
        .Open "GET", url, False
        .Send
        response = Replace(.responseText, "date", "tarih")
        .abort
    End With
    With CreateObject("MSScriptControl.ScriptControl")
        .Language = "JScript"
        Set retVal = .Eval("(" & response & ")")
    End With

    Set mcpSmpsData = retVal.body.mcpSmps
    With Sheets("Sayfa1")
        .Range("2:" & Rows.Count).ClearContents
        i = 2
        For Each myData In mcpSmpsData
            .Range("A" & i) = i - 1
            .Range("B" & i) = myData.tarih
            .Range("C" & i) = myData.mcp
            .Range("D" & i) = myData.smp
            .Range("E" & i) = myData.smpDirection
            .Range("F" & i) = myData.mcpState
            i = i + 1
        Next
        .Columns.AutoFit
    End With

    Set statistics = retVal.body.statistics

    With Sheets("Sayfa2")
        .Range("2:" & Rows.Count).ClearContents
        i = 2
        For Each myData In statistics
            .Range("A" & i) = i - 1
            .Range("B" & i) = myData.tarih
            .Range("C" & i) = myData.mcpMin
            .Range("D" & i) = myData.mcpMax
            .Range("E" & i) = myData.mcpAvg
            .Range("F" & i) = myData.mcpWeightedAverage
            .Range("G" & i) = myData.smpMin
            .Range("H" & i) = myData.smpMax
            .Range("I" & i) = myData.smpAvg
            .Range("J" & i) = myData.smpWeightedAverage
            i = i + 1
        Next
        .Columns.AutoFit
    End With

    Set retVal = Nothing
    Set mcpSmpsData = Nothing
    Set statistics = Nothing

End Sub
Kullanıcı avatarı
veyselemre
Siteye Alışmış
 
Kayıt: 28 Nis 2015 15:53
Meslek: SERBEST
Yaş: 105
İleti: 428
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çubuk

Cevap: Api ile elektrik piyasalarından veri çekmek

İleti#4)  Filizttl » 01 Kas 2020 16:52

Hocam vba ile herhangi bir siteden veri alınabilir mi? Mesela https://isdem.ng112.gov.tr/NG112-Isdem/ ... !550520014 böyle bir siteden
Kullanıcı avatarı
Filizttl
Yeni Başlamış
 
Kayıt: 01 Kas 2020 15:05
Meslek: Mühendis
Yaş: 31
İleti: 21
 
Cinsiyet: Bayan
Bulunduğunuz İl / Semt: Ordu

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: Cevap: Api ile elektrik piyasalarından veri çekmek

İleti#5)  okutkan » 01 Kas 2020 17:37

Filizttl yazdı:Hocam vba ile herhangi bir siteden veri alınabilir mi? Mesela https://isdem.ng112.gov.tr/NG112-Isdem/ ... !550520014 böyle bir siteden

İsdem e girişleri excel üzerinden kodları oluşturup imacros ile explorer ile otomatik giriş yapıyordum. Şuan işim olmadığı için bakmıyorum. imacros un full versiyonunu incelemenizi öneririm.
Kullanıcı avatarı
okutkan
Siteye Alışmış
 
Kayıt: 27 May 2017 02:45
Meslek: pol. mem.
Yaş: 28
İleti: 105
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: DENİZLİ

Cevap: Api ile elektrik piyasalarından veri çekmek

İleti#6)  okutkan » 01 Kas 2020 17:48

imacros ile yaptığınız işlemleri kaydedeceksiniz. Oluşturulan kodları excele yazıp sadece tc bölümününü değiştirerek imacros kodlarını düzenleyeceksiniz. Mesela 15 satır imacros kodu var, bu kodun sadece bir satırında Tc girişi var. Bu tc girişi yapılan satırı dinamik yapacaksın. Diğer sayfada yazdığın Tc noları bu dinamik koda ekleyecek.

Örnek İmacros Kodu:
Kodlar arasındaki 2 saniyelik beklemelerin sebebi her işlemin tamamlanması.
Tarih kodunu iki defa girmemin sebebi, ilk işlemde tarih girişi gerçekleşmiyor, ikinci girişte işlem tamamlanıyor.
Kod: Tümünü seç

TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:form:username CONTENT=######KULLANICI_TC######
SET !ENCRYPTION NO
TAG POS=1 TYPE=INPUT:PASSWORD ATTR=NAME:form:password CONTENT=####KULLANICI_ŞİFRESİ#####
TAG POS=1 TYPE=INPUT:SUBMİT ATTR=NAME:form:authendicate
WAIT SECONDS=2
TAG POS=1 TYPE=SPAN ATTR=TXT:"Yeni İzolasyon Denetimi"
WAIT SECONDS=2
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:faces:initIdentifier CONTENT=####İZOLE_KİŞİ_TCSİ####
TAG POS=1 TYPE=BUTTON:SUBMİT ATTR=NAME:faces:getfromkps
WAIT SECONDS=1
TAG POS=1 TYPE=LABEL ATTR=ID:faces:teams_label
TAG POS=1 TYPE=LI ATTR=ID:faces:teams_1
TAG POS=1 TYPE=LABEL ATTR=ID:faces:resultType_label
TAG POS=1 TYPE=LI ATTR=ID:faces:resultType_1
TAG POS=1 TYPE=LABEL ATTR=ID:faces:county_label
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:faces:county_focus
TAG POS=1 TYPE=LI ATTR=ID:faces:county_17
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:faces:denunciationTime_input CONTENT="01.11.2020 22:00"
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:faces:denunciationTime_input CONTENT="01.11.2020 22:00"
TAG POS=1 TYPE=TEXTAREA ATTR=NAME:faces:denunciationExplanation CONTENT="Aykırılık Yok"
TAG POS=1 TYPE=BUTTON:SUBMİT ATTR=NAME:faces:save
WAIT SECONDS=2

Kullanıcı avatarı
okutkan
Siteye Alışmış
 
Kayıt: 27 May 2017 02:45
Meslek: pol. mem.
Yaş: 28
İleti: 105
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: DENİZLİ

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: Api ile elektrik piyasalarından veri çekmek

İleti#7)  Erkan Akayay » 01 Kas 2020 19:34

64 bit bilgisayarımda Office 2016 ile Script kontrol sorun çıkartıyor. Bende scriptsiz bir çözüm yapmıştım.
json datası olduğu için manipüle etmek çok zor değil.

Kod: Tümünü seç
Sub elektrik()
Dim str As String
    With New XMLHTTP60
        .Open "GET", "https://seffaflik.epias.com.tr/transparency/service/market/mcp-smp?" & _
        "startDate=" & Replace(Format(Sayfa1.Range("B1"), "yyyy/mm/dd"), ".", "-") & "&" & _
        "endDate=" & Replace(Format(Sayfa1.Range("E1"), "yyyy/mm/dd"), ".", "-"), False
       
        str = "https://seffaflik.epias.com.tr/transparency/service/market/mcp-smp?" & "startDate=" & Replace(Format(Sayfa1.Range("B1"), "yyyy/mm/dd"), ".", "-") & "endDate=" & Replace(Format(Sayfa1.Range("E1"), "yyyy/mm/dd"), ".", "-")
        .send
         veri = Split(.responseText, "date"":""")
    End With
   
    For i = 1 To UBound(veri)
    If InStr(1, veri(i), "smpDirection", 1) > 0 Then
        sayMcpsmps = sayMcpsmps + 1
    End If
    Next i
    Range("A4:N" & Range("A4").End(4).Row).Clear
    For mcpsmps = 1 To sayMcpsmps
        Cells(mcpsmps + 3, 1) = Split(veri(mcpsmps), """,")(0)
        Cells(mcpsmps + 3, 2) = Split(Split(veri(mcpsmps), "mcp"":")(1), ",")(0)
        Cells(mcpsmps + 3, 3) = Split(Split(veri(mcpsmps), "smp"":")(1), ",")(0)
        Cells(mcpsmps + 3, 4) = Split(Split(veri(mcpsmps), "smpDirection"":")(1), ",")(0)
    Next mcpsmps
   
    For j = 1 To UBound(veri)
    If InStr(1, veri(j), "mcpWeightedAverage", 1) > 0 Then
        sayStatictics = sayStatictics + 1
    End If
    Next j
   
    For statictics = sayMcpsmps + 1 To UBound(veri)
        Cells(satir + 4, 6) = Split(veri(statictics), """,")(0)
        Cells(satir + 4, 7) = Split(Split(veri(statictics), "mcpMin"":")(1), ",")(0)
        Cells(satir + 4, 8) = Split(Split(veri(statictics), "mcpMax"":")(1), ",")(0)
        Cells(satir + 4, 9) = Split(Split(veri(statictics), "mcpAvg"":")(1), ",")(0)
        Cells(satir + 4, 10) = Split(Split(veri(statictics), "mcpWeightedAverage"":")(1), ",")(0)
        Cells(satir + 4, 11) = Split(Split(veri(statictics), "smpMin"":")(1), ",")(0)
        Cells(satir + 4, 12) = Split(Split(veri(statictics), "smpMax"":")(1), ",")(0)
        Cells(satir + 4, 13) = Split(Split(veri(statictics), "smpAvg"":")(1), ",")(0)
        Cells(satir + 4, 14) = Split(Split(veri(statictics), "smpWeightedAverage"":")(1), ",")(0)
        satir = satir + 1
    Next statictics
   
End Sub
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Sorularınızı düzgün bir Türkçe ile, detay vererek ve örnek dosyayla destekleyerek sorunuz.
Örnek dosyalarınızda Application.Visible veya hide gibi sayfa gizlemelerini iptal ediniz.
Kullanıcı avatarı
Erkan Akayay
Site Dostu
 
Kayıt: 20 Ağu 2008 11:59
Konum: YALOVA
Meslek: Bilgi İşlem
Yaş: 50
İleti: 4133
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İSTANBUL

Cevap: Cevap: Api ile elektrik piyasalarından veri çekmek

İleti#8)  Filizttl » 04 Kas 2020 16:51

Şimdi bu kodları vba yazdığımız zaman giriş yapabilir miyiz tam anlayamadım yardımcı olur musunuz

okutkan yazdı:imacros ile yaptığınız işlemleri kaydedeceksiniz. Oluşturulan kodları excele yazıp sadece tc bölümününü değiştirerek imacros kodlarını düzenleyeceksiniz. Mesela 15 satır imacros kodu var, bu kodun sadece bir satırında Tc girişi var. Bu tc girişi yapılan satırı dinamik yapacaksın. Diğer sayfada yazdığın Tc noları bu dinamik koda ekleyecek.

Örnek İmacros Kodu:
Kodlar arasındaki 2 saniyelik beklemelerin sebebi her işlemin tamamlanması.
Tarih kodunu iki defa girmemin sebebi, ilk işlemde tarih girişi gerçekleşmiyor, ikinci girişte işlem tamamlanıyor.
Kod: Tümünü seç

TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:form:username CONTENT=######KULLANICI_TC######
SET !ENCRYPTION NO
TAG POS=1 TYPE=INPUT:PASSWORD ATTR=NAME:form:password CONTENT=####KULLANICI_ŞİFRESİ#####
TAG POS=1 TYPE=INPUT:SUBMİT ATTR=NAME:form:authendicate
WAIT SECONDS=2
TAG POS=1 TYPE=SPAN ATTR=TXT:"Yeni İzolasyon Denetimi"
WAIT SECONDS=2
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:faces:initIdentifier CONTENT=####İZOLE_KİŞİ_TCSİ####
TAG POS=1 TYPE=BUTTON:SUBMİT ATTR=NAME:faces:getfromkps
WAIT SECONDS=1
TAG POS=1 TYPE=LABEL ATTR=ID:faces:teams_label
TAG POS=1 TYPE=LI ATTR=ID:faces:teams_1
TAG POS=1 TYPE=LABEL ATTR=ID:faces:resultType_label
TAG POS=1 TYPE=LI ATTR=ID:faces:resultType_1
TAG POS=1 TYPE=LABEL ATTR=ID:faces:county_label
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:faces:county_focus
TAG POS=1 TYPE=LI ATTR=ID:faces:county_17
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:faces:denunciationTime_input CONTENT="01.11.2020 22:00"
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:faces:denunciationTime_input CONTENT="01.11.2020 22:00"
TAG POS=1 TYPE=TEXTAREA ATTR=NAME:faces:denunciationExplanation CONTENT="Aykırılık Yok"
TAG POS=1 TYPE=BUTTON:SUBMİT ATTR=NAME:faces:save
WAIT SECONDS=2

Kullanıcı avatarı
Filizttl
Yeni Başlamış
 
Kayıt: 01 Kas 2020 15:05
Meslek: Mühendis
Yaş: 31
İleti: 21
 
Cinsiyet: Bayan
Bulunduğunuz İl / Semt: Ordu

Cevap: Cevap: Api ile elektrik piyasalarından veri çekmek

İleti#9)  gokced » 05 Kas 2020 09:49

Evet ilk yazılan kod için Script kontrol sorun çıkıyordu yolladığınız kod tam istediğim gibi çalışıyor ben de buna benzer bir kod yazmıştım ama çalıştıramamıştım. Yardımlarınız için çok teşekkür ederim.


Erkan Akayay yazdı:64 bit bilgisayarımda Office 2016 ile Script kontrol sorun çıkartıyor. Bende scriptsiz bir çözüm yapmıştım.
json datası olduğu için manipüle etmek çok zor değil.

Kod: Tümünü seç
Sub elektrik()
Dim str As String
    With New XMLHTTP60
        .Open "GET", "https://seffaflik.epias.com.tr/transparency/service/market/mcp-smp?" & _
        "startDate=" & Replace(Format(Sayfa1.Range("B1"), "yyyy/mm/dd"), ".", "-") & "&" & _
        "endDate=" & Replace(Format(Sayfa1.Range("E1"), "yyyy/mm/dd"), ".", "-"), False
       
        str = "https://seffaflik.epias.com.tr/transparency/service/market/mcp-smp?" & "startDate=" & Replace(Format(Sayfa1.Range("B1"), "yyyy/mm/dd"), ".", "-") & "endDate=" & Replace(Format(Sayfa1.Range("E1"), "yyyy/mm/dd"), ".", "-")
        .send
         veri = Split(.responseText, "date"":""")
    End With
   
    For i = 1 To UBound(veri)
    If InStr(1, veri(i), "smpDirection", 1) > 0 Then
        sayMcpsmps = sayMcpsmps + 1
    End If
    Next i
    Range("A4:N" & Range("A4").End(4).Row).Clear
    For mcpsmps = 1 To sayMcpsmps
        Cells(mcpsmps + 3, 1) = Split(veri(mcpsmps), """,")(0)
        Cells(mcpsmps + 3, 2) = Split(Split(veri(mcpsmps), "mcp"":")(1), ",")(0)
        Cells(mcpsmps + 3, 3) = Split(Split(veri(mcpsmps), "smp"":")(1), ",")(0)
        Cells(mcpsmps + 3, 4) = Split(Split(veri(mcpsmps), "smpDirection"":")(1), ",")(0)
    Next mcpsmps
   
    For j = 1 To UBound(veri)
    If InStr(1, veri(j), "mcpWeightedAverage", 1) > 0 Then
        sayStatictics = sayStatictics + 1
    End If
    Next j
   
    For statictics = sayMcpsmps + 1 To UBound(veri)
        Cells(satir + 4, 6) = Split(veri(statictics), """,")(0)
        Cells(satir + 4, 7) = Split(Split(veri(statictics), "mcpMin"":")(1), ",")(0)
        Cells(satir + 4, 8) = Split(Split(veri(statictics), "mcpMax"":")(1), ",")(0)
        Cells(satir + 4, 9) = Split(Split(veri(statictics), "mcpAvg"":")(1), ",")(0)
        Cells(satir + 4, 10) = Split(Split(veri(statictics), "mcpWeightedAverage"":")(1), ",")(0)
        Cells(satir + 4, 11) = Split(Split(veri(statictics), "smpMin"":")(1), ",")(0)
        Cells(satir + 4, 12) = Split(Split(veri(statictics), "smpMax"":")(1), ",")(0)
        Cells(satir + 4, 13) = Split(Split(veri(statictics), "smpAvg"":")(1), ",")(0)
        Cells(satir + 4, 14) = Split(Split(veri(statictics), "smpWeightedAverage"":")(1), ",")(0)
        satir = satir + 1
    Next statictics
   
End Sub
Kullanıcı avatarı
gokced
 
Kayıt: 12 Haz 2019 09:57
Meslek: Uzman
Yaş: 28
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çankaya

Cevap: Api ile elektrik piyasalarından veri çekmek

İleti#10)  Ali ÖZ » 05 Kas 2020 14:09

Merhaba Gökçe bey,
EPİAŞ şeffaflık platformundaki servislerin hepsini vb.net de yazdım. Dilerseniz projeyi gönderebilirim.
Allah bize yeter, O ne güzel vekildir.
حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Kullanıcı avatarı
Ali ÖZ
Forum Moderatörü
 
Adı Soyadı:Ali ÖZ
Kayıt: 17 Oca 2013 10:16
Konum: SAKARYA
Meslek: Yazılım
Yaş: 39
İleti: 10222
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Adapazarı/SAKARYA

Cevap: Cevap: Api ile elektrik piyasalarından veri çekmek

İleti#11)  gokced » 11 Kas 2020 15:01

Ali Bey Merhaba,
Projeyi gönderebilirseniz süper olur aslında. Çünkü bütün servisler için ayrı kod yazılması gerekiyor. Şimdiden çok teşekkür ederim
Ali ÖZ yazdı:Merhaba Gökçe bey,
EPİAŞ şeffaflık platformundaki servislerin hepsini vb.net de yazdım. Dilerseniz projeyi gönderebilirim.
Kullanıcı avatarı
gokced
 
Kayıt: 12 Haz 2019 09:57
Meslek: Uzman
Yaş: 28
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çankaya

Cevap: Api ile elektrik piyasalarından veri çekmek

İleti#12)  gokced » 19 Kas 2020 13:40

Ali Bey Merhaba ,

Projenizi bekliyorum nereden ulaşabilirim yardımlarınızı rica ederim.
Kullanıcı avatarı
gokced
 
Kayıt: 12 Haz 2019 09:57
Meslek: Uzman
Yaş: 28
İleti: 5
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara / Çankaya


Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: Google [Bot], Yandex[Bot] ve 3 misafir

Bumerang - Yazarkafe