internet sayfasıdan bilgi alma

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bu işin en kolay yolu, "Google Sheets" kullanmak.....





.
 
Son düzenleme:

muratboz06

Destek Ekibi
Destek Ekibi
Katılım
23 Mart 2017
Mesajlar
568
Excel Vers. ve Dili
Office365 TR
Çalışma kitabının kod bölümüne ekleyiniz.
Worksheets("Sayfa1").Range("A1") satırını kendi çalışma sayfanıza göre düzenlersiniz.

Kod:
Private Sub Workbook_Open()
    Dim URL As String
    Dim IE As Object

    Set IE = CreateObject("InternetExplorer.Application")

    IE.Visible = False

    URL = "https://www.tefas.gov.tr/FonAnaliz.aspx?FonKod=YLB"
    IE.Navigate URL

    Application.StatusBar = URL & " yükleniyor. Lütfen bekleyiniz.."

    Do While IE.ReadyState = 4: DoEvents: Loop   'Do While
    Do Until IE.ReadyState = 4: DoEvents: Loop   'Do Until

   ' Sayfa1 isimli çalışma sayfasının A1 hücresine son fiyat bilgisini getirir.
    Worksheets("Sayfa1").Range("A1") = IE.document.getElementsByClassName("top-list")(0).getElementsByTagName("span")(0).innerhtml * 1
   
    IE.Quit
    Set IE = Nothing
    MsgBox "Son fiyat bilgisi alındı.", vbOKOnly
End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Eğer VBA ile yapılacaksa, Murat Beyin koduna alternatif olarak aşağıdaki gibi bir şey de kullanılabilir....

Not: "Microsoft XML, V6.0" ve "Microsoft HTML Object Library" eklenmelidir.

Kod:
Sub Test()
'   Haluk - 05/11/2020
    Dim HTTP As New XMLHTTP60, HTML As New HTMLDocument
    Dim xElement As Object
    Const URL As String = "https://www.tefas.gov.tr/FonAnaliz.aspx?FonKod=YLB"

    HTTP.Open "GET", URL, False
    HTTP.Send
    HTML.body.innerHTML = HTTP.responseText

    Set xElement = HTML.getElementsByClassName("top-list")
    MsgBox Split(xElement(0).innerText, vbLf)(2)
End Sub

Ama yine de en kısası, ilk mesajımda belirttiğim yöntemdir.

.
 
Katılım
4 Aralık 2019
Mesajlar
16
Excel Vers. ve Dili
excell 2016
Eğer VBA ile yapılacaksa, Murat Beyin koduna alternatif olarak aşağıdaki gibi bir şey de kullanılabilir....

Not: "Microsoft XML, V6.0" ve "Microsoft HTML Object Library" eklenmelidir.

Kod:
Sub Test()
'   Haluk - 05/11/2020
    Dim HTTP As New XMLHTTP60, HTML As New HTMLDocument
    Dim xElement As Object
    Const URL As String = "https://www.tefas.gov.tr/FonAnaliz.aspx?FonKod=YLB"

    HTTP.Open "GET", URL, False
    HTTP.Send
    HTML.body.innerHTML = HTTP.responseText

    Set xElement = HTML.getElementsByClassName("top-list")
    MsgBox Split(xElement(0).innerText, vbLf)(2)
End Sub

Ama yine de en kısası, ilk mesajımda belirttiğim yöntemdir.

.
Bu işin en kolay yolu, "Google Sheets" kullanmak.....





.
Yanlış mı yazdım bilmiyorum split çalışmadı. Teşekkür ederim.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Hangi mesajdaki "Split" çalışmadı ? Google Sheets mi, yoksa VBA mi?

Bende her ikisi de çalışıyor....

.
 
