Скрипт включает в себя несколько функций:
Имя функции: onOpen().
Эта функция выполняется при открытии пользователем файла таблицы. Она добавляет в верхнюю панель меню "Сгенерировать библиотеку", пункты меню-кнопки и добавляет обработчики событий нажатия на эти кнопки.
Имя функции: makeConnectors().
Данная функция работает с листом "Кабели". Эта функция через API получает количество заполненных строк в таблице и циклом проходит по всем строкам, считывает значения из столбцов "from", "to", "type", "cable Name", "display Name" и подставляет их в соответствующее место в генерируемой XML строке. После генерации строки для всех описанных в таблице кабелей полученная строка оборачивается во внешние теги XML. Далее итоговая строка записывается в файл на гугл-диске (/generated libs/cable_lib.xml) и отправляется на сервер.
Имя функции: makeObjects().
Данная функция работает с листами "Объекты" и "Порты". Вначале функция получает количество заполненных строк в таблице "Объекты", то есть количество объектов, которых необходимо сгенерировать. После этого функция проходит циклом по каждой строке и высчитывает геометрические размеры каждого объекта, исходя из количества портов каждого объекта, описанных в таблице "Порты", и их направленности (входы и двунаправленные порты помещаются слева, а выходы - справа). После этого функция записывает в генерируемую XML размеры объекта и его метаданные, которые описаны в таблице на листе "Объекты". Далее в XML объекта подставляются его порты вместе с их метаданными, которые считываются из листа "Порты". После генерации строки для всех описанных в таблице объектов полученная строка оборачивается во внешние теги XML. Далее итоговая строка записывается в файл на гугл-диске (/generated libs/object_lib.xml) и отправляется на сервер.
Имя функции: writeToFile().
Данная функция в качестве параметров принимает имя директории, в которую нужно записать строку, имя файла, в который нужно записать строку и строку, которую нужно записать. Через Google Drive API функция получает указатель на директорию с заданным именем, создает в ней файл с заданным именем и записывает в него переданную строку.
Имя функции: sendRequest().
Данная функция в качестве параметра принимает строку библиотеки, которую необходимо отправить. Функция формирует тело HTTP-запроса как объект JSON (ключ "xml" - значение строка библиотеки). После этого формируется сам запрос как объект JSON (ключ "method" - значение "post", ключ "payload" - значение сформированное тело запроса). Запрос отправляется на DNS адрес проекта draw.miem.hse.ru/libraries (на соответсвующий контроллер).