PROCEDURA OBSOLETA!!
Avviso che la procedura descritta in questo post, e di conseguenza lo script soggiacente, non è più funzionante. Google ha definitivamente dismesso l’API Contacts su cui si basava parte di questa soluzione ibrida, vedi sotto per i dettagli. Nel contempo non è stata attivata sulla nuova API People che la sostituisce la funzionalità per gestire la sezione Altri contatti in modo da poter rimuovere dall’autocompletamento le versioni obsolete dei nomi dei gruppi. Al momento quindi non è presente nessuna API su cui basare un nuovo script che realizzi quanto era ottenuto dal precedente. Se e quando Google implementerà sulla nuova API (come già richiesto da molti sviluppatori) la funzionalità necessaria, aggiornerò di conseguenza lo script pubblicando una nuova soluzione.

Al cambio di anno scolastico può presentarsi, a certe condizioni, un problema fastidioso e difficile da rimuovere: i gruppi rinominati compaiono nell’autocompletamento (di Gmail, Drive e tutti i servizi) sia con il nome nuovo che con il precedente. Questo crea confusione, e potenziali errori, nell’utilizzo quotidiano di Workspace da parte dei nostri utenti.

Quando può succedere? Alcuni Istituti – come il mio – al cambio di anno rinominano i gruppi classe modificando il nome visualizzato, ma non l’indirizzo email. Ad esempio Classe 2B con mail rinoceronti@miodominio.it (o classe1B_2019-2020@miodominio.it o i formati in uso nelle vostre scuole) diventa Classe 3B con mail invariata (rinoceronti@miodominio.it o classe1B_2019-2020@miodominio.it o i formati in uso nelle vostre scuole). Questo permette di mantenere inalterato l’indirizzo email a cui scrivere (ed evitare quella produzione di alias da rimuovere in caso di modifica anche dell’indirizzo email), e di conservare invariate le condivisioni di Drive o altre app.

Al momento però questa pratica ha un problema quantomeno fastidioso, e non facilmente risolvibile. I vecchi nomi visualizzati continuano ad essere presentati nell’autocompletamento. Quando da qualunque app iniziamo a digitare Classe 2B… in autocompletamento ci viene presentato sia il risultato corrente (ad es. zebre@…) sia il risultato dello scorso anno (nel nostro esempio rinoceronti@…). Una volta selezionato l’indirizzo, gruppo e membri sono naturalmente corretti.

La procedura qui indicata è la versione definitiva dei test già pubblicati su questo blog qualche tempo fa. Se hai partecipato al test in precedenza, puoi eliminare il file utilizzato finora, e scaricare la versione definitiva da questa pagina. Sono stati eliminati alcuni errori, migliorati i log, pulito e semplificato il codice, riscritte le istruzioni di utilizzo in modo più chiaro. D’ora in avanti non considerare più le indicazioni precedenti, ma fai riferimento a quanto trovi in questo post.

Autocompletamento non aggiornato e alias

Non dobbiamo confondere il problema delineato sopra con quello degli alias, che possono rimanere come residui indesiderati quando rinominiamo un gruppo (regola che vale anche per i singoli utenti).

Avremo certamente notato che ogni volta che modifichiamo lo username (cioè l’indirizzo email identificativo) di un utente o gruppo, la console non si limita alla semplice operazione di sostituzione. Il vecchio indirizzo email viene automaticamente conservato come alias. Questo nasce come sistema agevolante da parte della console. Se qualcuno scrive all’indirizzo precedente, il messaggio non verrà perso, ma semplicemente inoltrato (questo fa l’alias) al nuovo indirizzo.

Mentre qualche volta questo comportamento può essere desiderato, e ci sarà di aiuto, altre volte invece non è auspicabile. Il caso dei gruppi rinominati è forse il più evidente: modificare il nome del gruppo 1A in 2A, ma conservare come alias la versione 1A porta inevitabilmente ad errori. In questi casi, dopo aver rinominato il gruppo procederemo sempre all’eliminazione dell’alias creato automaticamente.

Il problema che affrontiamo qui non coincide con la situazione degli alias residui. Anche dopo aver eliminato gli alias indesiderati, infatti, nell’autocompletamento continuerà a comparire la dicitura precedente, accanto a quella aggiornata.

