Google apps komut dosyası, onChange, tetikleyici nesneyi bir değişkene [kopya] geçiremez
Bu gönderi kapatıldı, ancak başka bir yerde karşılaştırılabilir bir sorun bulamadım.
Bir onChange () tetikleyicisinden satırları gizleyecek bir komut dosyası oluşturmaya çalışıyorum. Bir hücre "0" olduğunda, hücrenin içinde bulunduğu satırın gizlenmesini istiyorum. İlk gönderimdeki yorumlar bana onChange'den geçen nesnenin bir aralık içermediğini öğretti. Bu sorunu çözecek bir çözüm var mı?
Elektronik tablomun arka uç için bir giriş sayfası ve istemciye giden ön uç için bir çıktı sayfası var. Bir onChange tetikleyicisine ihtiyacım var, böylece veriler ön uca giderken istemciye e-posta göndermek için güzel bir formatta. En önemlisi, gizlenmek için boş ('0) satırlara ihtiyacım var.
Ben yeniyim ve yeni öğreniyorum, bu yüzden yazdıklarım çalışmıyor çünkü onChange nesneleri bir aralık içermiyor. Teşekkür ederim.
function onChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Client");
var cell = e.range;
var VALUE = cell.getValue();
if(VALUE == 0){
sheet.hideRow(cell);
}
}
Ben de denedim:
function onChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Client");
var cell = e.getValue();
if(cell == 0){
sheet.hideRow(cell);
}
}
Yanıtlar
OnChange tetikleyicisi tarafından döndürülen aralık değeri yoktur. İşte olay nesnesi nasıl görünür.
{"authMode":"FULL","changeType":"INSERT_ROW","source":{},"triggerUid":"","user": {"email":","nickname":""}}
Ek olarak, onChange'in yüklenebilir bir tetikleyici gerektirdiğini unutmayın.
onChange Etkinlik Nesnesi
Tetikleyicilerin kafası karışmış gibi görünüyor . "Büyük" bir ya da yapısal değişiklik biraz değişmiş değerlerine göre, meydana gelir tetikleme ateşler. Gönderen docs :onChange onEditonChange
Yüklenebilir bir değişiklik tetikleyicisi, bir kullanıcı bir elektronik tablonun kendi yapısını değiştirdiğinde (örneğin, yeni bir sayfa ekleyerek veya bir sütun kaldırarak) çalışır.
Olay nesnesi spesifikasyonlarından, programlayıcıya onChange
tetikleyiciden hiçbir değer aktarılmadığını ve bu nedenle aradığınız işlevsellik türünün kolayca yapılmadığını görebilirsiniz.
onEdit
Aradığınız şeye daha yakın çalışacak tetiği kullanmak istiyorsunuz . Herhangi bir değer değişikliğinde ateşlenecek ve size yeni ve eski değerleri verecektir. onEdit
aynı zamanda " basit bir tetikleyicidir ", bu nedenle sizin yaptığınız gibi ek tetikleyiciler kurmanıza gerek yoktur onChange
.
onEdit
Kodunuzu kullanmak şuna benzer:
function onEdit(e) {
val range = e.range;
val sheet = SpreadsheetApp.getActiveSheet();
if (e.value == 0) {
var rowNum = e.range.getRow();
sheet.hideRow(rowNum);
}
}