Katılım
30 Ocak 2023
Mesajlar
1
Excel Vers. ve Dili
java script
TEFAS verilerini Google Sheets'e çeken bir fonksiyon yazdım. Günlük olarak çalıştırıyorum fonların değerlerini ve bir takım bilgileri otomatik çekiyor.
Uzantılar > Apps menüsünden eklenecek. ilk fonksiyon verileri çeker, ikincisi ise tabloları siler.
Dikkat edilmesi gereken. Sayfanın adı FONLAR olmalı. farklı isim verilecek ise kod içinden FONLAR yerine başka bir isim kullanılabilir.
K2 ve L2 hücrelerine hangi satırdan başlayacağı, hangi satırda biteceği yazılacak. Bazen google hata verip çekme işlemini yarıda bırakabiliyor. Özellikle fon sayısı çok fazla ise. Bu durumda baştan başlamaması için K2 ve L2 hücrelerine çekemediği yerleri yazabilirsiniz.
Sayfa içine 2 tane de buton eklenip bu fonksiyonlar çalıştırılabilir.

JavaScript:
/*
YARDIM:
Google Sheet içinde bir doküman oluşturunuz.
Doküman içindeki Sayfa1 veya Sheet1 isimli dosyanın adını FONLAR olarak değiştiriniz
Uzantılar menüsünden Apps komut dosyası adımından (+) ya tıklayarak Komut dosyası oluşturunuz
Otomatik olarak eklenmiş satırları silerek aşağıdaki satırların hepsini yapıştırınız
Kaydet yaparak çıkabilirsiniz.
Dosyayı yeniden açtığınızda FONLAR isimli yeni bir menü oluşacaktır.
İlk olarak Varsayılan Sütün Adlarını eklemelisiniz. Ardından dosya içinde sadece FON KODU sütününa veriyi çekmek istediğiniz fonları yazmalısınız
FON ile ilgili diğer bilgileri siteden otomatik çekecektir.
Fon sayısı çok olduğunda süre uzun olacak, bazen erişim yapamayarak hata verebilir.
Baş.Satırı ve Bit.Satırı kısımlarına hangi satırlar arasını çekmek istiyorsanız satır numaralarını yazmalısınız.
*/
function TEFAS() {
  // Çalışacağınız çalışma sayfasının adını buraya yazın
  var sheetName = "FONLAR";
  var url = 'https://www.tefas.gov.tr/FonAnaliz.aspx?FonKod=';

  // Çalışacağınız çalışma sayfasına erişin
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  //K2 ve L2 hücrelerine yazılacak sarır ile başlayıp bitirir
  var startwith = sheet.getRange('K2').getValue();
  var endto = sheet.getRange('L2').getValue();
  var hucrebirlestir= 'A' + startwith + ':' + 'A' + endto;
  //const timezone = sheet.getActiveSpreadsheet.timezone
  const date = Utilities.formatDate(new Date(), "GMT+3", "dd.MM.yyyy");

  // Veri çekeceği hücreler için değerleri getirir
  var data = sheet.getRange(hucrebirlestir).getValues();
 
  // Tek tek satırları okuması için donguye alındı
  for (var i = 0; i < data.length; i++) {
    var address = url + data[i][0];
  // Logger.log(address);
  console.log(address);
  SpreadsheetApp.getActive().toast("Alınan Sayfa: "+ address);

  // Adreslerden veri çekmek için HTTP isteği yapın
  var response = UrlFetchApp.fetch(address, {muteHttpExceptions: true});
  
  // Çekilen verinin içinde arama yapın
  var fiyat = response.getContentText().split('<span>')[1].split('</span>')[0];
  var gunlukyuzde = response.getContentText().split('<span>')[2].split('</span>')[0];
  var bir_ay = response.getContentText().split('<span style="font-size: 24px;">')[1].split('</span>')[0];
  var uc_ay = response.getContentText().split('<span style="font-size: 24px;">')[2].split('</span>')[0];
  var alti_ay = response.getContentText().split('<span style="font-size: 24px;">')[3].split('</span>')[0];
  var bir_yil = response.getContentText().split('<span style="font-size: 24px;">')[4].split('</span>')[0];
  var fonadi = response.getContentText().split('<span id="MainContent_FormViewMainIndicators_LabelFund">')[1].split('</span>')[0];



    // Çekilen veriyi sütünlara yazacak
  sheet.getRange(i + startwith, 2).setValue(fonadi);
  sheet.getRange(i + startwith, 3).setValue(fiyat);
  //sheet.getRange(i + startwith, 4).setValue(gunlukyuzde);
  sheet.getRange(i + startwith, 5).setValue(bir_ay);
  sheet.getRange(i + startwith, 6).setValue(uc_ay);
  sheet.getRange(i + startwith, 7).setValue(alti_ay);
  sheet.getRange(i + startwith, 8).setValue(bir_yil);
  sheet.getRange(i + startwith, 9).setValue(date);
    if (gunlukyuzde === "%-100") {
      sheet.getRange(i + startwith, 4).setValue("Veri yok")
    }
    else {
      sheet.getRange(i + startwith, 4).setValue(gunlukyuzde)
    }

  }
}
// Eski veriyi siler
function clearFormattingOnly() {
 var range = SpreadsheetApp
               .getActive()
               .getSheetByName("FONLAR")
               .getRange(2,3,100,7);
// range.clearFormat();
 range.clearContent();
 SpreadsheetApp.getActive().toast("Eski Veriler Silindi.");
}

