Può essere utile agli admin, per controllo, avere una lista degli utenti di Workspace che non hanno ancora eseguito l’accesso. Magari per verificare la situazione di qualche alunno, o per inviare un promemoria agli interessati. Un elenco del genere non è immediatamente consultabile da console di amministrazione. Si può ottenere scaricando tutti gli utenti, e filtrando poi i dati in base al valore della colonna che indica la data dell’ultimo accesso.

Il foglio di lavoro proposto qui crea un elenco veloce di tutti gli utenti del dominio che ancora non hanno eseguito l’accesso. Utilizzo facile e immediato.

Copiare e impostare il foglio

Crea una copia del file nel tuo Drive cliccando su questo link: https://docs.google.com/spreadsheets/d/19dvrsT7XMCEpdc5QLAd9gDAB4LQMgXbGfk4-ulOCViY/copy

A questo punto è sufficiente:

  • attendere qualche istante e cliccare sul menu Funzioni utente
  • [solo alla prima esecuzione] cliccare su Impostazioni iniziali, e acconsentire alla richiesta delle autorizzazioni
  • cliccare su Recupera utenti per generare la lista nel foglio dedicato

Caratteristiche del foglio

  • Il foglio si ripulisce automaticamente ad ogni esecuzione
  • Nell’elenco vengono riportati nome, cognome, email e unità organizzativa degli utenti

Il codice

function onOpen() {
  SpreadsheetApp.getUi()
  .createMenu('Funzioni utente')
  .addItem('Impostazioni iniziali', 'impostazioniIniziali')
  .addItem('Recupera utenti', 'utentiNoAccesso')
  .addToUi();
}


function utentiNoAccesso() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('elenco utenti');
  
  let utenti = recuperaUtentiDominio();
  sheet.clear();
  if (utenti.length > 0) {
    sheet.getRange(1, 1, utenti.length, utenti[0].length).setValues(utenti);
  }
  SpreadsheetApp.setActiveSheet(sheet);

}

function recuperaUtentiDominio() {
  let pageToken;
  let page;
  let utenti = [];
  do {
    page = AdminDirectory.Users.list({
      customer: 'my_customer',
      orderBy: 'givenName',
      maxResults: 500,
      pageToken: pageToken
    });
    let users = page.users;
    if (users) {
      let utentiPagina = users.filter(x => x.agreedToTerms == false)
      .map(el => [el.name.givenName, el.name.familyName, el.primaryEmail, el.orgUnitPath]);
      utenti = [...utenti, ...utentiPagina];
    } else {
      Logger.log('No users found.');
    }
    pageToken = page.nextPageToken;
  } while (pageToken);
  Logger.log(utenti)
  return utenti;
}


function impostazioniIniziali() {
  
}

Utilizzo avanzato

Volendo restringere il campo di ricerca, si può impostare nel codice l’unità organizzativa in cui eseguire la ricerca. Sarà sufficiente aggiungere nel codice, dopo la riga 28, questa riga ulteriore:

query: 'orgUnitPath:/Studenti',

facendo attenzione a non tralasciare la virgola finale.

Usato in combinazione con il foglio di lavoro usato per la generazione degli utenti, si potrebbe aggiungere una parte di codice per automatizzare l’invio di un’email di promemoria agli utenti in questione. Naturalmente il promemoria va inviato all’indirizzo email personale, che potrebbe essere recuperato dal foglio iniziale.