Ist es möglich, eine Google-Tabelle in ein Google-Dokument à la Microsoft Excel und Microsoft Word einzubetten? Wie wäre es mit einem Diagramm aus einer Tabelle?
Ist es möglich, eine Google-Tabelle in ein Google-Dokument à la Microsoft Excel und Microsoft Word einzubetten? Wie wäre es mit einem Diagramm aus einer Tabelle?
Antworten:
Ab heute (20.05.2016) bietet Google die Möglichkeit, ein Diagramm aus einer Google-Tabelle in ein Google-Dokument einzubetten. Zu diesem Zeitpunkt stellen zwei meiner drei Google-Konten die Option im Insert
Menü zur Verfügung. Unter Insert→Chart
dem Insert→Drawing…
Element befindet sich ein neues Untermenü .
Wenn Sie solche Diagramme einfügen, bleiben sie mit der ursprünglichen Tabelle verknüpft. Wenn Sie nur Tabellendaten benötigen, gibt es einen Tabellendiagrammtyp, mit dem Sie Ihre Daten als einfache Tabelle darstellen können.
In dieser Phase gibt es einige Einschränkungen (z. B. in Bezug auf die Größe des Diagramms), und das Diagramm muss bereits in der Tabelle vorhanden sein, bevor Sie es einfügen können. Dies geht jedoch in die richtige Richtung.
Verwenden Sie zum Einfügen einer Tabelle oder eines Arbeitsblatts Hinzufügen einer Tabelle aus Google Sheets, indem Sie sie aus Sheets in Docs kopieren und die verknüpfte Option auswählen.
Das Diagramm wird nicht live aktualisiert, wenn Sie das Quell-Arbeitsblatt ändern, während Ihr Dokument geöffnet ist. Das Dokument erkennt jedoch Änderungen und zeigt über dem eingebetteten Arbeitsblatt die Schaltfläche Aktualisieren an, um die neuesten Änderungen in der Quelle wiederzugeben.
AFAIK, Sie können nur aus der Tabelle kopieren und in das Textdokument einfügen. Die Tabelle wird als Tabelle eingefügt, ist jedoch nicht verknüpft. Wenn Sie etwas in der Tabelle ändern, wird dies nicht im Textdokument berücksichtigt.
Natürlich würde ich mich sehr gerne irren!
Hier ist eine skriptbasierte Lösung, mit der eine Tabelle mit Inhalten aus einem bestimmten Bereich in eine bestimmte Tabelle eingefügt werden kann. Ich habe nicht versucht, eine Möglichkeit zum Synchronisieren von Daten in Echtzeit zu finden, da dies angesichts des potenziell großen Datenvolumens, das bei jeder Bearbeitung in die Tabelle übertragen werden musste, nicht praktikabel erschien. Stattdessen fügt das Skript dem Dokument einen benutzerdefinierten Menüeintrag "Daten aktualisieren" hinzu.
Das Skript sollte an das Dokument gebunden sein (dh mit Extras> Skripteditor im Dokumentmenü erstellt werden). Die Tabellenkalkulations-URL sowie das zu verwendende Blatt und der zu verwendende Bereich werden im Skript angegeben. Ersetzen Sie .getRange(rangeName)
durch, um alle Daten auf dem Blatt einzubetten .getDataRange()
.
Bei der ersten Ausführung der Funktion updateData wird die Tabelle am Ende des Dokuments angehängt. Bei nachfolgenden Durchläufen wird die Tabelle an der richtigen Stelle aktualisiert (dh, wenn nach der Tabelle weiterer Text hinzugefügt wird, bleibt die Reihenfolge erhalten).
Beachten Sie, dass das Ausschneiden und Einfügen der Tabelle den Aktualisierungsprozess unterbrechen würde (das Skript würde am Ende eine neue Tabelle hinzufügen), da die eingefügte Kopie ein neues Objekt ist. Kopieren Sie stattdessen den Text um die Tabelle.
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());
}
Es ist auch möglich, die Daten jede Stunde zusätzlich zu manuell zu synchronisieren. Fügen Sie einfach einen zeitbasierten Trigger aus dem Ressourcen-Menü des Skripteditors hinzu, damit die Funktion updateData ausgeführt wird.
Man kann dieses Skript auch so anpassen, dass es stattdessen an das Quell-Arbeitsblatt gebunden wird. Dies würde Änderungen beim Öffnen des Dokuments erfordern (z. B. über die URL), ansonsten ist die Logik dieselbe.
Der umständliche Teil des Skripts besteht darin, das Handle der vorhandenen Tabelle im Dokument abzurufen. Dazu muss es in einem benannten Bereich platziert werden. Es ist auch viel zweckmäßiger, das Tabellenelement vollständig zu ersetzen, als mit den Einträgen einer vorhandenen Tabelle herumzuspielen. Da ein benannter Bereich unveränderlich ist, wird er auch mit der darin enthaltenen Tabelle entfernt und dann zusammen mit der neuen Tabelle neu erstellt.
/edit#gid=0
Materials am Ende.
Ja, du kannst. Kopieren Sie den Inhalt eines Arbeitsblatts und fügen Sie ihn in Ihr Dokument ein. In der rechten Ecke werden Sie gefragt, ob Sie einen Link zum Arbeitsblatt erstellen möchten. In diesem Fall können Sie nach dem Bearbeiten der Tabelle auf das Aktualisierungssymbol in Ihren Dokumenten klicken, um die Änderungen in Ihr Dokument zu übernehmen.
Eine Alternative ist die Verwendung von Google Sites oder eines anderen Inhaltseditors, mit dem Iframes-Inhalte eingebettet werden können.
So binden Sie Google-Tabellen in eine Seite von Google Sites ein