Il motivo tecnico di tutto ciò ha origine negli automatismi dell’app Contatti. Ogni volta che un account ha una prima interazione con un altro account/gruppo – invia una mail, invita in Meet, condivide in Drive… – quell’account/gruppo viene memorizzato dall’app Contatti, nella sezione Altri contatti. Al cambio di anno, quando il gruppo viene rinominato, l’app riconosce l’interazione come nuova (infatti il contatto rinominato non è identico a quello già in rubrica) e anziché aggiornare il precedente, ne crea uno nuovo. Da qui la sovrapposizione negli autocompletamenti.

Soluzioni?

L’unica vera soluzione ad oggi è invitare tutti gli utenti ad aprire l’app Contatti, ed eliminare dalla sezione Altri contatti tutte le diciture obsolete dei gruppi. Evidentemente non è una soluzione praticabile, né pratica.

Da console non è possibile agire d’ufficio per sistemare la situazione per i nostri utenti. Non esistono controlli ad oggi per effettuare una sorta di pulizia, o per impedire questa memorizzazione automatica. Che resta d’altronde molto utile in tutti gli altri casi di interazione.

Anche da script la situazione non è semplice. C’è stato recentemente un aggiornamento delle API di Google, per migliorare la gestione automatizzata dei Contatti. Ma al momento l’aggiornamento non offre ancora tutti gli strumenti necessari per agire sulla fetta ‘incriminata’ dei contatti in Altri contatti.

Lo script presentato qui, allegato al consueto foglio di lavoro, permette di ottenere la rimozione dei vecchi nomi dei gruppi se rinominati. La soluzione è ibrida: utilizza una funzionalità di Workspace che verrà dismessa, ma in attesa che venga implementata la nuova questa funziona come deve, quindi al momento può essere usata. Fintanto che la procedura funziona, puoi utilizzarlo senza problemi. Nel momento in cui non dovesse più funzionare, significa che Google avrà completato la transizione alla nuova versione delle API. Contestualmente aggiornerò anche lo script: troverai la notizia e i nuovi file su questo blog. Se sei curioso di esplorare il codice dello script, noterai che alcune sezioni sono già pronte – ma non ancora attive – per quel momento di transizione.

Passaggi preliminari

La procedura in questione è più complicata di altre che ho presentato in passato. Richiede alcune fasi preparatorie sulla console non semplici, e abbastanza delicate. Seguendo le indicazioni qui sotto riuscirai senza troppe complicazioni.

Utilizza un account superadmin per tutte le operazioni qui descritte, pena il non funzionamento della procedura.

Per prima cosa, bisognerà creare un account particolare, diverso da quelli che siamo abituati ad utilizzare: si tratta di un account di servizio con delega di autorità a livello di dominio. La procedura richiede un po’ di tempo e attenzione, ma ne vale la pena anche in prospettiva futura. Una volta creato questo account di servizio, potrà essere utile anche per il funzionamento di altri script che lo richiedono. Se si tratta di script gestiti all’interno del dominio (quindi non estensioni di terze parti) non sarà necessario crearne uno diverso ogni volta. Puoi utilizzare lo stesso account di servizio, con lievi modifiche se richieste dagli altri script.

Se non l’hai già creato in precedenza, segui le indicazioni nel paragrafo successivo. Se invece hai già creato un account di servizio, salta le indicazioni della guida per la creazione, e fai solo le eventuali modifiche o aggiunte specifiche per questo script.

Alcune di queste operazioni potrebbero essere impedite, o restituire errori, a causa di varie impostazioni e limitazioni settate per il tuo dominio. Non è possibile coprire tutte le casistiche di blocco o errore in questo spazio. Se dovessi incontrarne, puoi fare una ricerca sul web, o postare nei commenti errori e difficoltà. Vedremo di indicare la soluzione per le difficoltà più frequenti.

Creazione dell’account di servizio

Questo è il passaggio più delicato, e un po’ più tecnico. Se sei sufficientemente autonomo, puoi utilizzare questa guida di Google: Perform Google Workspace Domain-Wide Delegation of Authority. Altrimenti puoi seguire le indicazioni più dettagliate nel post che ho scritto in precedenza su questo blog Domain-wide authority delegation: impersonare utenti in Apps Script.

Dopo aver seguito le istruzioni della guida ufficiale o del post:

  • conserva il file JSON che verrà scaricato, ti servirà poco più avanti (assicurati di conservare il file in modo sicuro, sono credenziali particolarmente delicate, vedi il post indicato sopra per i dettagli)
  • segna il nome del progetto appena creato