function defaultColoom(){
  // Başlık bilgisinin eklenmesi
  var sheetName = "FONLAR";
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  sheet.getRange(1,1).setValue("FON KODU").setNote("Sadece Fon kodunu yazın, diğer bilgiler Tefas'dan çekilecektir");
  sheet.getRange(1,2).setValue("FON ADI");
  sheet.getRange(1,3).setValue("FIYAT");
  sheet.getRange(1,4).setValue("GUNLUK %");
  sheet.getRange(1,5).setValue("AYLIK %");
  sheet.getRange(1,6).setValue("3 AY %");
  sheet.getRange(1,7).setValue("6 AY %");
  sheet.getRange(1,8).setValue("1 YIL %");
  sheet.getRange(1,9).setValue("TARIH");
  sheet.getRange(1,11).setValue("Baş.Satırı");
  sheet.getRange(2,11).setValue("2");
  sheet.getRange(1,12).setValue("Bit.Satırı");
  sheet.getRange(2,12).setValue("3");
  sheet.getRange("K2:L2").setBackground("gray").setHorizontalAlignment("center").setNote("Hangi satırları okuyacağını yazın!");

}



function onOpen() {
   SpreadsheetApp.getUi().createMenu("📋 FONLAR")
    .addItem("✔️ Fon Verilerini Çek", "TEFAS")
    .addItem("❌ Eski Verileri Sil", "clearFormattingOnly")
    .addItem("🎈Varsayılan Sütün Adlarını Ekle","defaultColoom")
    .addToUi();
}
 
Son düzenleme:
Katılım
27 Nisan 2009
Mesajlar
1
Excel Vers. ve Dili
Ofis XP
TEFAS verilerini Google Sheets'e çeken bir fonksiyon yazdım. Günlük olarak çalıştırıyorum fonların değerlerini ve bir takım bilgileri otomatik çekiyor.
Uzantılar > Apps menüsünden eklenecek. ilk fonksiyon verileri çeker, ikincisi ise tabloları siler.
Dikkat edilmesi gereken. Sayfanın adı FONLAR olmalı. farklı isim verilecek ise kod içinden FONLAR yerine başka bir isim kullanılabilir.
K2 ve L2 hücrelerine hangi satırdan başlayacağı, hangi satırda biteceği yazılacak. Bazen google hata verip çekme işlemini yarıda bırakabiliyor. Özellikle fon sayısı çok fazla ise. Bu durumda baştan başlamaması için K2 ve L2 hücrelerine çekemediği yerleri yazabilirsiniz.
Sayfa içine 2 tane de buton eklenip bu fonksiyonlar çalıştırılabilir.

