Google E-Tablo Revir Kayıt Formu

mdagistanli

Altın Üye
Katılım
5 Mayıs 2014
Mesajlar
106
Excel Vers. ve Dili
Excel Pro Plus 2019 TR
Altın Üyelik Bitiş Tarihi
12-02-2025
Merhabalar.

Linkini paylaştığım Google E-Tablo'da revir için kayıt formu oluşturmaya çalışıyorum.
'Ana Sayfa' B1:B5 aralığına yazılan verileri, 'Kayıt Defteri' sayfasında son dolu satırdan sonraki boş satıra devrik olarak ve sadece metin olarak yapıştırıp, 'Ana Sayfa' B1 hücresine dönecek makroya ihtiyacım var.
Makroyu D5 hücresinde Kaydet düğmesine bağlamak istiyorum.
Göreceli ve mutlak makro kaydederek yapmaya çalıştım çözemedim.

Yardımcı olabilir misiniz?

E-Tablo linki: DOCS...
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
559
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
function findLastRow(sheetName) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var lastRow = sheet.getLastRow();
while (lastRow > 0 && sheet.getRange('A' + lastRow).isBlank()) {
lastRow--;

}
return lastRow + 1;
}

function pasteData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName('Ana Sayfa');
var targetSheet = ss.getSheetByName('Kayıt Defteri');

var sourceData = sourceSheet.getRange('B1:B5').getValues().filter(String);
var lastRow = findLastRow('Kayıt Defteri');

targetSheet.getRange('A' + lastRow + ':A' + (lastRow + sourceData.length - 1)).setValues(sourceData);

SpreadsheetApp.flush();
}

function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Kaydet')
.addItem('Veriyi Kaydet', 'pasteData')
.addToUi();
}

Sonrasında
Script editör penceresini kapatın.
D5 hücresini seçin.
Araçlar > Makrolar > Makro Ayarları'na gidin.
"Veriyi Kaydet" makrosunu seçin ve "Bağla"yı tıklayın.

Bu alıntı kodu denermisiniz
 

mdagistanli

Altın Üye
Katılım
5 Mayıs 2014
Mesajlar
106
Excel Vers. ve Dili
Excel Pro Plus 2019 TR
Altın Üyelik Bitiş Tarihi
12-02-2025
...
Sonrasında
Script editör penceresini kapatın.
D5 hücresini seçin.
Araçlar > Makrolar > Makro Ayarları'na gidin.
"Veriyi Kaydet" makrosunu seçin ve "Bağla"yı tıklayın.

Bu alıntı kodu denermisiniz
Teşekkür ederim hocam, denedim ve çalışmadı.
Ayrıca makro ayarlarında Bağla bulamadım.
Dosya düzenlenebilir olarak paylaşıldı, direkt üzerinde denemek ister misiniz?
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
559
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
function findLastRow(sheetName) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var lastRow = sheet.getLastRow();
while (lastRow > 0 && sheet.getRange('A' + lastRow).isBlank()) {
lastRow--;
}
return lastRow + 1;
}

function pasteData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName('Ana Sayfa');
var targetSheet = ss.getSheetByName('Kayıt Defteri');
var sourceData = sourceSheet.getRange('B1:B5').getValues().filter(String);
var lastRow = findLastRow('Kayıt Defteri');

targetSheet.getRange('A' + lastRow + ':A' + (lastRow + sourceData.length - 1)).setValues(sourceData);

SpreadsheetApp.flush();
}
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Kaydet')
.addItem('Veriyi Kaydet', 'pasteData')
.addToUi();
}

Birde bu kodu denermisiniz.

Hocam kusura bakmayın bu kodu alıntı olarak bulmuştum.Kodlar bana ait değildir.
Yardımcı olursa deneyip kullanınırsınız diye düşünmüşdüm.Olmamış demekki.Üzgünüm.

Forumdaki diğer arkadaşlarım umarım size çözüm sunarlar.Teşekkür ederim
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Kodları düzenledim, sayfanıza buton ekledim.

Kod:
function findLastRow(sheet, rangeString) {
  var rng = sheet.getRange(rangeString).getValues();
  var lrIndex;
  for (var i = rng.length - 1; i >= 0; i--) {
    if (!rng[i].every(function (c) {
      return c == "";
    })) {
      break;
    }
  }
  return i + 2;
}

function pasteData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet = ss.getSheetByName('Ana Sayfa');
  var targetSheet = ss.getSheetByName('Kayıt Defteri');
  var sourceData = sourceSheet.getRange('B1:B5').getValues().filter(String);
  sourceData = sourceData[0].map((col, i) => sourceData.map(row => row[i]));
  var lastRow = findLastRow(targetSheet, 'B1:B');

  targetSheet.getRange(lastRow, 2, 1, sourceData[0].length).setValues(sourceData);
  targetSheet.getRange(lastRow, 2).setNumberFormat('d" "mmmm" "yyyy" "dddd')
  SpreadsheetApp.flush();
  SpreadsheetApp.getActive().toast("Kayıt işlemi tamamlandı..");
}
 
Üst