getListId () для listItems с использованием библиотеки DocumentApp для Google Apps Сценарий не распознает связные списки в документах? - PullRequest
0 голосов
/ 23 января 2019

Из-за отсутствия функциональности в Документах Google для контрольных списков я пишу кодовый скрипт для автоматического расчета процента заполнения списка на основе символа, присутствующего в каждом элементе списка, принадлежащем списку. Для этого я извлекаю все listItems, относящиеся к listID, а затем пытаюсь проверить их атрибут GLYPH_TYPE, чтобы определить, какие элементы были завершены (что пользователь указывает, щелкая символ слева от элемента списка и меняя его). к галочке). Проблема заключается в том, что при попытке получить все элементы списка, которые принадлежат данному списку ID, идентификатор меняется, когда символ перед элементом списка изменяется (другими словами, атрибут GLYPH_TYPE отличается.)

Несмотря на то, что список согласован для пользователя (список выглядит как контрольный список с некоторыми пунктами завершенными, а другие нет), я не могу просто идентифицировать список в коде с помощью метода getListID () из-за встроенной функциональности Google это автоматически определяет другой список, когда атрибут GLYPH_TYPE отличается от других listItems.

Ниже приведен метод, который я использую, чтобы попытаться получить все listItems, которые принадлежат конкретному listID, а затем вернуть соответствующие listItems в массив для статистического анализа:

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 элементов списка, в котором один из них имеет галочку в качестве типа глифа вместо маркера, регистрируется и возвращается следующее:

Следующее регистрируется и возвращается;

[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]

Как видите, вместо 5 возвращается только 4 элемента. 4 из 5 элементов listItems имеют одинаковый listID, а элемент с другим типом глифа - нет.

Есть ли интуитивный обходной путь? Или, возможно, более интуитивно понятный способ отслеживать заполнение «контрольных списков» в Документах Google?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...