JavaScript:
/*
YARDIM:
Google Sheet içinde bir doküman oluşturunuz.
Doküman içindeki Sayfa1 veya Sheet1 isimli dosyanın adını FONLAR olarak değiştiriniz
Uzantılar menüsünden Apps komut dosyası adımından (+) ya tıklayarak Komut dosyası oluşturunuz
Otomatik olarak eklenmiş satırları silerek aşağıdaki satırların hepsini yapıştırınız
Kaydet yaparak çıkabilirsiniz.
Dosyayı yeniden açtığınızda FONLAR isimli yeni bir menü oluşacaktır.
İlk olarak Varsayılan Sütün Adlarını eklemelisiniz. Ardından dosya içinde sadece FON KODU sütününa veriyi çekmek istediğiniz fonları yazmalısınız
FON ile ilgili diğer bilgileri siteden otomatik çekecektir.
Fon sayısı çok olduğunda süre uzun olacak, bazen erişim yapamayarak hata verebilir.
Baş.Satırı ve Bit.Satırı kısımlarına hangi satırlar arasını çekmek istiyorsanız satır numaralarını yazmalısınız.
*/
function TEFAS() {
  // Çalışacağınız çalışma sayfasının adını buraya yazın
  var sheetName = "FONLAR";
  var url = 'https://www.tefas.gov.tr/FonAnaliz.aspx?FonKod=';

  // Çalışacağınız çalışma sayfasına erişin
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  //K2 ve L2 hücrelerine yazılacak sarır ile başlayıp bitirir
  var startwith = sheet.getRange('K2').getValue();
  var endto = sheet.getRange('L2').getValue();
  var hucrebirlestir= 'A' + startwith + ':' + 'A' + endto;
  //const timezone = sheet.getActiveSpreadsheet.timezone
  const date = Utilities.formatDate(new Date(), "GMT+3", "dd.MM.yyyy");

  // Veri çekeceği hücreler için değerleri getirir
  var data = sheet.getRange(hucrebirlestir).getValues();

  // Tek tek satırları okuması için donguye alındı
  for (var i = 0; i < data.length; i++) {
    var address = url + data[i][0];
  // Logger.log(address);
  console.log(address);
  SpreadsheetApp.getActive().toast("Alınan Sayfa: "+ address);

  // Adreslerden veri çekmek için HTTP isteği yapın
  var response = UrlFetchApp.fetch(address, {muteHttpExceptions: true});
 
  // Çekilen verinin içinde arama yapın
  var fiyat = response.getContentText().split('<span>')[1].split('</span>')[0];
  var gunlukyuzde = response.getContentText().split('<span>')[2].split('</span>')[0];
  var bir_ay = response.getContentText().split('<span style="font-size: 24px;">')[1].split('</span>')[0];
  var uc_ay = response.getContentText().split('<span style="font-size: 24px;">')[2].split('</span>')[0];
  var alti_ay = response.getContentText().split('<span style="font-size: 24px;">')[3].split('</span>')[0];
  var bir_yil = response.getContentText().split('<span style="font-size: 24px;">')[4].split('</span>')[0];
  var fonadi = response.getContentText().split('<span id="MainContent_FormViewMainIndicators_LabelFund">')[1].split('</span>')[0];



    // Çekilen veriyi sütünlara yazacak
  sheet.getRange(i + startwith, 2).setValue(fonadi);
  sheet.getRange(i + startwith, 3).setValue(fiyat);
  //sheet.getRange(i + startwith, 4).setValue(gunlukyuzde);
  sheet.getRange(i + startwith, 5).setValue(bir_ay);
  sheet.getRange(i + startwith, 6).setValue(uc_ay);
  sheet.getRange(i + startwith, 7).setValue(alti_ay);
  sheet.getRange(i + startwith, 8).setValue(bir_yil);
  sheet.getRange(i + startwith, 9).setValue(date);
    if (gunlukyuzde === "%-100") {
      sheet.getRange(i + startwith, 4).setValue("Veri yok")
    }
    else {
      sheet.getRange(i + startwith, 4).setValue(gunlukyuzde)
    }

  }
}
// Eski veriyi siler
function clearFormattingOnly() {
var range = SpreadsheetApp
               .getActive()
               .getSheetByName("FONLAR")
               .getRange(2,3,100,7);
// range.clearFormat();
range.clearContent();
SpreadsheetApp.getActive().toast("Eski Veriler Silindi.");
}

