Estoy usando una aplicación externa para ingresar datos en una hoja de cálculo de Google. Este libro de trabajo es referenciado por un libro de trabajo separado (con la IMPORTRANGE(spreadsheet_key, range_string)
función) que manipula e interpreta los datos. Mi problema es que cada vez que modifico personalmente el libro de trabajo al que se hace referencia, el libro de referencia se actualiza muy bien, pero cada vez que la aplicación externa lo modifica, no se actualiza.
He intentado editar la "Configuración de la hoja de cálculo" para que el recálculo se realice cada minuto y en cada cambio. Además, también instalé una extensión en Google Chrome que actualiza automáticamente la página cada hora. Sin embargo, los datos no se vuelven a importar del libro de referencia. Incluso si copio la fórmula en una nueva celda, los datos aún no se vuelven a importar.
¿Hay algo que pueda hacer al libro de referencia para que Google Sheets vuelva a importar los datos?
Editar: para ser claros, actualmente tengo un libro de trabajo con datos ingresados por una aplicación externa (llámelo "hoja de origen") y otro libro con una IMPORTRANGE
función (llámelo "hoja de referencia"). Los datos mostrados por la IMPORTRANGE
función en la "hoja de referencia" no incluyen ningún dato ingresado por la aplicación externa desde la última vez que edité personalmente la "hoja de origen". Además, ambos libros están utilizando las nuevas Hojas de cálculo de Google.
Editar: Además, esta pregunta no es lo mismo que ¿Cómo puedo vincular una celda en Google Spreadsheets a una celda en otro documento? porque estoy usando la función dada como la solución a esa pregunta para importar datos de una hoja de cálculo. El problema no es cómo importar los datos, sino cómo actualizar el origen de los datos. Supongo que Google se habría encargado de esto por mí, pero los datos en la "hoja de referencia" no se actualizan, y la única forma que puedo encontrar para actualizarlo es ir físicamente a la "hoja de origen". "y editarlo yo mismo.
fuente
separate workbook
autorización. Según todas las apariencias, parece que se acaba de teclear en.Respuestas:
He estado luchando con el mismo problema. En lugar de escribir una función personalizada, agrego una cadena de consulta diferente a
spreadsheet_url
enIMPORTRANGE
la esperanza de que cada vez que se actualiza la página, Google piensa que necesita para obtener los datos de una nueva hoja de cálculo. Simplemente agrego una nueva marca de tiempo para que la url sea única cada vez. Es un truco descarado, pero me ha funcionado en muchas hojas.Mi fórmula anteriormente se parecía a:
Y ahora se ve así:
Actualizar:
Este método ya no funciona ya que Google ya no permite
now()
entrarimportrange()
. Ver comentario de Hugh a continuación.fuente
Lo siguiente viene de Jimmy en esta respuesta de Web Apps .
=now()
ecuación en una celda aleatoria, digamosZ1
=importrange()
función que haga referencia a lanow
función de la otra hoja de cálculo.Intenté muchas otras sugerencias, incluido el uso de la
=now()
función, el truco de la URL ahora en este hilo o el Script de aplicaciones para insertar texto aleatorio en un intervalo establecido, pero nada obligaría a actualizar importrange excepto una edición manual de la hoja de origen.fuente
Encontré que la forma más fácil era poner una
if
declaración simple alrededor delimportrange
.Esto funciona todo el tiempo.
fuente
=if (Now() > now()-1, IMPORTRANGE(B1,B2),)
La solución alternativa de fecha y hora no parece funcionar para mí: hay una nota explícita de que no se permite el uso de fecha y funciones rand.
Mi solución alternativa es eliminar la celda y luego presionar ctrl + z. Fuerza una actualización cada vez. Es trivial escribir esta secuencia abierta, o en intervalos de tiempo específicos para mantener los datos actualizados.
fuente
Encontré un truco simple para simular una actualización celular manual y lanzar modificaciones en una hoja de cálculo externa.
Creó una función personalizada como esta:
Luego, en mi hoja lo llamo de esta manera:
donde
tab!B1
es una de las celdas que modifico por código.fuente
O ... podría hacer un script simple, primero dando el valor cero (0), luego incluyendo la fórmula y esto hace el truco:
fuente
Pude encontrar una manera de resolver mi problema (detallado aquí ) usando un Script de aplicaciones con una función personalizada.
Si reemplaza
=IMPORTRANGE(spreadsheet_url, range_string)
en su hoja de cálculo=DynamicImportRange(spreadsheet_url, sheet_name, range)
y pega el siguiente código en Herramientas -> Editor de scripts -> Proyecto en blanco, debería funcionar (consulte esto para obtener más información sobre cómo escribir scripts de aplicaciones).Si desea que la hoja se actualice regularmente, puede configurar un activador yendo a Recursos -> Activadores del proyecto actual en la ventana de Script de aplicaciones.
fuente
SpreadsheetApp.openById()
oSpreadsheetApp.openByUrl()
. Mira aquí y aquíComo solución alternativa para la
now()
publicación roadblock, puede cambiar la configuración de la hoja de cálculo para actualizar cada hora.Archivo -> Configuración de hoja de cálculo -> Cálculo
Actualice la hoja para volver a calcular en " Al cambiar y cada hora " o "Al cambiar y cada minuto". Sin embargo, tenga en cuenta que seleccionar el recálculo cada minuto puede colgar la hoja de cálculo.
fuente
Puede usar el complemento Sheetgo de Google Sheets para actualizar automáticamente su referencia desde otra hoja. Puede usar 30 actualizaciones gratis por mes u obtener una suscripción paga para obtener más actualizaciones. Este video debería explicar el uso básico.
fuente