#1 楼
从今天(2016-05-20)起,Google将开始推出将图表从Google电子表格嵌入到Google文档中的功能。此时,我的3个Google帐户中有2个在Insert
菜单中提供了该选项,并且在Insert→Chart
项下方有一个新的Insert→Drawing…
子菜单。插入此类图表时,它们仍链接到原始电子表格。如果只需要表格数据,则可以使用表格图表类型将数据显示为简单表格。
现阶段存在一些限制(例如,关于图表的大小)并且该图表必须先存在于电子表格中,然后才能插入,但这是正确的方向...
要插入电子表格或表格,请使用从Google添加表格通过从“表格”复制粘贴到“文档”并选择链接的选项来选择表格。
如果在打开文档时修改源电子表格,则图表不会实时更新,但是,该文档将检测到更改并给出您可以在嵌入式电子表格上方使用“更新”按钮来反映源中的最新更改。
评论
这是否意味着如果电子表格使用自动更改的公式或方程式(例如,基于特定日期),它也不会更新?
–艾里克·汉弗莱(Erik Humphrey)
16-10-5在17:47
我尚未对此进行测试,但是我怀疑您必须打开电子表格以刷新图表,然后接受更新嵌入其的文档中的图表。如果您发现其他情况,请告诉我们。
–珍妮·布妮(Jean-Rene Bouvier)
16-10-13在9:36
从今天开始,还可以嵌入一张桌子。由于您的答案已被接受,因此您可能需要在此新功能中进行编辑。
–user135384
17-6-27在15:18
感谢您提供的信息。直接表嵌入。目前,该功能在我的Google Apps for Work帐户中似乎还无法使用。我会在发现更新后立即对其进行更新。
–珍妮·布妮(Jean-Rene Bouvier)
17年9月9日在17:15
@Michelle我尝试过,似乎不可能。从表格文件复制的表上看不到任何“更新”按钮。
– ADTC
17年9月17日在18:11
#2 楼
AFAIK,您只能从电子表格复制并粘贴到文本文档。电子表格是作为表格插入的,但未链接:如果您在电子表格中进行更改,则该电子表格将不会反映在文本文档中。当然,我绝对希望证明是错误的!
评论
可悲的是,这确实是我目前唯一的选择。
–ale
2010年7月7日在13:33
请参阅下面的答案,现在有了一个新选项,该选项使它更加友好并提供了动态更新。
–珍妮·布妮(Jean-Rene Bouvier)
16年5月20日在8:44
#3 楼
这是一个基于脚本的解决方案,它允许一个表插入具有给定电子表格中给定范围内的内容的表。我没有尝试找到一种实时同步数据的方法,因为考虑到每次编辑到电子表格时都可能需要传输的大量数据,这似乎并不实际。而是,脚本将自定义菜单项“更新数据”添加到文档。脚本应绑定到文档(即使用文档菜单中的“工具”>“脚本编辑器”创建)。在脚本中指定了电子表格URL以及要使用的工作表和范围。要将所有数据嵌入到工作表中,请将
.getRange(rangeName)
替换为.getDataRange()
。首次执行updateData函数时,它将表添加到文档末尾。在随后的运行中,它将在适当的位置更新表格(即,如果在表格之后添加了更多文本,则将保留顺序)。
请注意,剪切粘贴表将中断更新过程(脚本将在末尾添加新表),因为粘贴的副本是新对象。而是将文本剪切粘贴在表格周围。
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());
}
技术说明
除了手动之外,每小时还可以同步数据。只需从“脚本编辑器”的“资源”菜单中添加基于时间的触发器,即可运行updateData函数。
还可以改编该脚本以绑定到源电子表格。这将需要更改文档的打开方式(例如,通过URL),但是其他逻辑是相同的。
脚本的繁琐部分是获取文档中现有表的句柄。这需要将其放在命名范围内。而且,完全替换表格元素比弄乱现有表格的条目更为方便。由于命名范围是不可变的,因此也会将其与包含的表一起删除,然后与新表一起重新创建。
评论
效果很好。有什么方法可以格式化(特别是单元格背景色)?
–cheshirekow
16年5月6日在15:42
注意:“电子表格网址”显然应该包含完整的网址,最后包括/ edit#gid = 0内容。
–cheshirekow
16年5月6日15:43
无法导入其他电子表格的格式。
–user79865
16年5月6日在15:55
链接也不会转移,颜色也不会转移。有什么方法可以修改此脚本以包括所有格式?非常聪明地处理剪切粘贴问题,就像一个魅力!
–未连接
16年7月2日在17:34
#4 楼
是的你可以。复制工作表的内容并将其粘贴到您的文档中,它会在右上角询问您是否要链接到电子表格。如果这样做,在编辑电子表格后,您可以单击文档中的更新图标以将更改合并到文档中。评论
截至2018年初,这是与将Google表格表格插入Google文档有关的部分问题的最佳答案。
–杜克
18年1月12日在13:06
据我所知,找到该线程的原因是它仅限于400个单元。
–TC76
19年8月14日在20:01
#5 楼
一种替代方法是使用Google网站或允许嵌入iframe内容的任何其他内容编辑器。将Google电子表格嵌入到Google网站的页面中
创建新站点或转到现有站点。
创建新页面或单击现有页面上的编辑。
单击“插入”>“驱动器”>“电子表格”
选择电子表格
设置选项
单击保存
评论
您可以将电子表格中的图表复制并粘贴到文档中。但是尝试嵌入电子表格本身并没有运气。我已将此请求作为功能组提交给Google网上论坛的文档。