Skrip aplikasi Google, onChange, tidak dapat meneruskan objek pemicu ke variabel [duplikat]

Dec 28 2020

Posting ini telah ditutup, tetapi saya belum dapat menemukan masalah yang sebanding di tempat lain.

Saya mencoba mengerjakan skrip yang akan menyembunyikan baris dari pemicu onChange (). Ketika sebuah sel menjadi "0", saya ingin baris di mana sel itu berada disembunyikan. Komentar dari posting pertama saya telah mengajari saya bahwa objek yang diteruskan dari onChange tidak mengandung rentang. Apakah ada solusi yang dapat mengatasi masalah ini?

Spreadsheet saya memiliki lembar masukan untuk backend dan lembar keluaran untuk frontend yang masuk ke klien. Saya memerlukan pemicu onChange, sehingga saat data masuk ke frontend, format itu bagus untuk dikirim melalui email ke klien. Yang terpenting, saya perlu baris kosong ('0) untuk disembunyikan.

Saya baru dan baru belajar, jadi apa yang saya tulis tidak berfungsi karena objek onChange tidak menyertakan rentang. Terima kasih.

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

Saya juga sudah mencoba:

function onChange(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Client");
  var cell = e.getValue(); 
  if(cell == 0){
        sheet.hideRow(cell);
  }
}

Jawaban

Cooper Dec 28 2020 at 03:57

Tidak ada nilai rentang yang dikembalikan oleh pemicu onChange. Berikut tampilan objek acara.

{"authMode":"FULL","changeType":"INSERT_ROW","source":{},"triggerUid":"","user": {"email":","nickname":""}}

Perlu diingat bahwa onChange memerlukan pemicu yang dapat diinstal.

Objek Acara onChange

joshmeranda Dec 28 2020 at 04:00

Sepertinya Anda memiliki pemicu yang bingung. The pemicu kebakaran ketika "lebih besar" atau perubahan struktural terjadi, bukan pada nilai-nilai berubah. Dari dokumen :onChange onEditonChange

Pemicu perubahan yang dapat diinstal berjalan saat pengguna mengubah struktur spreadsheet itu sendiri — misalnya, dengan menambahkan sheet baru atau menghapus kolom.

Anda dapat melihat dari spesifikasi objek acara bahwa tidak ada nilai yang diteruskan ke programmer dari onChangepemicu, dan oleh karena itu jenis fungsionalitas yang Anda cari tidak mudah dilakukan.

Anda ingin menggunakan onEditpemicu yang berfungsi mendekati apa yang Anda cari. Ini akan mengaktifkan perubahan nilai apa pun dan memberi Anda nilai baru dan lama. onEditjuga merupakan " pemicu sederhana " sehingga tidak perlu menginstal pemicu tambahan seperti yang Anda lakukan onChange.

Menggunakan onEditkode Anda akan terlihat seperti ini:

function onEdit(e) {
  val range = e.range;
  val sheet = SpreadsheetApp.getActiveSheet();

  if (e.value == 0) {
    var rowNum = e.range.getRow();
    sheet.hideRow(rowNum);
  }
}