body.findText () не возвращает то, что искали - PullRequest
0 голосов
/ 15 июня 2019

Я создаю скрипт Google Apps, который создает модульную документацию. Управление осуществляется через несколько вкладок в электронной таблице Google. Он в основном объединяет небольшие исходные документы в больший документ на основе записей в различных листах. Лист Groups контролирует добавление основных разделов. Лист Tables контролирует добавление подразделов в один из основных разделов. У меня основные разделы работают нормально, но функция, управляющая подразделами, не может правильно найти заголовок подраздела в документе. Он находит индекс абзаца предыдущего раздела примерно за 20 абзацев до появления искомого текста. Проблема, кажется, с линией var foundTag = body.findText(sectionToUpdate); он не возвращает правильное расположение текста в документе.

Когда я регистрирую sectionToUpdate, это правильный заголовок раздела. Если я скопирую текст из журнала и вручную выполню поиск документа, он найдет его правильно. Когда я записываю текст из paragraphIndex, найденного поиском, он возвращает значение «01», которое является записью таблицы из предыдущего раздела.

function updateTablesSection(groupName) //for updating table insertion instructions
{
  var app = SpreadsheetApp.getActiveSpreadsheet();

  var groupsSheet = app.getSheetByName("Groups");
  var tablesSheet = app.getSheetByName("Tables");
  var groupDocumentsSheet = app.getSheetByName("Group Documents");

  var sectionToUpdate = "Adding a user to ";

  sectionToUpdate = sectionToUpdate + tablesSheet.getRange(5,1).getValue();
  Logger.log(sectionToUpdate);

  var destinationDoc = getDoc(groupDocumentsSheet, groupName);
  var body = destinationDoc.getBody();
  var foundTag = body.findText(sectionToUpdate);

  if (foundTag != null) //if the section exists in the destination doc
  {
    var tagElement = foundTag.getElement();
    var parent = tagElement.getParent();
    var paragraphIndex = parent.getParent().getChildIndex(parent); //gets the section to update's paragraph index. This marks the header of the section.
    var paragraphArray = body.getParagraphs();

    Logger.log(tagElement);
    Logger.log(parent);
    Logger.log(paragraphIndex);
    Logger.log(tagElement);

    Logger.log(paragraphArray[paragraphIndex].getText());
    paragraphIndex++;
    Logger.log(paragraphArray[paragraphIndex].getText());
    paragraphIndex++;
    Logger.log(paragraphArray[paragraphIndex].getText());
    paragraphIndex++;
    Logger.log(paragraphArray[paragraphIndex].getText());
    paragraphIndex++;
    Logger.log(paragraphArray[paragraphIndex].getText());
    paragraphIndex++;
    Logger.log(paragraphArray[paragraphIndex].getText());
    paragraphIndex++;
    Logger.log(paragraphArray[paragraphIndex].getText());

    paragraphIndex++;
    Logger.log(paragraphArray[paragraphIndex].getText());
    paragraphIndex++;
    Logger.log(paragraphArray[paragraphIndex].getText());
    paragraphIndex++;
    Logger.log(paragraphArray[paragraphIndex].getText());
    Logger.log(paragraphIndex);

  }

}//end function updateTablesSection

function getDoc(sheet, name) //This function takes in a sheet and a string. returns a doc. name must be in a list in column one of the sheet. column 2 contains doc IDs
{
 var k = 2;
 var ID = "";
 var fileIterator = "";
 var url = "";              

 while(k <= sheet.getLastRow())
 {
   if (name == sheet.getRange(k, 1).getValue())
   {
    ID = sheet.getRange(k, 2).getValue();
    fileIterator = DriveApp.getFileById(ID);
    url = fileIterator.getUrl();
    return (DocumentApp.openByUrl(url));
   }
   k++;
 }
} //end function getDoc

А вот и зарегистрированный вывод

[19-06-15 15:50:44:930 PDT] Adding a user to user_permit
[19-06-15 15:50:45:991 PDT] Text
[19-06-15 15:50:45:991 PDT] Paragraph
[19-06-15 15:50:45:991 PDT] 100.0 <-- it returns this index number
[19-06-15 15:50:45:992 PDT] Text
[19-06-15 15:50:45:992 PDT] 
[19-06-15 15:50:45:992 PDT] 01
[19-06-15 15:50:45:993 PDT] ALL
[19-06-15 15:50:45:993 PDT] -1
[19-06-15 15:50:45:994 PDT] <site number>
[19-06-15 15:50:45:994 PDT] LASTNAME.FIRSTNAME
[19-06-15 15:50:45:994 PDT] NOTE: There should be no pipes at the beginning or end of the Contact field
[19-06-15 15:50:45:995 PDT] Press Number Pad Enter to append and Number Pad * to save the row
[19-06-15 15:50:45:995 PDT] Fill in your template with the database table
[19-06-15 15:50:45:996 PDT] Adding a user to user_permit
[19-06-15 15:50:45:996 PDT] 109.0 <--this index number is where the value actually is
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...