问题是要擦除所有内容的段落,图像,表格或某些特定文本之后的内容(在我的情况下为“#PLACEHOLDER#”)。我是否需要遍历所有对象,还是可以在获得范围位置后清除所有内容?
var body = somedoc.getBody();
var range = body.findText("#PLACEHOLDER#");
var ele = range.getElement();
if (ele.getParent().getParent().getType() === DocumentApp.ElementType.BODY_SECTION) {
var offset = body.getChildIndex(ele.getParent());
}
我可以添加类似body.delteText(offset + 1)
或body.setText('',offset + 1)
的内容吗?
答案 0 :(得分:1)
#PLACEHOLDER#
段之后的正文中的所有子项。如果我的理解是正确的,那么该修改如何?请认为这只是几个答案之一。
在这种模式下,使用文档服务。
请进行如下修改。在此修改中,修改了if语句中的脚本。
从:var offset = body.getChildIndex(ele.getParent());
至:
var offset = body.getChildIndex(ele.getParent());
// Retrieve total number of children in the body.
var numChildren = body.getNumChildren();
// If the text of the last paragraph is cleared.
body.getChild(numChildren - 1).asParagraph().editAsText().setText("");
// The children from offset to the child before the last paragraph are removed.
for (var i = numChildren - 2; i > offset; i--) {
body.removeChild(body.getChild(i));
}
#PLACEHOLDER#
的段落不会被删除。如果您还想删除#PLACEHOLDER#
的段落,请进行如下修改。
for (var i = numChildren - 2; i > offset; i--) {
for (var i = numChildren - 2; i >= offset; i--) {
在这种模式下,使用Google Docs API。使用此脚本时,please enable Docs API at Advanced Google services。在这种情况下,将使用body.findText("#PLACEHOLDER#")
的结果,而不使用用于删除子项的for循环。
请进行如下修改。在此修改中,修改了if语句中的脚本。
从:var offset = body.getChildIndex(ele.getParent());
至:
var offset = body.getChildIndex(ele.getParent());
// Retrieve document.
var content = Docs.Documents.get(somedoc.getId()).body.content;
// Create request body.
var startIndex = content[offset + 1].paragraph.elements[0].endIndex;
var endIndex = content[content.length - 1].paragraph.elements[0].endIndex - 1;
var resource = {requests: [{deleteContentRange: {range: {startIndex: startIndex, endIndex: endIndex}}}]};
// Update document.
Docs.Documents.batchUpdate(resource, somedoc.getId());
#PLACEHOLDER#
的段落不会被删除。如果您还想删除#PLACEHOLDER#
的段落,请进行如下修改。
content[offset + 1].paragraph.elements[0].endIndex
content[offset].paragraph.elements[0].endIndex
如果我误解了您的问题,而这不是您想要的方向,我深表歉意。