Gli sviluppatori che utilizzano Google Apps Script da ora possono accedere al gruppo di funzionalità più estese dell'API Fogli Google grazie all'ultimo lancio di Advanced Sheets Service. Un vantaggio fondamentale nell'utilizzo di un servizio avanzato rispetto agli oggetti Apps Script nativi è che gli sviluppatori possono accedere alle funzioni API correnti (senza dover attendere il supporto nativo). Il servizio avanzato, ad esempio, consente loro di accedere ai filtri Fogli che rendono i componenti aggiuntivi più coinvolgenti.

Funzionalità dei filtri 

Con l'API Fogli, gli sviluppatori possono già ottenere righe filtrate o impostare nuovi filtri per i dati di Fogli. Grazie ad Advanced Sheet Service, ora possono far sì che i componenti aggiuntivi rispettino questi filtri e applicarne di nuovi per stabilire quali dati rendere visibili nella UI Fogli. Inoltre, con qualsiasi servizio avanzato di Apps Script, puoi facilmente accedere a Fogli e alle altre API di Google senza usare il servizio UrlFetch né gestire il flusso di autorizzazione che dovresti altrimenti eseguire utilizzando direttamente l'API REST. Lo snippet riportato di seguito restituisce gli indici delle righe filtrate in un determinato foglio. Da notare è che puoi anche recuperare l'elenco delle righe nascoste manualmente, usando la voce di menu "Nascondi riga" in Fogli Google, come indicato nella Documentazione API. In questo esempio di codice vengono mostrate le righe nascoste dal filtro.

 function getIndexesOfFilteredRows(ssId, sheetId) {
  var hiddenRows = [];
  
  // limit what's returned from the API
  var fields = "sheets(data(rowMetadata(hiddenByFilter)),properties/sheetId)";
  var sheets = Sheets.Spreadsheets.get(ssId, {fields: fields}).sheets;  
  
  for (var i = 0; i < sheets.length; i++) {
    if (sheets[i].properties.sheetId == sheetId) {
      var data = sheets[i].data;
      var rows = data[0].rowMetadata;
      for (var j = 0; j < rows.length; j++) {
        if (rows[j].hiddenByFilter) hiddenRows.push(j);
      }
    }
  }
  return hiddenRows;
} 
Il parametro dei campi dello snippet di codice limita ciò che è restituito nella risposta dell'API Fogli, richiedendo solo i valori importanti per la tua applicazione. Per ulteriori informazioni, vieni a vedere questa pagina nel documento dell'API Fogli o questo video recente sulle maschere del campo.

Come i componenti aggiuntivi utilizzano i filtri 

Ci sono parecchi componenti aggiuntivi che utilizzano i filtri avanzati in Fogli. Ecco alcuni esempi:
  • Yet Another Mail Merge: questo componente aggiuntivo consente agli utenti di inviare campagne email da un foglio di calcolo ed è ideato per elaborare solo le righe filtrate di un foglio. Supponiamo che tu abbia un elenco di persone registrate per un evento, ma ne hai approvate solo alcune e devi inviare loro una conferma tramite email. Grazie a Yet Another Mail Merge e all'API aggiornata, puoi filtrare le persone indesiderate e il componente aggiuntivo le salterà senza inviare loro alcuna conferma.
  • Sankey Snip e Chord Snip: questi componenti aggiuntivi consentono agli utenti di creare tipi di grafici particolari non disponibili nell'UI di Fogli Google. Quando è abilitato il rispetto dei filtri di questi componenti aggiuntivi, i grafici visualizzeranno dinamicamente i dati filtrati. Segue un esempio preso da Chord Snip Add-on.
Naturalmente l'API fornisce anche la possibilità di aggiungere, aggiornare o eliminare i filtri in un foglio, molto utile per rendere velocemente visibili le righe con uno stato particolare ai tuoi utenti. Un esempio potrebbe essere se hai creato un componente aggiuntivo per l'approvazione del flusso di lavoro, perché puoi visualizzare le righe degli utenti in attesa di approvazione. Lo snippet di seguito applica il filtro richiesto in un determinato foglio. La documentazione API descrive un oggetto filtro di base standard:

function setSheetBasicFilter(ssId, BasicFilterSettings) {
  //requests is an array of batchrequests, here we only use setBasicFilter
  var requests = [
    {
      "setBasicFilter": {
        "filter": BasicFilterSettings
      }
    }
  ];
  Sheets.Spreadsheets.batchUpdate({'requests': requests}, ssId);
}

Yet Another Mail Merge, come molti altri strumenti di mailing di massa, tiene traccia di tutte le email inviate, aperte e cliccate. Un report di tracciamento è disponibile nella barra laterale del foglio di calcolo e, facendo clic sul numero di email aperte, verrà automaticamente applicato un filtro per visualizzare solo le righe corrispondenti, ossia le righe con lo stato "aperto".

Da ora puoi determinare i filtri applicati in un foglio direttamente tramite l'API Fogli o attraverso le app Apps Script e Add-ons usando l'Advanced Sheets Service e continuare a proporre la migliore esperienza possibile ai tuoi utenti.

Informazioni sugli autori 

Romain Vialard è un Google Developer Expert. Dopo aver lavorato per alcuni anni come consulente per G Suite, ora si concentra sui prodotti per gli utenti di G Suite e Google Apps, compresi i componenti aggiuntivi Yet Another Mail Merge e Form Publisher.

Bruce Mcpherson è un Google Developer Expert, consulente indipendente, blogger e l'autore di Going GAS, Google Apps Script for Beginners e Google Apps Script for Developers.