使用适用于Google Apps Script的DocumentApp库的listItem的getListId()无法识别文档中的连贯列表吗?

时间:2019-01-22 22:49:22

标签: google-apps-script google-docs google-apps google-docs-api

由于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文档中“清单”的完成情况?

0 个答案:

没有答案