azione su cella con App script

Bash, Perl, Python, Ruby, ...
Rispondi
blackpanther
Jr. Member
Jr. Member
Messaggi: 80
Iscritto il: 04/11/2018, 11:40

azione su cella con App script

Messaggio da blackpanther »

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?
Bardai
Newbie
Newbie
Messaggi: 11
Iscritto il: 20/08/2023, 22:26

Re: azione su cella con App script

Messaggio da Bardai »

Per modificare la cella della data di scadenza dopo aver creato l'evento nel calendario, puoi utilizzare il metodo 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.
blackpanther
Jr. Member
Jr. Member
Messaggi: 80
Iscritto il: 04/11/2018, 11:40

Re: azione su cella con App script

Messaggio da blackpanther »

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 metodo 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.
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.

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...
Bardai
Newbie
Newbie
Messaggi: 11
Iscritto il: 20/08/2023, 22:26

Re: azione su cella con App script

Messaggio da Bardai »

Sì, puoi lavorare su intervalli di range non contigui 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.
Rispondi