Я пытался удалить некоторые абзацы в разделах «Заголовок» и «Тело» Google Do c, используя сценарии приложений Google ... однако, если абзац является последним абзацем в разделе, возникает исключение: Невозможно удалить последний абзац в разделе документа.
И все же это тот самый абзац, который я хочу удалить.
Я попытался объединить абзац с предыдущим абзацем, но, увы, он не работает - абзац остается.
Единственный эффективный способ достижения этой цели - удалить абзац вручную, поставив курсор в конце предыдущей строки и нажав «вперед» удалить. Это удаляет следующую строку без исключений и т. Д. c ... однако мне нужно автоматизировать это с помощью скрипта приложений - поэтому я спрашиваю, есть ли способ найти элемент в скрипте, а затем имитировать нажатие клавиши удаления из этой точки? Это скорее хак, но не вижу другого способа сделать это?
Примером может быть:
var foundElement = body.findText("Dialogue");
while (foundElement != null) {
// Get the text object from the element
var foundText = foundElement.getElement().asText();
// Where in the element is the found text?
var start = foundElement.getStartOffset();
var end = foundElement.getEndOffsetInclusive();
//PSUEDO CODE PRESS FORWARD DELETE TWICE FROM the **end** of the search phrase...
end.pressdelete(twice)
}
ОБНОВЛЕНИЕ:
Мне удалось удалить абзац заголовка, просматривая все заголовки в do c - очевидно, их может быть больше одного ...
Я все еще застрял, удаляя пустой пункт в таблице после диалога (скриншот 2) ...
var p = d.getBody().getParent();
var headers = [];
var footers = [];
// let's loop through all the child elements in the document including headers and footers etc...
for ( var i = 0; i < p.getNumChildren(); i += 1 ) {
var t = p.getChild(i).getType();
if ( t === DocumentApp.ElementType.BODY_SECTION ) continue; // not interested in the body
if ( t === DocumentApp.ElementType.HEADER_SECTION ) {
//OLD CODE FOR FIRST HEADER
if (headers.length > -1) {
headers.push(p.getChild(i).asHeaderSection())
}
var h = p.getChild(i).asHeaderSection().getText();
} else if ( t === DocumentApp.ElementType.FOOTER_SECTION ) {
var f = p.getChild(i).asFooterSection().getText();
}
}
function cleanHeaders(p) {
p.forEach(function(h, j, ar) {
var para = h.getParagraphs();
para.forEach(function(e, i, arr) {
var children = e.getNumChildren()
//Logger.log("::Children:: " + children);
if (children < 1) {
var t = e.getText();
var type = e.getType();
var parent = e.getParent();
var pChildren = parent.getNumChildren();
var childIndex = parent.getChildIndex(e);
//Logger.log("::Element::" + e + " ::Number:: " + i + " ::Type:: " + type + " ::Text:: " + t + " ::Children:: " + children + " ::Parent:: " + parent + " ::ParentChildren:: " + pChildren + " ::childIndex:: " + childIndex);
for ( var i = 0; i < parent.getNumChildren(); i += 1 ) {
Logger.log(parent.getChild(i));
if (i != 0) {
parent.getChild(i).asParagraph().merge();
}
}
if (parent != 'DocumentBodySection' && parent != 'HeaderSection') {
//e.getPreviousSibling().merge();
}
}
});
});
}
Logger.log("HEADERS: " + headers.length);
cleanHeaders(headers);