2012-05-08 15 views
14

Tengo una hoja maestra de cálculo y varias copias. Esta hoja de cálculo maestra utiliza algunos scripts.¿Es posible tener una secuencia de comandos para varias hojas de cálculo?

¿Es posible vincular todas las copias de esta hoja de cálculo maestra al mismo script que en la hoja de cálculo maestra?

Objetivo:

  • cambios en las secuencias de comandos en la hoja de cálculo maestra se utilizan automáticamente por las copias
  • aka: bajo mantenimiento
+0

acabase usted no debe hacer un comentario como: mucho encanto, buena pregunta! – haemse

Respuesta

17

amleczko tiene razón: se debe utilizar la nueva característica de la biblioteca en escritura Google Apps.

Sin embargo, a partir de hoy, no podrá hacer exactamente lo que quiera (utilizando el mismo script para varias hojas de cálculo). Lo que puede hacer en su lugar es guardar una versión de su secuencia de comandos (Archivos> Gestionar versiones ...), para crear una biblioteca. Luego, importe esta biblioteca en las otras hojas de cálculo (Recursos> Administrar bibliotecas ...). Encienda el "modo de desarrollo" para que cada cambio realizado haga que la biblioteca tenga efecto inmediatamente en las hojas de cálculo usando esta biblioteca. De lo contrario, deberá guardar una nueva versión de la biblioteca para cada cambio y actualizar manualmente el número de versión de la biblioteca en cada hoja de cálculo que la use.

El problema es, que necesita para escribir un guión de cada hojas de cálculo utilizando la biblioteca, con funciones de esqueleto de esta manera:

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

Parece que es más fácil simplemente copiar y pegar el script en la nueva hoja de cálculo ... –

+2

Sí, copiar y pegar código parece más fácil que crear una función en una biblioteca compartida ... hasta que tenga que cambiar algo en su código:) – antoine

+0

En realidad, invertí la manera en que hago las cosas. Ahora tengo un archivo de esqueleto con el script y simplemente pego hojas en el archivo de esqueleto. El script hace lo suyo y borra la hoja. Entonces, si tengo que modificar el código, todo está en el mismo lugar. Afortunadamente, en mi caso, no tengo que preocuparme por los cientos de archivos pasados ​​en los que ya ejecuté el script. –

1

No es posible de esta manera que usted está pensando . Al menos, todavía no (ver issue 40).

Pero, dependiendo del uso de scripts, puede conectarlos "de la manera difícil" o incluso mejor, utilice solo un script. La secuencia de comandos en la hoja de cálculo maestra puede abrir los otros archivos de hoja de cálculo y hacer su trabajo "de forma remota". No es necesario que el script se aloje en una hoja de cálculo para interactuar con él (leer/escribir en él). Solo necesita una secuencia de comandos alojada en la hoja de cálculo si va a utilizar desencadenantes de eventos de hoja de cálculo, es decir, abiertos, en edición y en forma de envío.

Quizás pueda desarrollar una buena IU para la secuencia de comandos en la hoja maestra y publicarla como servicio. Luego, solo tiene un enlace en las copias para acceder a la misma interfaz de usuario en una pestaña diferente del navegador. Al agregar parámetros al enlace, la IU del script puede incluso adaptarse a la hoja de cálculo particular que está "desencadenándolo".

Bueno, eso es todo lo que puedo imaginar ahora. Pero, desafortunadamente, hay algunos casos de uso que simplemente no se ajustan a esta buena "solución alternativa". Para ellos, uno solo puede marcar issue 40 (para votar y realizar un seguimiento de las actualizaciones) y espero que se desarrolle pronto.

+0

Gracias, tal vez necesito aclarar la configuración. Cada copia tiene un evento onEdit y varios botones que hacen algo (principalmente rangos de copia) para esa hoja de cálculo en particular. Noté que tengo que actualizar parte del guión, cómo hacer esto de un lugar a muchas copias (tengo una lista de todas las claves de las hojas de cálculo involucradas). –

+0

No es posible hacerlo automáticamente ahora. Tienes que abrir manualmente cada script, pegar el nuevo código y guardar. Hay algunas soluciones usando UrlFetch para recuperar el código de forma remota y 'eval' que pueden ser adecuados para usted, se describen en los comentarios del problema 40. –

+0

El número 40 es fijo y cerrado. –

0

La solución pongo en su lugar en este contexto era tener un sitio de Google, donde se encaja la secuencia de comandos principal, y donde la hoja de cálculo está incrustado demasiado

A continuación, la secuencia de comandos, refiriéndose a una hoja de cálculo dedicado, miradas para el nombre de la página del sitio de Google, busca en la hoja de cálculo maestra y obtiene el ID de la hoja de cálculo que está incrustada en la página.

0

He resuelto este problema cuando uso una secuencia de comandos que genera automáticamente hojas de cálculo.

Normalmente, agregaré una hoja a cualquier hoja de cálculo con un script llamado "Información". Lo usaré para almacenar información que es importante para el script. En mi script que genera automáticamente más hojas de cálculo, hago un seguimiento de la identificación de la hoja creada. De esta forma, puedo llamar rápidamente todas las hojas "vinculadas" e interactuar con ellas utilizando el mismo script. Incluso podría valer la pena escribir el guión en una hoja y mantenerlo totalmente separado de la hoja maestra o de sus hijos.

Eche un vistazo a esta función, podría darle algunas ideas.

SpreadsheetApp.openById(id)

Cuestiones relacionadas