我正在尝试使用Google文档中包含的脚本从网址加载图片并将其插入光标位置,但使用cursorPos.insertInlineImage(image)
插入图片会出现错误We're sorry, a server error occurred. Please wait a bit and try again
< / p>
使用getBody().appendImage(image)
插入图片或使用cursorPos.insertText("hello")
插入文字可以正常使用。
function onOpen(e) {
var ui = DocumentApp.getUi();
ui.createMenu("Test")
.addItem("Insert", "insertTest")
.addToUi();
}
function insertTest() {
var doc = DocumentApp.getActiveDocument();
var image = UrlFetchApp.fetch("http://latex.codecogs.com/gif.latex?E%3Dmc%5E2").getBlob();
var cursorPos = doc.getCursor();
doc.getBody().appendImage(image); // works
cursorPos.insertText("test!"); // works
cursorPos.insertInlineImage(image); // gives error
}
答案 0 :(得分:3)
我很高兴地说找到了一个简单的解决方法!
function insertTest() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var image = UrlFetchApp.fetch("http://latex.codecogs.com/gif.latex?E%3Dmc%5E2").getBlob();
var cursorElement = doc.getCursor().getElement();
body.insertImage(body.getChildIndex(cursorElement), image);
}
不幸的是,如果光标位于段落内,则会抛出一个错误,指出cursorElement不是body的子节点。解决方案是将cursorElement的最高级别父级传递给getChildIndex。
function insertTest() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var image = UrlFetchApp.fetch("http://latex.codecogs.com/gif.latex?E%3Dmc%5E2").getBlob();
var cursorElement = doc.getCursor().getElement();
body.insertImage(body.getChildIndex(getTopLevelParent(cursorElement)), image);
}
// get the uppermost level parent of an element within a body section
function getTopLevelParent(element) {
var parent = element.getParent();
if (parent.getType() == DocumentApp.ElementType.BODY_SECTION) {
return element;
} else {
return getTopLevelParent(parent);
}
}
答案 1 :(得分:0)
这是一个稍微简单的解决方法。
我们的想法是将图像附加到文档正文的末尾,然后将其移动到光标位置。
在这个过程中,无论是关于阻止insertInlineImage
之前工作的原始codecogs图像被删除,每个人都很高兴!
function insertTest() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var image = UrlFetchApp.fetch(
"http://latex.codecogs.com/gif.latex?E%3Dmc%5E2")
.getBlob();
var cursorPos = doc.getCursor();
var imageCopy = (image = body.appendImage(image)).copy();
cursorPos.insertInlineImage(imageCopy);
image.removeFromParent();
}