2012-05-08 15 views
14

Ho un foglio di calcolo principale e un numero di copie. Questo foglio di calcolo principale utilizza alcuni script.È possibile avere uno script per più fogli di calcolo?

È possibile collegare tutte le copie di questo foglio di calcolo principale allo stesso script del foglio di calcolo principale?

Obiettivo:

  • cambiamenti nella script nel foglio di calcolo master vengono automaticamente utilizzate dalle copie
  • aka: bassa manutenzione
+0

allthough non dovreste fare una commento: verry buona domanda! – haemse

risposta

17

amleczko ha ragione: si consiglia di utilizzare la nuova funzione di libreria nello script di Google Apps.

Tuttavia, a partire da oggi, non sarà possibile eseguire esattamente ciò che si desidera (utilizzando lo stesso script per più fogli di calcolo). Quello che puoi fare invece è salvare una versione del tuo script (File> Gestisci versioni ...), al fine di creare una libreria. Quindi, importa questa libreria negli altri fogli di calcolo (Risorse> Gestisci librerie ...). Attivare la "modalità di sviluppo" in modo che ogni modifica apportata alla libreria abbia effetto immediato sui fogli di calcolo che utilizzano questa libreria. Altrimenti, dovrai salvare una nuova versione della libreria per ogni modifica e aggiornare manualmente il numero di versione della libreria in ogni foglio di lavoro che lo utilizza.

Il problema è, è necessario scrivere uno script in ogni fogli di calcolo utilizzando la libreria, con funzioni di scheletro in questo modo:

function doSomething(){ 
    myLibrary.doSomething(); 
} 
+0

Sembra che sia più semplice copiare e incollare lo script nel nuovo foglio di calcolo ... –

+2

Sì, il codice di copia-incolla sembra più semplice della creazione di una funzione in una libreria condivisa ... finché non si modifica qualcosa nel codice:) – antoine

+0

In realtà ho appena invertito il modo in cui sto facendo le cose. Ora ho uno scheletro con lo script e incollo i fogli nel file dello scheletro. Lo script fa la sua cosa ed elimina il foglio. Quindi ora, se devo modificare il codice, è tutto nello stesso posto. Fortunatamente, nel mio caso, non devo preoccuparmi delle centinaia di file precedenti su cui ho già eseguito lo script. –

1

Non è possibile in questo modo che stai pensando . Almeno, non ancora (vedi issue 40).

Tuttavia, in base all'utilizzo dello script, è possibile collegarli "nel modo più rigido" o, meglio ancora, utilizzare solo uno script. Lo script sul foglio di calcolo principale può aprire gli altri fogli elettronici e fare il suo lavoro "da remoto". Non è richiesto che lo script sia ospitato su un foglio di calcolo per interagire con esso (leggi/scrivi su di esso). Hai solo bisogno di uno script ospitato nel foglio di calcolo se utilizzerai i trigger di fogli di calcolo, ad esempio on-open, on-edit e on-form-submit.

Forse è possibile sviluppare una bella interfaccia utente per lo script sul foglio master e pubblicarlo come servizio. Quindi, è sufficiente disporre di un collegamento sulle copie per accedere alla stessa interfaccia utente in una scheda del browser diversa. Aggiungendo i parametri al collegamento l'interfaccia utente dello script può persino adattarsi al foglio di calcolo specifico che lo "innesca".

Bene, questo è tutto quello che posso immaginare ora. Ma, sfortunatamente, ci sono alcuni casi d'uso che semplicemente non si adattano a questo bel "workaround". Per quelli, uno può solo star issue 40 (per tipo di voto e tenere traccia degli aggiornamenti) e spero che sia sviluppato presto.

+0

Grazie, forse ho bisogno di chiarire l'impostazione. Ogni copia ha un evento onEdit e diversi pulsanti che fanno qualcosa (per lo più copiando intervalli) per quel particolare foglio di calcolo. Ho notato che ho bisogno di aggiornare alcuni script, come farlo da un posto a molte copie (ho una lista di tutte le chiavi dei fogli di calcolo coinvolti). –

+0

Non è possibile farlo automaticamente ora. Devi aprire manualmente ogni script, incollare il nuovo codice e salvare. Esistono alcune soluzioni alternative che utilizzano UrlFetch per recuperare il codice in remoto e 'eval' che potrebbero essere adatti a te, sono descritti nei commenti del problema 40. –

+0

Il numero 40 è fisso e chiuso. –

0

La soluzione che ho messo in atto in questo contesto era quello di avere un sito di Google, in cui lo script master è incorporato, e dove il foglio di calcolo è incorporato anche

Poi, lo script, riferendosi ad un foglio di calcolo dedicato, sguardi per il nome della pagina del sito di Google, cerca nel foglio di calcolo principale e ottieni l'ID del foglio di calcolo incorporato nella pagina.

0

Ho risolto questo problema quando utilizzo uno script che genera automaticamente fogli di calcolo.

In genere, aggiungo un foglio a qualsiasi foglio di calcolo con uno script denominato "Informazioni". Lo userò per memorizzare informazioni importanti per la sceneggiatura. Nel mio script che genera automaticamente più fogli di calcolo, tengo traccia dell'ID del foglio creato. In questo modo, posso quindi richiamare rapidamente tutti i fogli "collegati" e interagire con loro utilizzando lo stesso script. Potrebbe anche valere la pena di scrivere la sceneggiatura in un unico foglio, e tenerlo totalmente separato dal tuo foglio Maestro o dai suoi figli.

Dai un'occhiata a questa funzione, potrebbe darti qualche idea.

SpreadsheetApp.openById(id)

Problemi correlati