Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    cancellare riga fogli di google (excel) automaticamente ogni giorno

    salve a tutti
    sto usando i fogli di google per poter creare una sorta di calendario con tutti i giorni uno sotto l'altro nelle celle numerate, esempio:

    30/10/2019
    31/10/2019
    01/11/2019
    ecc

    Adesso vorrei capire se ogni giorno è possibile cancellare in automatico la prima riga
    quindi stanotte a mezzanotte devo cancellare il 30/10, domani notte a mezzanotte devo cancellare il 31/10 ecc

    Esiste qualche funzione che possa fare cio'?
    In pratica, ogni mattina che apro il file vorrei non vedere il giorno trascorso...

    Spero sappiate aiutarmi
    Grazie

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Ciao, premetto che non ho mai usato GoogleSheet ma ho fatto qualche prova.
    Penso non sia possibile (ma potrei sbagliarmi) far eseguire una qualche funzione ad un'ora prestabilita (in tal caso alla mezzanotte) ma è possibile eseguire una macro impostando un trigger, cioè agganciandola ad un evento del foglio, ad esempio all'apertura, in modo che sia eseguita ogni volta che si apre il foglio.

    Puoi quindi preparare la macro in modo che esegua un controllo del valore della cella; se la data riportata nella cella è inferiore alla data odierna allora elimina la relativa riga.

    Ora, in linea di massima i passi da fare sono questi:
    - preparare una macro
    - impostare lo script che faccia il controllo ed elimini la riga
    - impostare un trigger a cui agganciare la macro sull'evento di apertura del foglio

    Se una soluzione del genere può fare al caso tuo, fai eventualmente qualche prova e fai sapere a che punto riesci ad arrivare.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ciao
    grazie per l'interessamento

    si, anche la soluzione che all'apertura del foglio faccia una determinata azione mi va bene, l'importante è che non cancelli ad ogni apertura ma solo se la data odierna è superiore a quella della prima riga sul foglio

    Il problema è che non ho mai impostato una macro su excel, c'e' per caso una guida che potrebbe servire nel mio caso da cui prendere spunto?

    Grazie ancora

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    l'importante è che non cancelli ad ogni apertura ma solo se la data odierna è superiore a quella della prima riga sul foglio
    Sì, chiaramente.

    Il problema è che non ho mai impostato una macro su excel,
    Aspetta, giusto per chiarire, ma tu stai lavorando in Excel o in Google Sheets?

    Il problema è che non ho mai impostato una macro su excel, c'e' per caso una guida che potrebbe servire nel mio caso da cui prendere spunto?
    Immagino proprio di sì, potrebbe anche bastare una semplice ricerca sul web; la cosa è comunque relativamente semplice, ma prima fammi capire su che software/applicazione stai lavorando
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Eccomi
    sto lavorando su google sheets

    Credo di aver capito il meccanismo, l'ho testato e funziona anche bene, al momento l'ho impostato con modifica ogni minuto per vedere se funziona, poi l'aggiornamento lo farò fare ad un determinato orario di notte... cosi' quando torno in ufficio avrò il file aggiornato.

    Detto questo ho solo un piccolo problema:
    Il file è composto da piu' fogli, nel primo riesco a far eseguire la macro, negli altri no.
    Ho provato ad eseguire manualmente la stessa azione su 2 fogli per vedere il codice che mi usciva e mi esce questo:

    function RimuoviGiornoPagine() {
    var spreadsheet = SpreadsheetApp.getActive();
    var sheet = spreadsheet.getActiveSheet();
    sheet.getRange(spreadsheet.getCurrentCell().getRow () - 11, 1, 1, sheet.getMaxColumns()).activate();
    spreadsheet.getActiveSheet().deleteRows(spreadshee t.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
    spreadsheet.setActiveSheet(spreadsheet.getSheetByN ame('Foglio 2'), true);
    spreadsheet.getActiveSheet().deleteRows(spreadshee t.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
    };

    Vorrei pero' capire se posso farlo in automatico senza scrivere FOGLIO 2, FOGLIO 3 ecc perche' magari aggiungero' altri fogli e non vorrei andare a rifare la macro da zero.

    E' possibile modificare questo codice per cancellare la riga ad ogni foglio?
    Grazie

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Quote Originariamente inviata da allin81
    poi l'aggiornamento lo farò fare ad un determinato orario di notte... cosi' quando torno in ufficio avrò il file aggiornato.

    Detto questo ho solo un piccolo problema:
    Il file è composto da piu' fogli, nel primo riesco a far eseguire la macro, negli altri no.

    [...]

    Vorrei pero' capire se posso farlo in automatico senza scrivere FOGLIO 2, FOGLIO 3 ecc perche' magari aggiungero' altri fogli e non vorrei andare a rifare la macro da zero.

    E' possibile modificare questo codice per cancellare la riga ad ogni foglio?
    Credo proprio di sì, suppongo si debba creare un ciclo per iterare tra tutti i fogli ed eseguire quindi la rimozione della riga indicata. Ovviamente questo non puoi farlo solo con la registrazione di una macro ma devi lavorare direttamente sul codice della macro per poter costruire delle azioni più complesse.

    Ripeto, non sono esperto di questa applicazione ma ho visto che viene usato un linguaggio derivato da JavaScript (che mastico un po'), provo a mettere su qualcosa che possa fare al caso tuo.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    buone notizie... la cosa è anche più semplice di ciò che pensavo

    Puoi partire da una macro del genere:
    codice:
    function RimuoviGiornoPagine() {
      var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
      for (var i = 0; i < sheets.length ; i++ ) {
        var sheet = sheets[i];
        sheet.deleteRows(1);
      }
    };
    Questa rimuove la riga 1 di tutti i fogli della cartella di lavoro.
    Il metodo deleteRows(1); indica appunto di rimuovere la riga 1. Ovviamente puoi modificare il valore di quel parametro in base alla riga che ti interessa rimuovere.

    Se a te interessa lanciare questa macro alla mezzanotte di ogni giorno puoi impostare il trigger come accennato sopra. A questo punto non hai bisogno di fare altro. Se però non hai certezza che quella determinata riga debba essere rimossa perché magari non corrisponde alla data appena trascorsa, allora dovrai fare degli ulteriori controlli mettendo qualche condizione dentro il ciclo. Fai sapere eventualmente se hai queste ulteriori necessità.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    woooow!!
    sembra perfetta

    L'ho provata e lanciata e sembra cancellare la seconda riga (nella prima ho l'intestazione).

    Adesso ho impostato il timer e dovrà eseguire il comando tra le 2 e le 3 di notte.
    Domani mattina vediamo se funziona tutto

    Ti ringrazio tantissimo
    Appena arrivo in ufficio ti aggiorno se è andato tutto a buon fine.
    Grazie!!

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Bene, figurati, fai sapere com'è andata
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    eccomi, buongiorno
    confermo che lo script ha fatto il suo dovere, ha funzionato alla grande!!

    Adesso, se volessi essere proprio preciso, sarebbe bello che quando clicco su una cella verde mi diventi rossa e viceversa, cliccando su una rossa mi ridiventi verde.
    Una cosa del genere è possibile farla?
    Stavo provando sempre con le macro, ma tra gli attivatori non c'e' il click sulla cella...
    p.s. di default le celle sono tutte verdi (camere libere) e quando diventano rosse vuol dire che le camere sono tutte occupate

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.