由于Google Docs中缺少清单功能,因此我正在编写代码脚本,以根据属于列表的每个列表项的符号自动计算列表的完成百分比。为此,我要检索与listID相关的所有listItem,然后尝试检查其GLYPH_TYPE属性,以区分已完成的项目(用户可以通过单击列表项目左侧的符号并进行更改来指示哪些内容)到选中标记)。问题是,当尝试获取属于给定listID的所有列表项时,如果更改列表项前面的符号,则ID是不同的(换句话说,GLYPH_TYPE属性是不同的)。
尽管列表与用户是一致的,(列表看起来像是一个清单,其中有些项目是完整的,而有些则没有),但由于嵌入了Google功能,我无法简单地用getListID()方法在代码中标识该列表当GLYPH_TYPE属性与其他listItems不同时,它会自动标识一个不同的列表。
下面是我用来尝试获取属于特定listID的所有listItem,然后返回数组中的相应listItem进行统计分析的方法:
function getAllListItemsInList(listID,documentID){
var doc = DocumentApp.openById(documentID);
var body = doc.getBody();
var listItems = body.getListItems();
var listItemsWithID = [];
for(var i = 0; i< listItems.length; i++){
Logger.log(listItems[i].getListId());
if(listItems[i].getListId() == listID){
listItemsWithID.push(listItems[i]);
}
}
return listItemsWithID;
}
如果您在5个listItem的相关列表上运行此方法,其中有一个带有复选标记(而不是项目符号点)作为标志符号类型,则会记录并返回以下内容;
记录并返回以下内容;
[19-01-22 15:44:04:885 MST] kix.jbwvso8omgk3
[19-01-22 15:44:04:886 MST] kix.jbwvso8omgk3
[19-01-22 15:44:04:886 MST] kix.mvpj0m62r3h8
[19-01-22 15:44:04:887 MST] kix.jbwvso8omgk3
[19-01-22 15:44:04:888 MST] kix.jbwvso8omgk3
[19-01-22 15:44:04:888 MST] [ListItem, ListItem, ListItem, ListItem]
如您所见,仅返回4个项目,而不是5个。5个listItem中有4个具有相同的listID,而具有不同字形类型的listID则没有。
有一个直观的解决方法吗?还是一种更直观的方式来跟踪Google文档中“清单”的完成情况?