function defaultColoom(){
  // Başlık bilgisinin eklenmesi
  var sheetName = "FONLAR";
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  sheet.getRange(1,1).setValue("FON KODU").setNote("Sadece Fon kodunu yazın, diğer bilgiler Tefas'dan çekilecektir");
  sheet.getRange(1,2).setValue("FON ADI");
  sheet.getRange(1,3).setValue("FIYAT");
  sheet.getRange(1,4).setValue("GUNLUK %");
  sheet.getRange(1,5).setValue("AYLIK %");
  sheet.getRange(1,6).setValue("3 AY %");
  sheet.getRange(1,7).setValue("6 AY %");
  sheet.getRange(1,8).setValue("1 YIL %");
  sheet.getRange(1,9).setValue("TARIH");
  sheet.getRange(1,11).setValue("Baş.Satırı");
  sheet.getRange(2,11).setValue("2");
  sheet.getRange(1,12).setValue("Bit.Satırı");
  sheet.getRange(2,12).setValue("3");
  sheet.getRange("K2:L2").setBackground("gray").setHorizontalAlignment("center").setNote("Hangi satırları okuyacağını yazın!");

}



function onOpen() {
   SpreadsheetApp.getUi().createMenu("📋 FONLAR")
    .addItem("✔ Fon Verilerini Çek", "TEFAS")
    .addItem("❌ Eski Verileri Sil", "clearFormattingOnly")
    .addItem("🎈Varsayılan Sütün Adlarını Ekle","defaultColoom")
    .addToUi();
}
Scripte verdiginiz emek icin tesekkurler. Kisa da olsa ornek bir google sheet dosyasi ile paylasirsaniz cok iyi olur. Benim gibi scriptlerden pek anlamayanlara yardim icin
 

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
TEFAS verilerini Google Sheets'e çeken bir fonksiyon yazdım. Günlük olarak çalıştırıyorum fonların değerlerini ve bir takım bilgileri otomatik çekiyor.
Uzantılar > Apps menüsünden eklenecek. ilk fonksiyon verileri çeker, ikincisi ise tabloları siler.
Dikkat edilmesi gereken. Sayfanın adı FONLAR olmalı. farklı isim verilecek ise kod içinden FONLAR yerine başka bir isim kullanılabilir.
K2 ve L2 hücrelerine hangi satırdan başlayacağı, hangi satırda biteceği yazılacak. Bazen google hata verip çekme işlemini yarıda bırakabiliyor. Özellikle fon sayısı çok fazla ise. Bu durumda baştan başlamaması için K2 ve L2 hücrelerine çekemediği yerleri yazabilirsiniz.
Sayfa içine 2 tane de buton eklenip bu fonksiyonlar çalıştırılabilir.