Se invece avevi già creato in precedenza un account di servizio:

  • recupera il file JSON con le credenziali (conservalo sempre, le credenziali ti vengono mostrate solo quando generi l’account di servizio, non è possibile recuperarle in un secondo momento dalla console)
  • recupera il nome del progetto; trovi un elenco dei progetti che hai creato in questa pagina: https://console.cloud.google.com/projectselector2/iam-admin/serviceaccounts?supportedpurview=project – devi accedere con l’account admin che avevi usato per la creazione dell’account di servizio la prima volta

Impostazioni per API e console

Dopo aver creato l’account di servizio, o recuperato i dati da una creazione precedente, devi apportare alcune modifiche specifiche perché funzioni lo script qui proposto. Se trovi alcune di queste modifiche già impostate e attive nell’account di servizio (magari perché le hai introdotte per altri progetti o script), puoi semplicemente saltare i passaggi già eseguiti e proseguire con gli altri.

Nell’ordine:

  • aggiungi all’account questi ambiti OAuth:
    https://www.googleapis.com/auth/contacts, https://www.googleapis.com/auth/contacts.other.readonly, https://www.google.com/m8/feeds/
    le indicazioni per aggiungere gli ambiti si trovano nella guida linkata sopra, in fondo nella sezione Utilizzare l’account di servizio
  • apri la sezione API di Google Cloud Platform: verifica che in alto a sinistra, nella barra azzurra dopo il logo Google Cloud Platform, sia selezionato il progetto con il nome appuntato nella sezione precedente; se non vedi quello, apri il menu a discesa e selezionalo
  • clicca ora in alto su + Abilita API e servizi:
    • digita nella barra di ricerca Contacts
    • scegli tra i risultati Contacts API
    • clicca quindi su Abilita (se non trovi Abilita ma solo Gestisci, significa che l’API è già abilitata, non devi fare altro)
    • chiudi la scheda
  • vai in console di amministrazione > Directory > Impostazioni directory > Impostazioni di condivisione > Condivisione dei contatti; verifica che la condivisione sia attivata (consiglio di selezionare Mostra solo indirizzo email principale); questo permetterà a tutti gli utenti di visualizzare i gruppi con il nome corrente, dopo aver eliminato quelli con il nome obsoleto

Copiare ed impostare il file

I passaggi preliminari sono conclusi: ora la procedura diventa molto più semplice. Come molte altre che ho proposto, si basa su un foglio di lavoro con script annesso. Il foglio di lavoro servirà anche come log delle operazioni principali. Puoi consultare un log più dettagliato aprendo l’editor di Apps Script.

Per iniziare, copia il file nel tuo Drive da questo link: https://docs.google.com/spreadsheets/d/1R_nlqcGZvQ_EEbd9DjddWkEHtZj71zJZJYOEUjKrRr8/copy

Passiamo ora ad alcune impostazioni preliminari:

  • apri il file, clicca su Strumenti > Editori di script per aprire l’editor di Apps Script – fai attenzione, questa volta lo script è molto complesso, e distribuito su diversi file: sono elencati nella colonna a sinistra
  • clicca sul file funzioni_OAuth2.gs, e copia nello script i valori di private_key e client_email ricavati dal file JSON (è il file delle credenziali ottenute o recuperate con le indicazioni più sopra); nello script trovi valori segnaposto, sostituiscili con i tuoi
  • salva le modifiche con l’icona apposita in alto
  • chiudi la scheda dell’editor di Apps Script
  • torna nella scheda del foglio di lavoro, clicca sul menu Pulizia contatti > Impostazioni iniziali e concedi le autorizzazioni richieste

Se tutti i passaggi precedenti sono andati a buon fine, il foglio di lavoro è pronto per essere utilizzato.

Utilizzare il file

L’utilizzo del file è molto semplice, tutto avviene tramite il menu Pulizia contatti.

Puoi effettuare una prova veloce con la funzione Recupera utenti e gruppi: nei fogli verranno semplicemente elencati tutti gli utenti e tutti i gruppi del tuo dominio. Lo script non effettua nessuna modifica in questo caso. Serve solo come primo riscontro per verificare che la procedura individui correttamente tutti gli utenti e tutti i gruppi senza errori.

Per avviare la pulizia dei contatti, usa la voce Rimuovi gruppi obsoleti dai contatti degli utenti. Partirà la funzione di pulizia vera e propria. Lo script scorre ogni utente del dominio, verifica se nei suoi contatti sono presenti gruppi appartenenti al dominio, e se ne trova li elimina.

