Lo script delle app di Google, onChange, non può trasferire un oggetto trigger a una variabile [duplicato]

Dec 28 2020

Questo post è stato chiuso, ma non sono stato in grado di trovare un problema analogo altrove.

Sto cercando di elaborare uno script che nasconda le righe da un trigger onChange (). Quando una cella diventa "0", desidero che la riga in cui si trova la cella venga nascosta. I commenti del mio primo post mi hanno insegnato che l'oggetto passato da onChange non contiene un intervallo. Esiste una soluzione alternativa che risolva questo problema?

Il mio foglio di calcolo ha un foglio di input per il backend e un foglio di output per il frontend che va al client. Ho bisogno di un trigger onChange, in modo che quando i dati vanno al frontend, si formino bene per l'invio di e-mail al client. Soprattutto, ho bisogno di nascondere le righe vuote ('0).

Sono nuovo e sto solo imparando, quindi quello che ho scritto non funziona perché gli oggetti onChange non includono un intervallo. Grazie.

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

Ho anche provato:

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

Risposte

Cooper Dec 28 2020 at 03:57

Non è presente alcun valore di intervallo restituito da un trigger onChange. Ecco come appare l'oggetto evento.

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

Inoltre, tieni presente che onChange richiede un trigger installabile.

Oggetto evento onChange

joshmeranda Dec 28 2020 at 04:00

Sembra che tu abbia i trigger confusi. Il trigger si attiva quando si verifica un cambiamento "più grande" o strutturale, anziché i valori modificati. Dai documenti :onChange onEditonChange

Un trigger di modifica installabile viene eseguito quando un utente modifica la struttura di un foglio di calcolo stesso, ad esempio aggiungendo un nuovo foglio o rimuovendo una colonna.

Puoi vedere dalle specifiche dell'oggetto evento che non c'è alcun valore passato al programmatore dal onChangetrigger, e quindi il tipo di funzionalità che stai cercando non è facilmente realizzabile.

Vuoi usare il onEdittrigger che funzionerà più vicino a quello che stai cercando. Si attiverà su qualsiasi modifica di valore e ti fornirà i valori vecchi e nuovi. onEditè anche un " trigger semplice ", quindi non è necessario installare trigger aggiuntivi come fai per onChange.

L'utilizzo onEditdel codice sarà simile a questo:

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

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