it-swarm-es.com

Incrustar hoja de cálculo de Google en el documento de Google

¿Es posible incrustar una hoja de cálculo de Google en un documento de Google a la Microsoft Excel y Microsoft Word? ¿Qué tal un gráfico de una hoja de cálculo?

82
ale

A partir de hoy (20/05/2016), Google está comenzando a implementar la capacidad de incrustar un gráfico de una hoja de cálculo de Google en un documento de Google. En este punto, dos de mis 3 cuentas de Google hacen que la opción esté disponible en el menú Insert, con un nuevo submenú Insert→Chart debajo del elemento Insert→Drawing….

Cuando inserta dichos gráficos, permanecen vinculados a la hoja de cálculo original. Si todo lo que desea son datos tabulares, hay un tipo de gráfico de tabla que puede usar para presentar sus datos como una tabla simple.

Hay algunas limitaciones en esta etapa (por ejemplo, con respecto al tamaño del gráfico) y el gráfico debe preexistir en la hoja de cálculo antes de poder insertarlo, pero esto va en la dirección correcta ...


Para insertar una hoja de cálculo o una tabla, use Agregar una tabla de Hojas de cálculo de Google copiando y pegando Hojas de cálculo a Documentos y elija la opción vinculada.

El gráfico se no se actualiza en vivo si modifica la hoja de cálculo de origen mientras su documento está abierto, sin embargo, el documento detectará cambios y le dará un Actualizar botón sobre la hoja de cálculo incrustada para reflejar los últimos cambios en la fuente.

24
Jean-Rene Bouvier

AFAIK, solo puede copiar y pegar desde la hoja de cálculo al documento de texto. La hoja de cálculo se inserta como una tabla, pero no está vinculada: si cambia algo en la hoja de cálculo, no se reflejará en el documento de texto.

¡Por supuesto, me encantaría que me demuestren que estoy equivocado!

32
jfoucher

Aquí hay una solución basada en script que le permite a uno insertar una tabla con el contenido de un rango dado dentro de una hoja de cálculo dada. No intenté encontrar una manera de sincronizar los datos en tiempo real, ya que no parecía práctico dado el gran volumen de datos que tendría que transferirse con cada edición a la hoja de cálculo. En cambio, el script agrega un elemento de menú personalizado "actualizar datos" al documento.

El guión debe estar vinculado al documento (es decir, creado usando Herramientas> Editor de guiones en el menú del documento). La URL de la hoja de cálculo, así como la hoja y el rango a utilizar, se especifican dentro del script. Para incrustar todos los datos en la hoja, reemplace .getRange(rangeName) con .getDataRange().

Cuando la función updateData se ejecuta por primera vez, agrega la tabla al final del documento. En ejecuciones posteriores, actualiza la tabla en su lugar (es decir, si se agrega más texto después de la tabla, se conservará el orden).

Tenga en cuenta que cortar y pegar la tabla interrumpiría el proceso de actualización (el script agregaría una nueva tabla al final) ya que la copia pegada es un nuevo objeto. En cambio, corta y pega el texto alrededor de la mesa.

function onOpen() {
  DocumentApp.getUi()
             .createMenu('Custom')
             .addItem('Update Data', 'updateData')
             .addToUi();
}

function updateData() {
  var ssUrl = ' spreadsheet url here ';
  var sheetName = 'Sheet2';   // name of sheet to use
  var rangeName = 'A1:C3';    // range of values to include 

  var values = SpreadsheetApp.openByUrl(ssUrl)
                             .getSheetByName(sheetName)
                             .getRange(rangeName)
                             .getValues();
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var ranges = doc.getNamedRanges('embeddedSheet-range');
  if (ranges.length == 0) {
    var table = body.appendTable(values);
  }
  else {
    tableRange = ranges[0];
    table = tableRange.getRange().getRangeElements()[0].getElement();
    var ind = body.getChildIndex(table);
    tableRange.remove();
    body.removeChild(table);
    table = body.insertTable(ind, values);
  }
  var rangeBuilder = doc.newRange();
  rangeBuilder.addElement(table);
  doc.addNamedRange('embeddedSheet-range', rangeBuilder.build());
}

Notas técnicas

  1. También es posible sincronizar los datos cada hora, además de hacerlo manualmente. Simplemente agregue un disparador basado en el tiempo desde el menú Recursos del Editor de scripts, para que ejecute la función updateData.

  2. También se puede adaptar este script para que se vincule a la hoja de cálculo de origen. Esto requeriría cambios en la forma en que se abre el documento (por ejemplo, por URL), pero de lo contrario la lógica es la misma.

  3. La parte engorrosa del script es obtener el identificador de la tabla existente en el documento. Esto requiere colocarlo dentro de un rango con nombre. Además, es mucho más conveniente reemplazar completamente el elemento de la tabla que meterse con las entradas de una tabla existente. Dado que un rango con nombre es inmutable, también se elimina con la tabla que contiene y luego se vuelve a crear, junto con la nueva tabla.

11
user79865

Sí tu puedes. Copie el contenido de una hoja y péguelo en su documento, en la esquina derecha le preguntará si desea vincular a la hoja de cálculo. Si lo hace, después de editar la hoja de cálculo, puede hacer clic en el icono de actualización en sus documentos para incorporar los cambios en su documento.

4
Fish Monitor

Una alternativa es utilizar Google Sites o cualquier otro editor de contenido que permita incrustar contenido de iframes.

Para incrustar hojas de cálculo de Google en una página de Google Sites

  1. Cree un nuevo sitio o vaya a un sitio existente.
  2. Cree una nueva página o haga clic en Editar en una página existente.
  3. Haga clic en Insertar> Unidad> Hoja de cálculo
  4. Selecciona la hoja de cálculo
  5. Establecer las opciones
  6. Haga clic en Guardar
3
Rubén