La manera más sencilla es mediante menús contextuales tal como si fueran funciones que nos ofrece el mismo Google
Hay varias maneras de hacer esto pero os enseñaré la más actual ya que hay el riesgo que las otras maneras queden obsoletas en breve. Tranquilos que no es complicado.
Como siempre, con un ejemplo lo veréis más claro
function onOpen() { var ui = SpreadsheetApp.getUi(); var rrhh = ui.createMenu('Recursos Humanos') .addItem('Contratar', 'Contract') .addItem('Despedir', 'Fire'); ui.createMenu('Menu Adicional') .addItem('Contabilidad', 'Contability') .addSeparator() .addSubMenu(rrhh) .addToUi(); } function Contability() { SpreadsheetApp.getUi().alert('Vamos a contabilizar cosas!!!'); } function Contract() { SpreadsheetApp.getUi().alert('Se contrata un nuevo trabajado!'); } function Fire() { SpreadsheetApp.getUi().alert('Hay uno que ya no trabaja aqui!'); }
Lo veis? Sencillo.
Si ejecutáis el onOpen veréis como aparece en vuestro spreadsheet un menú que estéticamente es idéntico a cualquier otro que venga de serie con las hojas de cálculo de Drive.
Los menús son una manera muy sencilla de enriquecer las funcionalidades de una hoja de cálculo de Google, espero que lo aprovechéis.
NOTA: Si queréis poner un botón en el spreadsheet ( no el menú superior) tal vez te interese este artículo sobre como asignar un script a un botón
HOLA ...muy bueno el ejemplo... quisiera saber como hacer que al darle click a un menu me abra un libro de la hoja de calculo... muchas gracias
ResponderEliminarTe tengo que decir que no se si puede hacer. Puedes poner un link en un hoja de calculo ( en una celda ) = HYPERLINK(enlace,texto); pero desde GAS me parece que no lo podrás hacer.
EliminarNos vemos
MUCHAS GRACIAS... OSEA QUE NO SE PUEDE TRABAJAR EN DISEÑAR UN MENU PERSONALIZADO QUE AL DARLE CLICK A LAS OPCIONES TE ABRA UNA HOJA DEL LIBRO
ResponderEliminarYo lo hago creando una función que haga esto:
Eliminarvar spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Nombre_hoja'), true);
Al hacer click en el menú ejecuta la función y te manda a la hoja o celda de la hoja que quieras
A priori te diria que no, pero si encuentras la manera, por favor, hazmelo llegar.
ResponderEliminarMe puedes comentar como hacer automática la autorización del scrip o function , para las personas q tienen ya compartido el documeto, gracias
ResponderEliminarDiria que es imposible. Cada usuario debe autorizar con sus permisos. La manera que no te pida permisos es o bien que lo que hagas no pida permisos ( practicamente imposible ) o bien que el script lo implementes como ejecutado por ti, de forma que solo tu dandole permisos ya seria suficiente, pero esta opción no siempre es la correcta.
EliminarSiento no poder darte una solución mejor.
Hola Pako, ¿es posible programar el botón para que ejecute varios scripts con un sólo clic?
ResponderEliminarPodrias anidar todas las funciones dentro de otra, por ejemplo
EliminarFuncionPrincipal () {
Funcion1 ();
Fucion2 ();
}
como se le pudiera hacer para que en cada opción abra una hoja diferente?
ResponderEliminarhola,
EliminarLa forma más fácil es que cada opción llamara a una función diferente y dentro de cada función que tuvieras algo de este estilo:
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("nombre-de-hoja-que-quieres-activar").setActiveSelection("A1");
Con eso irás directamente a la página que tu quieras.
Ya me contarás como te va
Nos vemos
EliminarLo que me funciono fue este scrip que me encontre en el foro, de todas formas muchas gracias por tu apoyo.
function irHoja2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Hoja 2');
ss.setActiveSheet(sheet);
}
totalmente válido
EliminarGracias por compartirlo
Nos vemos
es facil hazlo asi...
Eliminarfunction irHoja02() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('02'), true);
};
Hola muy buena tarde.
ResponderEliminarMe gustaría saber cómo hago para poner una imágen en los menús que creo.
Cómo los que están por ejemplo en el menú Archivo/Mover a... o el de enviar a la papelera.
De antemano muchas gracias
Hasta donde yo se no es posible hacerlo, pero bueno, si alguien es capaz de conseguirlo que diga algo, yo estaria encantado de saberlo.
EliminarNos vemos
Hola buenos días
ResponderEliminarTengo el inconveniente que el archivo que he creado debe funcionar para dispositivos móviles, y en estos no sale el menú como lo vemos en la aplicación de escritorio, así que no se puede ejecutar la sentancia de comandos (He creado una opción en el menú). Quisiera saber si hay forma de poner un ícono en el menú donde se encuentran las opciones para elegir fuente o tamaño de la misma.
O si tienen otra opción o idea sería excelente. También he probado poniendo una imagen y asignarle a esta la secuencia pero de nuevo solo funciona desde la aplicación de escritorio, no desde el dispositivo móvil.
De antemano muchas gracias.
Es raro.
EliminarEntiendo que hablas de la aplicacion movil. Prueba a actualizarla, aunque realmente me lo creo que te de problemas, no eres el primero .
Una posible solucion seria acceder a la hoja a través del navegador del movil. Con eso si que deberia funcionarte tanto los menus de la barra superior como scripts linkados a imagenes.
Lo que comentas de poner scripts en la zona de opciones, desconozco si pudiera existir alguna posibilidad, pero me parece raro. Sinceramente nunca lo he visto.
Pruebalo con el browser , te irá mejor.
Ha pasado ya bastante, pero espero que le sirva a otras personas, puedes mirarte este link: https://googleappscriptsweb.blogspot.com/2020/08/como-ejecutar-un-google-script-desde-un-boton.html
Eliminarhola por favor deseo responder a un formulario y cree en gloogle sheets un script para que responda automaticamente una vez lleno el formulario el tema es que deseo poner un link dentro del cuerpo del script lo hago en html pero no me sale para dar el clic y se diriga a la pagina respectiva
ResponderEliminarTe refieres a enviar un correo cuando alguien llena un formulario?
EliminarSi se puede hacer. A ver si puedo ponerme este fin de semana y hago un tutorial sobre esto
Nos vemos
Hola!
ResponderEliminarDe antemano, muchas gracias por la información, me ha resultado muy util.
Por otra parte, quisiera consultarte si existe algun codigo con el cual pueda ofrecer al usuario la opción de descargar la hoja de calculo pero solo en formato PDF
De nuevo muchas gracias y saludos!
Si, existe, de hecho lo que mejor podrias hacer es mirarte este tutorial: https://googleappscriptsweb.blogspot.com/2020/08/como-crear-un-pdf-de-una-seleccion-con-google-scripts.html . En vez de llamar a la url que generas podrias darle al usuario la url de descarga del PDF. No es complicado. Miratelo y si tienes problemas hazmelo saber
EliminarNos vemos
Hola Qué tal? Estoy buscando la forma de elaborar el código para crear una ventana de búsqueda para localizar hojas de cálculo de todo el book que tengo abierto en el sheets. Yo tenía un código que utilice en una macro en excel en VBA, pero me cuesta trasladarlo a Google Script y quisiera saber si me podrían recomendar la forma en que pueda reemplazar el código o si es posible hacer esto con una macro en Sheets o cuales comandos debería utilizar, ya que para poder declarar las variables como Boolean y String, no encuentro el modo. Graciaaaas
ResponderEliminarEste es mi código de VBA:
Sub buscarHoja()
Dim existe As Boolean
Dim NombreHoja As String
Dim cont As Integer
NombreHoja = InputBox("ingresar el nombre de la hoja") existe = False
For cont = 1 To Worksheets.Count If Worksheets(cont).Name Like "*" & NombreHoja & "*" Then
existe = True
Exit For
End If
Next
If existe = False Then
MsgBox " no ne encontro existencia de la hoja!"
Else
Sheets(Worksheets(cont).Name).Select
End If
End Sub
Buenas, poderse , se puede hacer pero dado que tiene pinta de ser un proyecto empresarial te emplazaria a que me contactaras a un nivel más profesional :) : https://www.tutorialesgoogleappscripts.com/p/como-contratar-mis-servicios-de.html No creo que salga caro, de hecho tiene pinta d ser un proyecto bastante asequible. Estamos en contacto y lo hablamos
Eliminar