Çözüldü Google Sheet - Kim veri girdi ?

Katılım
19 Nisan 2016
Mesajlar
16
Excel Vers. ve Dili
Google E-Tablolar
Merhaba

Soru: Google sheette kimin veri girdiğini hücreye yazdırma imkanımız var mı ?

Örnek:
X Kişisi
A1 hücresine veri girdiğinde
B1 hücresine veri giren kişinin adı veya google kullanıcı adı
 
Son düzenleme:

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,610
Excel Vers. ve Dili
Pro Plus 2021
JavaScript:
function onEdit(e) {
  var cell = e.range;
  var s = e.source.getActiveSheet();
  if (s.getName() == 'Sayfa1' && cell.getColumn() == 1 && cell.getRow() > 1) {
    //s.getRange(e.range.getRow(), 2).setValue(Session.getEffectiveUser().getUsername());
    //cell.offset(0,1).setValue(Session.getEffectiveUser().getUsername());
    //cell.offset(0,2).setValue( new Date() );
    s.getRange(e.range.getRow(), 2, 1, 2).setValues([[Session.getEffectiveUser().getUsername(), new Date()]]);
  }
}
 
Son düzenleme:
Katılım
19 Nisan 2016
Mesajlar
16
Excel Vers. ve Dili
Google E-Tablolar
JavaScript:
function onEdit(e) {
  var cell = e.range;
  var s = e.source.getActiveSheet();
  if (s.getName() == 'Sayfa1' && cell.getColumn() == 1 && cell.getRow() > 1) {
    //s.getRange(e.range.getRow(), 2).setValue(Session.getEffectiveUser().getUsername());
    //cell.offset(0,1).setValue(Session.getEffectiveUser().getUsername());
    //cell.offset(0,2).setValue( new Date() );
    s.getRange(e.range.getRow(), 2, 1, 2).setValues([[Session.getEffectiveUser().getUsername(), new Date()]]);
  }
}
Çok teşekkürler çalışıyor =)

-Ayrıca ben sadece 1 sayfa harici tüm sayfalarda otomatik olarak çalışmasını istiyorum bu mümkün mü ?

-Çalışmasını istediğim tüm sheetlerin isimleri sırasıyla 2 den başlayıp devam ediyor(2-3-4-5....), daha açılmamış sheet isimlerini bile kod içerisine önceden yazsak çalışır mı ?

-Buna hiç gerek olmayadabilir tabi, sadece 1 sheette çalışma diğerlerinde çalış diye bir komut var mıdır =) ?
-Ek olarak veriyi giren kişi eğer ki girdiği veriyi silerse, username de kendiliğinden silinebilir mi ?


Tarih gerek olmadığı için değişiklik yaptım ama doğru oldu mu bilmiyorum =)
JavaScript:
function onEdit(e) {
  var cell = e.range;
  var s = e.source.getActiveSheet();
  if (s.getName() == 'Sayfa1' && cell.getColumn() == 2 && cell.getRow() > 5) {
    //s.getRange(e.range.getRow(), 2).setValue(Session.getEffectiveUser().getUsername());
    //cell.offset(0,1).setValue(Session.getEffectiveUser().getUsername());
    //cell.offset(0,2).setValue( new Date() );
    s.getRange(e.range.getRow(), 11, 1).setValues([[Session.getEffectiveUser().getUsername()]]);
  }
}
 
Son düzenleme:
Katılım
19 Nisan 2016
Mesajlar
16
Excel Vers. ve Dili
Google E-Tablolar
Benzer bir konu aşağıdaki linkte;


.
Yukarıdaki kodları arkadaşımı davet edip denettim ve sadece ownerda çalışıyor gerçekten, o konuyu okudum ancak sheetlere erişemediğim için hiçbir şey anlamadım.

Ne yapınca zaman sorun düzeliyor ?

Ayrıca sizi sheete düzenleyen olarak davet ettim. Attığınız konudaki sheette bulunan mail adresiniz
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,316
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Dosyaya erişim için yetkilendirildiğinizde, çalışır..... Zaten aksi düşünülemez.

.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,610
Excel Vers. ve Dili
Pro Plus 2021
Sayfa3 harici sayfalarda çalışır.
Haluk beyin kodlarından faydalanılarak, ortaya karışık...
JavaScript:
function onEdit(e) {
  var cell = e.range;
  var s = e.source.getActiveSheet();
  if (s.getName() !== 'Sayfa3' && cell.getColumn() == 2 && cell.getRow() > 5) {
    if (cell.getValue()) cell.offset(0, 9).setValue(getCurrentUserName());
    else cell.offset(0, 9).clearContent();
  }
}
function getCurrentUserName() {
  if (Session.getActiveUser().getUsername()) return Session.getActiveUser().getUsername()
  var protection = SpreadsheetApp.getActive().getRange('Z1').protect();
  protection.removeEditors(protection.getEditors());
  editors = protection.getEditors();
  if (editors.length === 2) {
    var owner = SpreadsheetApp.getActive().getOwner();
    for (var i = 0; i <= editors.length; i++) {
      if (editors[i].toString() === owner.getEmail().toString()) {
        editors.splice(editors.indexOf(editors[i]), 1);
        break;
      }
    }
  }
  protection.remove();
  return editors[0].getUsername();
}
 
Katılım
19 Nisan 2016
Mesajlar
16
Excel Vers. ve Dili
Google E-Tablolar
Sayfa3 harici sayfalarda çalışır.
Haluk beyin kodlarından faydalanılarak, ortaya karışık...
JavaScript:
function onEdit(e) {
  var cell = e.range;
  var s = e.source.getActiveSheet();
  if (s.getName() !== 'Sayfa3' && cell.getColumn() == 2 && cell.getRow() > 5) {
    if (cell.getValue()) cell.offset(0, 9).setValue(getCurrentUserName());
    else cell.offset(0, 9).clearContent();
  }
}
function getCurrentUserName() {
  if (Session.getActiveUser().getUsername()) return Session.getActiveUser().getUsername()
  var protection = SpreadsheetApp.getActive().getRange('Z1').protect();
  protection.removeEditors(protection.getEditors());
  editors = protection.getEditors();
  if (editors.length === 2) {
    var owner = SpreadsheetApp.getActive().getOwner();
    for (var i = 0; i <= editors.length; i++) {
      if (editors[i].toString() === owner.getEmail().toString()) {
        editors.splice(editors.indexOf(editors[i]), 1);
        break;
      }
    }
  }
  protection.remove();
  return editors[0].getUsername();
}
Çok teşekkür ederim güzel çalışıyor, ancak sadece Google Sheet sahibinde çalışıyor- 2. gmail hesabıyla deniyorum olmuyor.

Bir kod var sanırım @Haluk hocanın kullandığı o kod sayesinde herkes de çalışıyor sanırım.
 
Katılım
19 Nisan 2016
Mesajlar
16
Excel Vers. ve Dili
Google E-Tablolar
Sorunlar çözüldü - getRange('Z1') kodda geçen bu bölümün sheette boş veya korumasız olması gerekiyormuş
Owner olmayanlarda da çalışıyor sorun yok

@Haluk ve @veyselemre ellerinize sağlık çok teşekkür ederim. 👏
 
Üst