Ciao, visto che avete la sezione per le domande su dubbi di codice e via dicendo, ve ne pongo una.
Sto usando per la prima volta questo App script di Google che, se non ho capito male, sfrutta una versione semplificata di Javascript. Vorrei implementare alcune cose su dei fogli di Google che uso per elencare dei prodotti con le relative scadenze degli stessi in modo tale da avvisarmi un po' di tempo prima della scadenza.
Il codice in questione l'ho scritto, mi invia i dati del range a Calendar e da lì poi mi organizzo con le notifiche.
La cosa che non riesco a fare è che, una volta creato l'evento, la cella con la data di scadenza si cancelli, o diventi di un colore, o comunque un'azione mirata sulla sola cella.
Questa è la funzione che ho:
function insertCalendarEventFirst() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var last_row = sheet.getLastRow();
var data = sheet.getActiveRange().getValues();
var cal = CalendarApp.getCalendarById('e78966e@group.calendar.google.com');
for (var i=0; i<data.length; i++) {
var event = cal.createAllDayEvent(data[0], new Date(data[1]), {description: 'Prima Scadenza'});
}
}
vorrei in sostanza che legga come fa con l'evento, dalla variabile data in base al ciclo e mi agisca SOLO in quella cella e non su tutto il range o sulla cella attiva ecc ecc.
Qualche suggerimento?
azione su cella con App script
-
- Jr. Member
- Messaggi: 80
- Iscritto il: 04/11/2018, 11:40
Re: azione su cella con App script
Per modificare la cella della data di scadenza dopo aver creato l'evento nel calendario, puoi utilizzare il metodo
In questa versione della funzione, dopo aver creato l'evento nel calendario, viene utilizzato
setValue()
per impostare il valore della cella su vuoto o su qualsiasi altro valore desiderato. Ecco come puoi modificare la tua funzione per fare ciò:Codice: Seleziona tutto
javascript
function insertCalendarEventFirst() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getActiveRange();
var data = range.getValues();
var cal = CalendarApp.getCalendarById('e78966e@group.calendar.google.com');
for (var i = 0; i < data.length; i++) {
var event = cal.createAllDayEvent(data[i][0], new Date(data[i][1]), {description: 'Prima Scadenza'});
// Cancella il valore della cella della data di scadenza dopo aver creato l'evento nel calendario
range.getCell(i+1, 2).setValue('');
}
}
In questa versione della funzione, dopo aver creato l'evento nel calendario, viene utilizzato
setValue('')
per impostare il valore della cella della data di scadenza su vuoto. Assicurati che range.getCell(i+1, 2)
corrisponda alla cella che contiene la data di scadenza nella tua struttura del foglio di calcolo.-
- Jr. Member
- Messaggi: 80
- Iscritto il: 04/11/2018, 11:40
Re: azione su cella con App script
Grazie della risposta, ero proprio bloccato sul come caspita dire al metodo che doveva usare quella cella lì, quindi bastava aggiungere una variabile e non ostinarmi a usare la stessa "data" usata poco su.Bardai ha scritto: ↑18/03/2024, 13:42 Per modificare la cella della data di scadenza dopo aver creato l'evento nel calendario, puoi utilizzare il metodosetValue()
per impostare il valore della cella su vuoto o su qualsiasi altro valore desiderato. Ecco come puoi modificare la tua funzione per fare ciò:
Codice: Seleziona tutto
javascript function insertCalendarEventFirst() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var range = sheet.getActiveRange(); var data = range.getValues(); var cal = CalendarApp.getCalendarById('e78966e@group.calendar.google.com'); for (var i = 0; i < data.length; i++) { var event = cal.createAllDayEvent(data[i][0], new Date(data[i][1]), {description: 'Prima Scadenza'}); // Cancella il valore della cella della data di scadenza dopo aver creato l'evento nel calendario range.getCell(i+1, 2).setValue(''); } }
In questa versione della funzione, dopo aver creato l'evento nel calendario, viene utilizzatosetValue('')
per impostare il valore della cella della data di scadenza su vuoto. Assicurati cherange.getCell(i+1, 2)
corrisponda alla cella che contiene la data di scadenza nella tua struttura del foglio di calcolo.
Ma conosci per caso un metodo per lavorare su inervalli di range diversi e non contigui? Stavo leggendo che getActiveRangeList è buggato e non va, ma magari sto ancora sbagliando io come scriverlo...
Re: azione su cella con App script
Sì, puoi lavorare su intervalli di range non contigui utilizzando il metodo
In alternativa, puoi ottenere gli intervalli selezionati utilizzando il metodo
getActiveRangeList()
in combinazione con getRanges()
. Tuttavia, come hai notato, il metodo getActiveRangeList()
è buggato e non funziona correttamente in alcuni casi.In alternativa, puoi ottenere gli intervalli selezionati utilizzando il metodo
getActiveRange()
e quindi esaminare le celle selezionate all'interno di ciascun intervallo.