[google-apps-script] Script per riepilogare i dati non aggiornati


Answers

un'altra soluzione al problema del caching.

avere una variabile fittizia nel tuo metodo. passaggio

Filter(<the cell or cell range>,1=1)

come valore di quel parametro.

per esempio

=getValueScript("B1","B4:Z10", filter(B4:Z10,1=1))

l'uscita del filtro non viene utilizzata. tuttavia indica al foglio di calcolo che questa formula è sensibile all'intervallo B4: Z10.

Question

Ho un foglio di calcolo Google dei dati della scheda attività; ha un foglio per ogni mese, ogni foglio è composto da sei blocchi di colonne, un blocco per cliente.

Ho creato un foglio di riepilogo che va e ottiene il totale per ogni cliente e lo visualizza in una lista:

function getClientTotals(sheetname, colcount)
{  
  colcount = colcount ? colcount : 6;
  var res;      
  var ss = SpreadsheetApp.openById('myid_goes_here');
  if(ss)
  {
    res = [];
    var totrow = ss.getRange(sheetname + '!A1:ZZ1').getValues()[0];
    for(var i = 0; i < totrow.length; i += colcount)
    {
      res.push([totrow[i], totrow[i + colcount - 1]]);
    }
  }   
  return res;
}

Ho quindi appena aggiunto una cella al mio foglio di riepilogo contenente =getClientTotals($C$7,$C$8) che passa nel nome del foglio per il mese e il numero di colonne per ogni client (nel caso di modifiche allo "schema".

Funziona tutto bene, tuttavia, non si aggiorna quando i dati di origine vengono modificati. Ho aggiunto un trigger onEdit ; nessuna gioia. Si aggiorna se vai all'editor degli script e premi Salva, ma non è utile. Mi sto perdendo qualcosa?




Come ha detto @ Brionius, ho messo un argomento dinamico extra sulla funzione. se usi ora () potresti avere problemi di timeout rendere l'aggiornamento un po 'più lento ...

cell A1 = int(now()*1000)
cell A2 = function(args..., A1)



Quello che potresti fare è impostare un'altra cella da qualche parte nel foglio di calcolo che verrà aggiornata ogni volta che viene aggiunto un nuovo foglio. Assicurati che non venga aggiornato per ogni modifica ma solo quando vuoi eseguire il calcolo (nel tuo caso quando aggiungi un foglio). Quindi passa il riferimento a questa cella alla tua funzione personalizzata. Come accennato, la funzione personalizzata può ignorare questo parametro.




Related