NamedRanges确实迷路了,所以他们不适合您的方案非常好。但是没有其他识别元素的方式(这是Google Docs的一个很大的错误特征)。
在图像的情况下,您可以使用它的LINK_URL来标识它,这似乎是Lucidchart使用的。它不妨碍用户的方式,所以它可能是一个很好的解决方案。
关于在插入图像时获取空白行并丢失属性,我想(因为您没有共享任何代码),您直接将图像插入文档正文而不是段落。然后会自动创建一个段落以包裹图像,从而导致空行和属性丢失。
下面是一些代码示例:
function initialInsert() {
var data = Charts.newDataTable().addColumn(
Charts.ColumnType.STRING, 'Fruits').addColumn(
Charts.ColumnType.NUMBER, 'Amount').addRow(
['Apple',15]).addRow(
['Orange',6]).addRow(
['Banana',14]).build();
var chart = Charts.newPieChart().setDataTable(data).build();
var body = DocumentApp.getActiveDocument().getBody()
body.appendImage(chart).setLinkUrl('http://mychart');
//here we're inserting directly in the body, a wrapping paragraph element will be created for us
}
function updateImage() {
var data = Charts.newDataTable().addColumn(
Charts.ColumnType.STRING, 'Fruits').addColumn(
Charts.ColumnType.NUMBER, 'Amount').addRow(
['Apple',Math.floor(Math.random()*31)]).addRow(//random int between 0 and 30
['Orange',Math.floor(Math.random()*31)]).addRow(
['Banana',Math.floor(Math.random()*31)]).build();
var chart = Charts.newPieChart().setDataTable(data).build();
var img = getMyImg(DocumentApp.getActiveDocument().getBody(), 'http://mychart');
//let's insert on the current parent instead of the body
var parent = img.getParent(); //probably a paragraph, but does not really matter
parent.insertInlineImage(parent.getChildIndex(img)+1, chart).setLinkUrl('http://mychart');
img.removeFromParent();
}
function getMyImg(docBody, linkUrl) {
var imgs = docBody.getImages();
for(var i = 0; i < imgs.length; ++i)
if(imgs[i].getLinkUrl() === linkUrl)
return imgs[i];
return null;
}
关于LINK_URL,当然你可以不喜欢Lucidchart确实并链接回你的网站。所以它不仅仅是为用户打破。
完美!链接策略就像一个魅力!即使用户移动图像,数据也会继续。而且,除此之外,即使在导出为pdf格式时,我也可以在图像上下文中找到关于图像的链接。非常感谢! :) – Mael 2014-10-28 16:33:08
顺便说一句,空白行正是因为如此,所以,当更换图像时,我也替换了自动创建的父级段落。再次感谢:) – Mael 2014-10-28 16:35:52
@mael链接也是我在[PlantUML Gizmo](https://sites.google.com/site/plantumlgizmo/)中使用的。您应该让用户知道,更改布局会默默删除链接(Google文档的另一个错误特征)。我把它放在我的FAQ中:https://sites.google.com/site/plantumlgizmo/learn#TOC-Can-I-update-the-source-of-PlantUML-diagrams- – Fuhrmanator 2014-11-04 22:21:25