JavaScript:
/*
YARDIM:
Google Sheet içinde bir doküman oluşturunuz.
Doküman içindeki Sayfa1 veya Sheet1 isimli dosyanın adını FONLAR olarak değiştiriniz
Uzantılar menüsünden Apps komut dosyası adımından (+) ya tıklayarak Komut dosyası oluşturunuz
Otomatik olarak eklenmiş satırları silerek aşağıdaki satırların hepsini yapıştırınız
Kaydet yaparak çıkabilirsiniz.
Dosyayı yeniden açtığınızda FONLAR isimli yeni bir menü oluşacaktır.
İlk olarak Varsayılan Sütün Adlarını eklemelisiniz. Ardından dosya içinde sadece FON KODU sütününa veriyi çekmek istediğiniz fonları yazmalısınız
FON ile ilgili diğer bilgileri siteden otomatik çekecektir.
Fon sayısı çok olduğunda süre uzun olacak, bazen erişim yapamayarak hata verebilir.
Baş.Satırı ve Bit.Satırı kısımlarına hangi satırlar arasını çekmek istiyorsanız satır numaralarını yazmalısınız.
*/
function TEFAS() {
  // Çalışacağınız çalışma sayfasının adını buraya yazın
  var sheetName = "FONLAR";
  var url = 'https://www.tefas.gov.tr/FonAnaliz.aspx?FonKod=';

  // Çalışacağınız çalışma sayfasına erişin
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  //K2 ve L2 hücrelerine yazılacak sarır ile başlayıp bitirir
  var startwith = sheet.getRange('K2').getValue();
  var endto = sheet.getRange('L2').getValue();
  var hucrebirlestir= 'A' + startwith + ':' + 'A' + endto;
  //const timezone = sheet.getActiveSpreadsheet.timezone
  const date = Utilities.formatDate(new Date(), "GMT+3", "dd.MM.yyyy");

  // Veri çekeceği hücreler için değerleri getirir
  var data = sheet.getRange(hucrebirlestir).getValues();

  // Tek tek satırları okuması için donguye alındı
  for (var i = 0; i < data.length; i++) {
    var address = url + data[i][0];
  // Logger.log(address);
  console.log(address);
  SpreadsheetApp.getActive().toast("Alınan Sayfa: "+ address);

  // Adreslerden veri çekmek için HTTP isteği yapın
  var response = UrlFetchApp.fetch(address, {muteHttpExceptions: true});

  // Çekilen verinin içinde arama yapın
  var fiyat = response.getContentText().split('<span>')[1].split('</span>')[0];
  var gunlukyuzde = response.getContentText().split('<span>')[2].split('</span>')[0];
  var bir_ay = response.getContentText().split('<span style="font-size: 24px;">')[1].split('</span>')[0];
  var uc_ay = response.getContentText().split('<span style="font-size: 24px;">')[2].split('</span>')[0];
  var alti_ay = response.getContentText().split('<span style="font-size: 24px;">')[3].split('</span>')[0];
  var bir_yil = response.getContentText().split('<span style="font-size: 24px;">')[4].split('</span>')[0];
  var fonadi = response.getContentText().split('<span id="MainContent_FormViewMainIndicators_LabelFund">')[1].split('</span>')[0];



    // Çekilen veriyi sütünlara yazacak
  sheet.getRange(i + startwith, 2).setValue(fonadi);
  sheet.getRange(i + startwith, 3).setValue(fiyat);
  //sheet.getRange(i + startwith, 4).setValue(gunlukyuzde);
  sheet.getRange(i + startwith, 5).setValue(bir_ay);
  sheet.getRange(i + startwith, 6).setValue(uc_ay);
  sheet.getRange(i + startwith, 7).setValue(alti_ay);
  sheet.getRange(i + startwith, 8).setValue(bir_yil);
  sheet.getRange(i + startwith, 9).setValue(date);
    if (gunlukyuzde === "%-100") {
      sheet.getRange(i + startwith, 4).setValue("Veri yok")
    }
    else {
      sheet.getRange(i + startwith, 4).setValue(gunlukyuzde)
    }

  }
}
// Eski veriyi siler
function clearFormattingOnly() {
var range = SpreadsheetApp
               .getActive()
               .getSheetByName("FONLAR")
               .getRange(2,3,100,7);
// range.clearFormat();
range.clearContent();
SpreadsheetApp.getActive().toast("Eski Veriler Silindi.");
}

function defaultColoom(){
  // Başlık bilgisinin eklenmesi
  var sheetName = "FONLAR";
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  sheet.getRange(1,1).setValue("FON KODU").setNote("Sadece Fon kodunu yazın, diğer bilgiler Tefas'dan çekilecektir");
  sheet.getRange(1,2).setValue("FON ADI");
  sheet.getRange(1,3).setValue("FIYAT");
  sheet.getRange(1,4).setValue("GUNLUK %");
  sheet.getRange(1,5).setValue("AYLIK %");
  sheet.getRange(1,6).setValue("3 AY %");
  sheet.getRange(1,7).setValue("6 AY %");
  sheet.getRange(1,8).setValue("1 YIL %");
  sheet.getRange(1,9).setValue("TARIH");
  sheet.getRange(1,11).setValue("Baş.Satırı");
  sheet.getRange(2,11).setValue("2");
  sheet.getRange(1,12).setValue("Bit.Satırı");
  sheet.getRange(2,12).setValue("3");
  sheet.getRange("K2:L2").setBackground("gray").setHorizontalAlignment("center").setNote("Hangi satırları okuyacağını yazın!");

}



function onOpen() {
   SpreadsheetApp.getUi().createMenu("📋 FONLAR")
    .addItem("✔ Fon Verilerini Çek", "TEFAS")
    .addItem("❌ Eski Verileri Sil", "clearFormattingOnly")
    .addItem("🎈Varsayılan Sütün Adlarını Ekle","defaultColoom")
    .addToUi();
}
kodlar çalışmıyor , güncelini paylaşır mısınız acaba ?

246447
 
Üst