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