【发布时间】:2018-03-30 08:37:43
【问题描述】:
我正在尝试将图像从附加组件插入到 Google 文档(稍后将使用其他 GSuite 应用程序)。当 getCursor() 返回有效位置时,我已成功获取图像并将其插入。当有一个选择(而不是光标)时,如果它是通过走到所选文本的父级并在段落开头插入图像来选择的文本(不完美,但可以),我可以成功。
更新:似乎我使用了一种已弃用的方法 (getSelectedElements()),但这并没有解决问题。似乎问题也仅限于 wrapped 图像(我没有意识到当您将其更改为包装文本时对象的类型发生了变化)。
但是,当一个包装文本图像(可能是 PositionedImage)被突出显示(旋转和调整大小手柄以蓝色可见)时,getSelection() 和 getCursor() 都会返回 null。这是一个问题,因为我希望能够获取该图像并将其替换为我正在插入的图像。
这是我的代码...任何帮助都会很棒。
var response = UrlFetchApp.fetch(imageTokenURL);
var selection = DocumentApp.getActiveDocument().getSelection();
if (selection)
{
Logger.log("Got Selection");
var replaced = false;
var elements = selection.getRangeElements();
if (elements.length === 1
&& elements[0].getElement().getType() === DocumentApp.ElementType.INLINE_IMAGE)
{
//replace the URL -- this never happens
}
//otherwise, we take the first element and work from there:
var firstElem = elements[0].getElement();
Logger.log("First Element Type = " + firstElem.getType());
if (firstElem.getType() == DocumentApp.ElementType.PARAGRAPH)
{
var newImage = firstElem.asParagraph().insertInlineImage(0, response);
newImage.setHeight(200);
newImage.setWidth(200);
}
else if (firstElem.getType() == DocumentApp.ElementType.TEXT)
{
var p = firstElem.getParent();
if (p.getType() == DocumentApp.ElementType.PARAGRAPH)
{
var index = p.asParagraph().getChildIndex(firstElem);
var newImage = p.asParagraph().insertInlineImage(index, response);
newImage.setHeight(200);
newImage.setWidth(200);
}
}
} else {
Logger.log("Checking Cursor");
var cursor = DocumentApp.getActiveDocument().getCursor();
if (cursor)
{
Logger.log("Got Cursor: " + cursor);
var newImage = cursor.insertInlineImage(response);
var p = cursor.getElement();
var size=200;
newImage.setHeight(size);
newImage.setWidth(size);
}
}
【问题讨论】:
标签: image google-apps-script google-docs