İnternetten Veri Alma

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
337
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
@pitchoute hocam tekrar merhaba

Fonksiyonu böyle düzenledim
öğrenmek içi 2 sorum olacak
  1. Fonksiyonu iki koşullu yapmak mümkün mü, şu anki hali ile hisseyi yazarak sorguluyoruz, hisse ve tarih aynı yada yazarak sorgu atmak mümkün mü, tarihi değişken yapacağız
  2. Tarihi hafta içi gelecek şekilde ayarlamak mümkün mü, çıkan tarih hafta sonuna denk geliyorsa hafta içini alsın

Kod:
(produceName as  text) as table =>
let
    baslangicTarihi = Date.ToText(Date.AddDays(Date.From(DateTime.LocalNow()), -30),"dd-MM-yyyy"),  // Bugüneden geriye doğru istediğimiz tarihe gidiyoruz
    bitisTarihi = Date.ToText(Date.AddDays(Date.From(DateTime.LocalNow()), -2),"dd-MM-yyyy"),  // Bugüneden geriye doğru istediğimiz tarihe gidiyoruz
    sektor = null,
    endeks = "09",
    hisse = produceName,
    PayLoad = Text.FromBinary(Json.FromValue([
        baslangicTarih = baslangicTarihi,
        bitisTarihi = bitisTarihi,
        sektor = sektor,
        endeks = endeks,
        hisse = hisse
    ])),
    Kaynak = Web.Contents("https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/StockInfo/CompanyInfoAjax.aspx/GetYabanciOranlarXHR",
        [
            Headers = [#"Content-Type" = "application/json; charset=UTF-8"],
            Content = Text.ToBinary(PayLoad)
        ]
    ),
    KaynakMetin = Text.FromBinary(Kaynak),
    TemizMetin = Text.Replace(KaynakMetin, "{:null}", ""),
    JsonYaniti = Json.Document(TemizMetin),
    #"Tabloya Dönüştürüldü" = Record.ToTable(JsonYaniti),
    #"Genişletilen Value" = Table.ExpandListColumn(#"Tabloya Dönüştürüldü", "Value"),
    #"Genişletilen Value1" = Table.ExpandRecordColumn(#"Genişletilen Value", "Value", {"__type", "HISSE_KODU", "PRICE_TL", "YAB_ORAN_START", "YAB_ORAN_END", "DEGISIM", "ETKI", "HISSE_TANIM", "HISSE_TANIM_YD"}, {"Value.__type", "Value.HISSE_KODU", "Value.PRICE_TL", "Value.YAB_ORAN_START", "Value.YAB_ORAN_END", "Value.DEGISIM", "Value.ETKI", "Value.HISSE_TANIM", "Value.HISSE_TANIM_YD"}),
    #"Kaldırılan Sütunlar" = Table.RemoveColumns(#"Genişletilen Value1",{"Name", "Value.__type", "Value.HISSE_TANIM", "Value.HISSE_TANIM_YD"})
in
    #"Kaldırılan Sütunlar"
 
Katılım
11 Temmuz 2024
Mesajlar
167
Excel Vers. ve Dili
Excel 2021 Türkçe
Şu şekilde deneyin hocam;

Kod:
(let
    (hisseKodu as text, girisTarihi as date) =>
    let
        tarih =
            if Date.DayOfWeek(girisTarihi, Day.Monday) > 4 then
                Date.AddDays(girisTarihi, - (Date.DayOfWeek(girisTarihi, Day.Monday) - 4))
            else
                girisTarihi,
        baslangicTarihi = Date.ToText(Date.AddDays(tarih, -30), "dd-MM-yyyy"),
        bitisTarihi = Date.ToText(Date.AddDays(tarih, -2), "dd-MM-yyyy"),
        sektor = null,
        endeks = "09",
        hisse = hisseKodu,
        PayLoad = Text.FromBinary(Json.FromValue([
            baslangicTarih = baslangicTarihi,
            bitisTarih = bitisTarihi,
            sektor = sektor,
            endeks = endeks,
            hisse = hisse
        ])),
        Kaynak = Web.Contents("https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/StockInfo/CompanyInfoAjax.aspx/GetYabanciOranlarXHR",
            [
                Headers = [#"Content-Type" = "application/json; charset=UTF-8"],
                Content = Text.ToBinary(PayLoad)
            ]
        ),
        KaynakMetin = Text.FromBinary(Kaynak),
        TemizMetin = Text.Replace(KaynakMetin, "{:null}", ""),
        JsonYaniti = Json.Document(TemizMetin),
        #"Tabloya Dönüştürüldü" = Record.ToTable(JsonYaniti),
        #"Genişletilen Value" = Table.ExpandListColumn(#"Tabloya Dönüştürüldü", "Value"),
        #"Genişletilen Value1" = Table.ExpandRecordColumn(#"Genişletilen Value", "Value", {"__type", "HISSE_KODU", "PRICE_TL", "YAB_ORAN_START", "YAB_ORAN_END", "DEGISIM", "ETKI", "HISSE_TANIM", "HISSE_TANIM_YD"}, {"Value.__type", "Value.HISSE_KODU", "Value.PRICE_TL", "Value.YAB_ORAN_START", "Value.YAB_ORAN_END", "Value.DEGISIM", "Value.ETKI", "Value.HISSE_TANIM", "Value.HISSE_TANIM_YD"}),
        #"Kaldırılan Sütunlar" = Table.RemoveColumns(#"Genişletilen Value1", {"Name", "Value.__type", "Value.HISSE_TANIM", "Value.HISSE_TANIM_YD"})
    in
        #"Kaldırılan Sütunlar"
)
Hem hisse kodunu hem de istediğiniz tarihi fonksiyona girerek sorgu yapabilirsiniz ayrıca tarihin haftasonu olması durumunda en yakın önceki iş gününe gelecek şekilde düzenledim.
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
337
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
@pitchoute hocam merhaba
Eksik ifade etmiş olabilirim, bu alandaki tarihin hafta sonuna denk gelmemesi ve seçilebilir alan olmasını ifade etmiştim

Kod:
baslangicTarihi = Date.ToText(Date.AddDays(Date.From(DateTime.LocalNow()), -30),"dd-MM-yyyy"),  // Bugüneden geriye doğru istediğimiz tarihe gidiyoruz
    bitisTarihi = Date.ToText(Date.AddDays(Date.From(DateTime.LocalNow()), -2),"dd-MM-yyyy"),  // Bugüneden geriye doğru istediğimiz tarihe gidiyoruz
 
Katılım
11 Temmuz 2024
Mesajlar
167
Excel Vers. ve Dili
Excel 2021 Türkçe
Ben yanlış anlamış olabilirim, şu şekilde dener misiniz;

Kod:
let
    (hisseKodu as text, girisTarihi as date) =>
    let
        tarih =
            if Date.DayOfWeek(girisTarihi, Day.Monday) = 5 then
                Date.AddDays(girisTarihi, -1)
            else if Date.DayOfWeek(girisTarihi, Day.Monday) = 6 then
                Date.AddDays(girisTarihi, -2)
            else
                girisTarihi,
        baslangicTarihi = Date.ToText(Date.AddDays(tarih, -30), "dd-MM-yyyy"),
        bitisTarihi = Date.ToText(Date.AddDays(tarih, -2), "dd-MM-yyyy"),
        sektor = null,
        endeks = "09",
        hisse = hisseKodu,
        PayLoad = Text.FromBinary(Json.FromValue([
            baslangicTarih = baslangicTarihi,
            bitisTarih = bitisTarihi,
            sektor = sektor,
            endeks = endeks,
            hisse = hisse
        ])),
        Kaynak = Web.Contents(
            "https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/StockInfo/CompanyInfoAjax.aspx/GetYabanciOranlarXHR",
            [
                Headers = [#"Content-Type" = "application/json; charset=UTF-8"],
                Content = Text.ToBinary(PayLoad)
            ]
        ),
        KaynakMetin = Text.FromBinary(Kaynak),
        TemizMetin = Text.Replace(KaynakMetin, "{:null}", ""),
        JsonYaniti = Json.Document(TemizMetin),
        #"Tabloya Dönüştürüldü" = Record.ToTable(JsonYaniti),
        #"Genişletilen Value" = Table.ExpandListColumn(#"Tabloya Dönüştürüldü", "Value"),
        #"Genişletilen Value1" = Table.ExpandRecordColumn(
            #"Genişletilen Value",
            "Value",
            {"__type", "HISSE_KODU", "PRICE_TL", "YAB_ORAN_START", "YAB_ORAN_END", "DEGISIM", "ETKI", "HISSE_TANIM", "HISSE_TANIM_YD"},
            {"Value.__type", "Value.HISSE_KODU", "Value.PRICE_TL", "Value.YAB_ORAN_START", "Value.YAB_ORAN_END", "Value.DEGISIM", "Value.ETKI", "Value.HISSE_TANIM", "Value.HISSE_TANIM_YD"}
        ),
        #"Kaldırılan Sütunlar" = Table.RemoveColumns(
            #"Genişletilen Value1",
            {"Name", "Value.__type", "Value.HISSE_TANIM", "Value.HISSE_TANIM_YD"}
        )
    in
        #"Kaldırılan Sütunlar"
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
337
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
Hafta sonuna denk gelecek kısım için verdiğiniz kısmı aşağıdaki gibi düzenledim, burada sorgu çalışıyor, sadece tarih alanı seçilebilir olmadı

Verdiğiniz giriş tarih date alanı, sorgu text olarak istiyor, texte çevirince aşağıdaki gibi hata verdi
254313
Kod:
let
    baslangicTarihi = Date.ToText(Date.AddDays(Date.From(DateTime.LocalNow()), -5),"dd-MM-yyyy"),  // Bugüneden geriye doğru istediğimiz tarihe gidiyoruz
    bitisTarihi = if Date.DayOfWeek(DateTime.LocalNow(),Day.Monday) > 4 then Date.ToText(Date.From(Date.AddDays(DateTime.LocalNow(), - (Date.DayOfWeek(DateTime.LocalNow(), Day.Monday) - 4 ))),"dd-MM-yyyy") else Date.ToText(Date.From(DateTime.LocalNow()),"dd-MM-yyyy"),
    //Date.ToText(Date.AddDays(Date.From(DateTime.LocalNow()), -3),"dd-MM-yyyy"),  // Bugüneden geriye doğru istediğimiz tarihe gidiyoruz
    sektor = null,
    endeks = "09",
    hisse = "AKSA",
    PayLoad = Text.FromBinary(Json.FromValue([
        baslangicTarih = baslangicTarihi,
        bitisTarihi = bitisTarihi,
        sektor = sektor,
        endeks = endeks,
        hisse = hisse
    ])),
    Kaynak = Web.Contents("https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/StockInfo/CompanyInfoAjax.aspx/GetYabanciOranlarXHR",
        [
            Headers = [#"Content-Type" = "application/json; charset=UTF-8"],
            Content = Text.ToBinary(PayLoad)
        ]
    ),
    KaynakMetin = Text.FromBinary(Kaynak),
    TemizMetin = Text.Replace(KaynakMetin, "{:null}", ""),
    JsonYaniti = Json.Document(TemizMetin),
    #"Tabloya Dönüştürüldü" = Record.ToTable(JsonYaniti),
    #"Genişletilen Value" = Table.ExpandListColumn(#"Tabloya Dönüştürüldü", "Value"),
    #"Genişletilen Value1" = Table.ExpandRecordColumn(#"Genişletilen Value", "Value", {"__type", "HISSE_KODU", "PRICE_TL", "YAB_ORAN_START", "YAB_ORAN_END", "DEGISIM", "ETKI", "HISSE_TANIM", "HISSE_TANIM_YD"}, {"Value.__type", "Value.HISSE_KODU", "Value.PRICE_TL", "Value.YAB_ORAN_START", "Value.YAB_ORAN_END", "Value.DEGISIM", "Value.ETKI", "Value.HISSE_TANIM", "Value.HISSE_TANIM_YD"}),
    #"Kaldırılan Sütunlar" = Table.RemoveColumns(#"Genişletilen Value1",{"Name", "Value.__type", "Value.HISSE_TANIM", "Value.HISSE_TANIM_YD"})
in
    #"Kaldırılan Sütunlar"
 
Üst