Google apps komut dosyası, onChange, tetikleyici nesneyi bir değişkene [kopya] geçiremez

Dec 28 2020

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

Cooper Dec 28 2020 at 03:57

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

joshmeranda Dec 28 2020 at 04:00

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 onChangetetikleyiciden 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.

onEditAradığı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. onEditaynı zamanda " basit bir tetikleyicidir ", bu nedenle sizin yaptığınız gibi ek tetikleyiciler kurmanıza gerek yoktur onChange.

onEditKodunuzu 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);
  }
}