Tutti i gruppi del dominio verranno eliminati, ma questo non comporta perdite vere e proprie. È vero infatti che lo script eliminerà anche i gruppi ‘giusti’, o con il nome già aggiornato – questo per semplificare l’esecuzione e velocizzarne i tempi. Ma se hai seguito le indicazioni di questa pagina, quei gruppi saranno comunque visibili nell’autocompletamento. A questo serve l’impostazione della Condivisione dei contatti indicata più sopra, nella sezione Impostazioni per API e console. Attivandola, tutti i contatti (utenti e gruppi) del dominio sono sempre visibili negli autocompletamenti, anche se l’utente non ha mai avuto interazioni precedenti con essi. Ed anche se sono stati eliminati dall’app Contatti, come nel nostro caso.

Tempi di esecuzione

Il processo potrebbe richiedere da pochi minuti a molte ore. Dipende dal numero degli utenti, dalla dimensioni delle rispettive rubriche, soprattutto dal numero di gruppi che dovranno essere eliminati. A causa di una limitazione importante di Apps Script, l’esecuzione non può però superare i 30 minuti; e se ripresa, non può superare le 6 ore giornaliere.

Questo foglio di lavoro gestisce automaticamente tali limiti. Quando avvii la funzione di pulizia per la prima volta, verrà lanciata un’esecuzione della durata massima di 30 minuti. Se al termine il lavoro non è finito, lo script programma nuove esecuzioni automatiche (senza il tuo intervento) all’incirca ogni ora. Se dopo aver raggiunto le 6 ore giornaliere ancora il lavoro non dovesse essere terminato, lo script riprenderà automaticamente dopo la mezzanotte, e così via.

Computer sempre acceso?

Uno dei grandissimi vantaggi di Apps Script è che l’esecuzione avviene sul cloud, non sul nostro computer. Non è quindi necessario tenere acceso il nostro computer, tranne che per la prima esecuzione. Solo alla prima esecuzione, infatti, che viene lanciata in modo manuale dal foglio di lavoro, se chiudiamo la scheda del foglio verrà interrotta anche l’esecuzione dello script. E non essendo arrivato alla fine del primo ciclo, non potrà nemmeno programmare le successive esecuzioni automatizzate.

Seguiamo una regola molto semplice, quindi. Lanciamo la prima esecuzione della funzione solo quando possiamo lasciare acceso il computer per mezz’ora, ricordando di non chiudere la scheda del foglio di lavoro. Per sicurezza, l’esecuzione dura in realtà meno di 30 minuti (poco più di 25, leggermente variabili). Mentre l’esecuzione è ancora in corso, noterai nel foglio di lavoro una notifica in alto su sfondo verde con dicitura Script in esecuzione. Non clicchiamo né Annulla Ignora. Quando lo script finisce, compare una notifica simile: Script terminato. Se ci siamo allontanati dal computer, possiamo verificare che lo script sia finito se semplicemente non ci sono più notifiche. Se non siamo stati noi a chiuderle con Annulla o Ignora, nessuna notifica equivale a script finito.

Controllare le esecuzioni e i log dettagliati

Tutte le esecuzioni successive partiranno e si concluderanno sul cloud, senza bisogno del nostro computer acceso. Puoi controllare lo stato delle esecuzioni aprendo l’editor di Apps Script: clicca a sinistra l’icona Esecuzioni e verifica che l’ultima esecuzione sia indicata come Completata.

Se clicchi sulla riga di un’esecuzione, dopo alcuni secondi verrà visualizzato il log completo delle operazioni. Utile sia per monitorare lo stato complessivo di avanzamento, sia per verificare eventuali errori, che saranno segnalati qui. Nel caso tu abbia bisogno di indicazioni, posta nei commenti l’errore preciso che trovi in quella sezione.

Se dopo un’esecuzione il lavoro non è terminato, vedrai che nel log è indicata una dicitura del tipo L’esecuzione viene sospesa. Verrà ripresa automaticamente da trigger. Diversamente, la conclusione definitiva del lavoro sarà parimenti indicata da una dicitura del tipo Esecuzione della funzione rimuoviGruppi completata!, seguita dai log di rimozione di proprietà e trigger.

Un modo più semplice, ma anche più facile da utilizzare, per avere il polso dell’avanzamento dello script, è controllare il foglio di lavoro utenti. Al termine di ogni esecuzione lo script aggiorna il foglio con i log degli utenti processati; quelli con riga non compilata restano ancora da lavorare.

Questo errore è visibile solamente agli amministratori WordPress

Errore: Nessun feed trovato.

Vai alla pagina delle impostazioni del feed di Instagram per creare un feed.