我正在尝试在Google文档中获取ListItem
的父ListItem
。 getParent()
函数获取整个列表的父元素(例如正文),而不是父列表项。
如果我有:
对于“List item”元素,我希望返回的父元素是“Parent list item”元素。 “父列表项”的父级将为空。
关于如何做到这一点的任何想法?
答案 0 :(得分:2)
正如您所注意到的那样,没有任何方法能够满足您的需求。因此,您只需要使用提供的功能将某些内容放在一起。
这里快速尝试实现一个函数,给定一个列表项返回父列表项(如果找到)。否则,如果找不到父列表项(即只包含多个缩进项的列表)或者它已经位于顶部缩进级别,则返回null
。
function getParentListItem(listItem) {
if (listItem.getType() != DocumentApp.ElementType.LIST_ITEM) {
return null;
}
var currentNestingLevel = listItem.getNestingLevel();
if (currentNestingLevel == 0) {
return null;
}
var sibling = listItem.getPreviousSibling();
while (sibling) {
var siblingNestedLevel = sibling.getNestingLevel();
if (siblingNestedLevel < currentNestingLevel) {
return sibling;
}
sibling = sibling.getPreviousSibling();
}
return null;
}
我使用包含此内容的文档进行了测试:
Not a list.
- Item 1
- Item 2
- Nested Item 1
- Nested Item 2
- Double Nested Item 1
- Item 3
Not a list.
- List 2 Item 1
- List 2 Nested Item 1
使用此功能:
function test_getParentListItem() {
var body = DocumentApp.getActiveDocument().getBody();
for (var i = 0; i < body.getNumChildren(); i++) {
var child = body.getChild(i);
if (child.getType() != DocumentApp.ElementType.LIST_ITEM) {
Logger.log("Not a list item.");
continue;
}
Logger.log("Looking up parent list item for: " + child.getText());
var parentItem = getParentListItem(child);
if (parentItem != null) {
Logger.log("Parent list item: " + parentItem.getText());
} else {
Logger.log("No parent item found.");
}
}
}
导致此日志输出:
[18-06-17 16:59:15:513 PDT] Not a list item
[18-06-17 16:59:15:515 PDT] Looking up parent list item for: Item 1
[18-06-17 16:59:15:516 PDT] No parent item found.
[18-06-17 16:59:15:518 PDT] Looking up parent list item for: Item 2
[18-06-17 16:59:15:519 PDT] No parent item found.
[18-06-17 16:59:15:524 PDT] Looking up parent list item for: Nested Item 1
[18-06-17 16:59:15:527 PDT] Parent list item: Item 2
[18-06-17 16:59:15:528 PDT] Looking up parent list item for: Nested Item 2
[18-06-17 16:59:15:531 PDT] Parent list item: Item 2
[18-06-17 16:59:15:533 PDT] Looking up parent list item for: Double Nested Item 1
[18-06-17 16:59:15:536 PDT] Parent list item: Nested Item 2
[18-06-17 16:59:15:538 PDT] Looking up parent list item for: Item 3
[18-06-17 16:59:15:539 PDT] No parent item found.
[18-06-17 16:59:15:541 PDT] Not a list item
[18-06-17 16:59:15:543 PDT] Looking up parent list item for: List 2 Item 1
[18-06-17 16:59:15:544 PDT] No parent item found.
[18-06-17 16:59:15:546 PDT] Looking up parent list item for: List 2 Nested Item 1
[18-06-17 16:59:15:549 PDT] Parent list item: List 2 Item 1