Votazioni rapide sfruttando Apps Script

Di - 9 November 2012 - in

Tutti, almeno una volta nella vita, ci siamo ritrovati in situazioni in cui dover prendere una decisione collettiva. Ad esempio, scegliere la pizzeria o il ristorante in cui andare a mangiare insieme agli amici il sabato sera, oppure votare il proprio capoclasse a scuola, o addirittura decidere una carica politica, come  l’elezione di un sindaco. Sono tutte occasioni in cui siamo chiamati ad effettuare una scelta.
In situazioni simili, prima di riuscire a mettere d’accordo le persone e prendere quindi una decisione, si intuisce quanto il fattore tempo sia importante. Ma la cosa che più le accomuna è che in ognuna di queste siamo chiamati ad esprimere una sola preferenza.

Chris Cartland, Developer Programs Engineer nel team di Google+, utilizzando i prodotti e le tecnologie di Google (Google Forms, Google Spreadsheets e Google Apps Script), ha implementato un sistema di votazione, denominato Instant-runoff voting (IRV), o voto alternativo, che chiede agli elettori di classificare i candidati, piuttosto che esprimere un solo voto. Questi voti, insieme ad una chiave di votazione segreta fornita ad ogni votante, sono registrati in un form che popola automaticamente un foglio di calcolo. Il codice nell’App script, utilizzando lo spreadsheet, conta i voti garantendo nel contempo che ogni chiave di votazione venga utilizzata solo una volta. Le chiavi segrete, inoltre, non solo impediscono agli elettori di effettuare più votazioni, ma permettono anche di cambiare il loro voto sottoponendo di nuovo il form.

Di seguito viene riportato un frammento di codice che mostra il processo generale per decretare il vincitore.

/* Some code omitted for clarity */

/* candidates is a list of names (strings) */
var candidates = get_all_candidates(results_range);

/* votes is an object mapping candidate names -> number of votes */
var votes = get_votes(results_range, candidates, keys_range, valid_keys);

/* winner is candidate name (string) or null */
var winner = get_winner(votes, candidates);

while (winner == null) {
   /* Modify candidates to only include remaining candidates */
   get_remaining_candidates(votes, candidates);
   if (candidates.length == 0) {
      Browser.msgBox("Tie");
      return;
   }
   votes = get_votes(results_range, candidates, keys_range, valid_keys);
   winner = get_winner(votes, candidates);
}
Browser.msgBox("Winner: " + winner);

Il video dimostrativo mostra come creare ed eseguire una propria elezione utilizzando questo script:

Se anche voi avete il problema di prendere una decisione insieme ai vostri amici o colleghi, adesso potete usufruire di questo splendido script per risparmiare tempo, utilizzandolo, ad esempio, per approfondire queste semplici ed utili tecnologie.

Via | Google Apps Developer Blog

Leave a Reply

Fabrizio Variano Articolo scritto da

Laureato e specializzato in Informatica con il massimo dei voti, lavora come Software engineer con compiti di team leading progettando e sviluppando soluzioni in ambito web con tecnologie Java e “dintorni”. Grande appassionato di tecnologia, negli ultimi anni si è avvicinato all’ambito mobile, sia hardware che software, con l’intento di far suo questo mondo affascinante. Oltre a viaggiare, tra i suoi hobby ci sono: la moto, la cucina ed il cinema.

Contatta l'autore

Previous post:

Next post: