gpt4 book ai didi

google-apps-script - GAS是否可以立即替换getActiveDocument()。getSelection()?

转载 作者:行者123 更新时间:2023-12-01 01:02:54 28 4
gpt4 key购买 nike

我的用户在他的Gdoc中具有以下选择。

现在,他要从侧边栏中替换在文档上所做的选择。 GAS问题是是否可以一次执行此操作,例如:
var selection = DocumentApp.getActiveDocument().getSelection() selection.replace("newtext")还是我必须遍历selection.getRangeElements()才能删除它们(或替换它们),然后以某种方式将新文本放置在该位置?

最佳答案

不行,这是不可能的(如果可以,则没有记录)。

您必须遍历所选元素,主要是因为所选内容可能包含段落的一部分,从而迫使您进行管理。即只删除选定的部分。对于完整的选定元素,您可以将其完全删除(如图像)。

这是有关如何执行此操作的实现(我修改了Kaylan的Translate脚本的一部分,以正确替换图像和部分选定的段落。

function replaceSelection(newText) {
var selection = DocumentApp.getActiveDocument().getSelection();
if (selection) {
var elements = selection.getRangeElements();
var replace = true;
for (var i = 0; i < elements.length; i++) {
if (elements[i].isPartial()) {
var element = elements[i].getElement().asText();
var startIndex = elements[i].getStartOffset();
var endIndex = elements[i].getEndOffsetInclusive();
var text = element.getText().substring(startIndex, endIndex + 1);
element.deleteText(startIndex, endIndex);
if( replace ) {
element.insertText(startIndex, newText);
replace = false;
}
} else {
var element = elements[i].getElement();
if( replace && element.editAsText ) {
element.clear().asText().setText(newText);
replace = false;
} else {
if( replace && i === elements.length -1 ) {
var parent = element.getParent();
parent[parent.insertText ? 'insertText' : 'insertParagraph'](parent.getChildIndex(element), newText);
replace = false; //not really necessary since it's the last one
}
element.removeFromParent();
}
}
}
} else
throw "Hey, select something so I can replace!";
}

关于google-apps-script - GAS是否可以立即替换getActiveDocument()。getSelection()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21611174/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com