Я создаю скрипт 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