2012-07-30 4 views
6

Estoy tratando de organizar mi código para una hoja de cálculo en varios archivos de script. Dentro del editor de scripts puedo crear tantos archivos * .gs como quiera, pero no puedo entender cómo acceder al código que se definiría en otro script.Organizar código de hoja de cálculo en varios archivos * .gs, incluso posible?

Ejemplo simple de lo que me gustaría hacer lograr:

Code.gs:

function onEdit(){ 
    myFunctionFromLibrary_gs(); 
} 

Library.gs:

function myFunctionFromLibrary_gs(){ 
    Browser.msgBox("hi there"); 
} 

El onEdit() es, obviamente, llamado por una Desencadenar. sin modificaciones Esto dará lugar a un tiempo de ejecución de errores, que indica que

myFunctionFromLibrary_gs TypeError: is not a function, it is undefined.

Entonces, ¿cómo puedo hacer este trabajo, o se trata actualmente no es compatible?

Thx de antemano por su ayuda.

Respuesta

7

No sé qué significa el sufijo _gs para Google, pero sin él (ver código abajo), el código funciona.

file1.gs:

function onEdit(){ 
    myFunctionFromLibrary(); 
} 

file2.gs

function myFunctionFromLibrary(){ 
    Browser.msgBox("hi there"); 
} 
+0

hm, en realidad los "_gs" era sólo para propósitos ilustrativos, que no está en el código real. pero, eso significa que debería estar funcionando, investigaré más a fondo – leostone

+0

@ user1563470. Probé el código tanto con el sufijo "_gs" como sin él. En el primer caso, hay el mismo error que en su publicación original. En el segundo caso todo funciona sin ningún error. – megabyte1024

+0

está funcionando ahora, no puedo decir por qué no fue antes, confundido ... PERO THANX – leostone

2

Sé que esto es una vieja pregunta, pero lo encontré en busca de una tarea similar y pasó a encontrar la respuesta durante mi misma buscar. A partir de los documentos en https://developers.google.com/apps-script/guide_libraries#writingLibrary:

If you want one or more methods of your script to not be visible (nor usable) to your library users, you can end the name of the method with an underscore. For example, myPrivateMethod_().

Mientras que su función no termina en un guión, que puede tener un significado especial en otros lugares además de esto, o el _gs sufijo también puede tener un significado especial (en particular dada la misma sufijo de nombre de archivo).

7

Sí, es posible.

  1. You are not limited to a single server Code.gs file. You can spread server code across multiple files for ease of development. All of the server files are loaded into the same global namespace, so use JavaScript classes when you want to provide safe encapsulation.

Referencia: Google Documentation - features and limitations

Cuestiones relacionadas