Inserimento automatico dati ed ordinamento a/z

Rispondi
Avatar utente
Utente0 Verified
Site Admin
Messaggi: 54
Iscritto il: sabato 23 novembre 2024, 22:07

Inserimento automatico dati ed ordinamento a/z

Messaggio da Utente0 Verified »

Salve a tutti , ho creato in google sheets un "sistema" di inserimento automatico dei dati da una pagina all' altra il quale, automaticamente sistema anche il tutto in ordine alfabetico.
COME FARE:
-Apri google sheets e crea due pagine. la Prima chiamata Sheet1 e la seconda chiamata Sheet2 ( si possono rinominare a piacimento).

Struttura del foglio

Sheet1 (Tabella principale): Mostrerà i dati ordinati.
Colonna A: Nome Azienda
Colonna B: Città
Colonna C: Provincia
Colonna D: Mail
Colonna E: Referente

Sheet2 (Modulo di inserimento dati): Consisterà nei campi dove puoi inserire i dati.
B2: Nome Azienda
B3: Città
B4: Provincia
B5: Mail
B6: Referente
B7: Pulsante per l'inserimento dei dati
Qui crea ilo pulsante in questo modo:
Torna nel foglio.
Vai su Inserisci > Disegno e crea un pulsante (puoi disegnare un rettangolo o un'icona).
Fai clic con il pulsante destro del mouse sul disegno e seleziona Assegna script.
Scrivi inserisciDati e conferma.
inserisciDati è il nome del script che andreamo a creare cliccando su extension/AppScript e dev'èssere cosi :

Codice: Seleziona tutto

function inserisciDati() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName("Sheet1");
  var sheet2 = ss.getSheetByName("Sheet2");

  // Ottieni i dati da Sheet2
  var nomeAzienda = sheet2.getRange("B2").getValue().trim();
  var citta = sheet2.getRange("B3").getValue().trim();
  var provincia = sheet2.getRange("B4").getValue().trim();
  var mail = sheet2.getRange("B5").getValue().trim();
  var referente = sheet2.getRange("B6").getValue().trim();

  // Aggiungi log per vedere se i dati sono corretti
  Logger.log("Nome Azienda: " + nomeAzienda);
  Logger.log("Città: " + citta);
  Logger.log("Provincia: " + provincia);
  Logger.log("Mail: " + mail);
  Logger.log("Referente: " + referente);

  // Verifica che il campo Nome Azienda non sia vuoto
  if (nomeAzienda === "") {
    SpreadsheetApp.getUi().alert("Il campo 'Nome Azienda' è obbligatorio!");
    return;
  }

  // Trova l'ultima riga disponibile in Sheet1
  var ultimaRiga = sheet1.getLastRow() + 1;

  // Inserisci i dati in Sheet1 (compreso il referente)
  sheet1.getRange(ultimaRiga, 1).setValue(nomeAzienda);    // Nome Azienda
  sheet1.getRange(ultimaRiga, 2).setValue(citta);           // Città
  sheet1.getRange(ultimaRiga, 3).setValue(provincia);      // Provincia
  sheet1.getRange(ultimaRiga, 4).setValue(mail);           // Mail
  sheet1.getRange(ultimaRiga, 5).setValue(referente);      // Referente

  // Pulisci i campi di input in Sheet2
  sheet2.getRange("B2:B6").clearContent();

  // Ordina i dati in Sheet1 in ordine alfabetico per Nome Azienda (colonna A)
  var numeroRighe = sheet1.getLastRow();  // Include anche l'ultima riga appena aggiunta
  sheet1.getRange(2, 1, numeroRighe - 1, 5).sort({column: 1, ascending: true});

  // Aggiorna immediatamente il foglio per applicare tutte le modifiche
  SpreadsheetApp.flush();

  // Aggiungi un messaggio di log per confermare che i dati sono stati inseriti correttamente
  Logger.log("Dati inseriti correttamente!");
}
Ora, inserendo i dati in ogni apposita cella e cliccando sulla forma precedentemente creata e settata con lo script, dovrebbe popolarsi automaticamente lo sheet1 ed aver ordinato il tutto in ordine alfabetico partendo dalla colonna "Nome Azienda". Il tutto è ovviamente anche personalizzabile, a partire dai colori, fino all'aggiunta degli script, ad esempio, se vuoi evidenziare una riga che hai selezionato, senza usare il riempimento, puoi creare un'altra forma ed aggiungere un altro script ad essa. che è questo:

Codice: Seleziona tutto

function evidenziaRiga() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  
  // Ottieni la selezione attuale
  var range = sheet.getActiveRange();
  
  // Ottieni il numero della riga della selezione
  var row = range.getRow();
  
  // Evidenzia l'intera riga cambiando lo sfondo
  var totalColumns = sheet.getLastColumn(); // Numero totale delle colonne nel foglio
  var rowRange = sheet.getRange(row, 1, 1, totalColumns); // Intervallo dell'intera riga
  
  // Cambia lo sfondo della riga selezionata (colore giallo, puoi cambiare il colore)
  rowRange.setBackground("#FFFF00");
  
  // Rimuovi evidenziazione dalle altre righe, se ci sono
  var allRows = sheet.getDataRange();
  allRows.setBackground(null);  // Ripristina lo sfondo di tutte le righe
  
  // Evidenzia solo la riga selezionata
  rowRange.setBackground("#FFFF00");  // Colore giallo per evidenziare la riga
}
Il nome da inserire nell'icone è: evidenziaRiga.
Si può poi implementare tramite sheets una tabella automatica che ad ogni colonna ti permetta di avere altre funzioni o ordinamenti. Tutto sta nella vostra fantasia ed utilizzo, questo è l'utilizzo base.
Lorenzo|Utente0
Rispondi