Короткий пост про создание, подключение и использование библиотек в гугл скриптах. Больше нечего написать для вводной части. Го создавать
Создание библиотеки
Создаем новую гугл таблицу. Открываем редактор скриптов
![](https://habrastorage.org/getpro/habr/upload_files/45d/1b4/fc4/45d1b4fc496078f0f1aef6db2e9a5024.png)
В открывшемся редакторе напишем любую функцию, которая вам нравится. Я напишу функцию поиска значения в таблице по ключу.
function getInd(key,sheet,col) {
let lr = sheet.getLastRow();
let chat_id_arr = sheet.getRange(1,col,lr).getValues();
chat_id_arr = chat_id_arr.flat();
let ind = chat_id_arr.indexOf(key);
return ind;
}
Передаю собственно ключ, лист, на котором надо искать, и номер колонки.
Лично мне в функции все понятно, но будем предусмотрительными и задокументируем ее.
Для этого перед функцией прописываем комментарий:
/**
* Returns an index of the key in the sheet's column
*
* @param {number} key The key for searching
* @param {SpreadsheetApp.Sheet} sheet The variable containing link to the sheet
* @param {number} col The number of the column for searching
* @return {number} ind index of the key in the table if table includes a header or index of position in the array
*/
В первой строке говорим, что функция делает. Далее описываем параметры: тип параметра заключаем в фигурные скобки, за скобками - имя параметра, далее - описание.
В последней строке добавим описание возвращаемого результата, следуя той же логике, что и при определении параметров.
В результате получаем что-то вроде этого:
/**
* Returns an index of the key in the sheet's column
*
* @param {number} key The key for searching
* @param {SpreadsheetApp.Sheet} sheet The variable containing link to the sheet
* @param {number} col The number of the column for searching
* @return {number} ind index of the key in the table if table includes a header or index of position in the array
*/
function getInd(key,sheet,col) {
let lr = sheet.getLastRow();
let chat_id_arr = sheet.getRange(1,col,lr).getValues();
chat_id_arr = chat_id_arr.flat();
let ind = chat_id_arr.indexOf(key);
return ind;
}
Сохраняем код и деплоим.
![](https://habrastorage.org/getpro/habr/upload_files/93d/3f2/9cd/93d3f29cdcac8bbd87b04784f07cdd70.png)
Открывается окно New deployment. Здесь кликаем на шестеренку и выбираем Library
![](https://habrastorage.org/getpro/habr/upload_files/b49/1bd/09d/b491bd09dda2e0bff20c352f413193fb.png)
Добавляем описание и кликаем Deploy
![](https://habrastorage.org/getpro/habr/upload_files/5b0/eef/147/5b0eef14757bf3f7069840899c80f156.png)
После деплоя получаем ссылку и копируем ее.
![](https://habrastorage.org/getpro/habr/upload_files/b7f/36d/cfe/b7f36dcfea561100b2163fcf1fcc7a6a.png)
Из полученного URL нам нужен только id (выделено в ссылке)
Подключение библиотеки
Открываем гугл таблицу и скрипт, из которого хотим вызывать функции из созданной библиотеки. Во вкладке Libraries кликаем на "+"
![](https://habrastorage.org/getpro/habr/upload_files/549/555/448/54955544874eebed44f3758131d373e9.png)
Вставляем ТОЛЬКО id из URL в строку и кликаем Look up.
![](https://habrastorage.org/getpro/habr/upload_files/a90/211/566/a90211566d8f182d8d06fd4ef44ea982.png)
Если все успешно, видим сообщение и два дополнительных поля.
![](https://habrastorage.org/getpro/habr/upload_files/148/a6d/878/148a6d878c3dd3b310872b8994749f8d.png)
В последней строке указываем идентификатор нашей библиотеки, по которому мы будем к ней обращаться в коде.
![](https://habrastorage.org/getpro/habr/upload_files/3b8/8ba/3a1/3b88ba3a19eebafcb35d0358f35a2720.png)
Возвращаемся к скрипту. Слева во вкладке Libraries видим идентификатор подключенной библиотеки. Когда обращаемся к библиотеке в коде, сразу видим список доступных в этой библиотеке функций (у нас она пока одна)
![](https://habrastorage.org/getpro/habr/upload_files/834/2e6/87f/8342e687ff1ff30bab44066c69d26fe6.png)
При выборе функции сразу видим ее описание.
![](https://habrastorage.org/getpro/habr/upload_files/79f/016/adc/79f016adce4779b5ddc60389907d3c8c.png)
Таким образом, мы создали библиотеку с задокументированной функцией. Аналогично в эту же библиотеку можно добавить другие функции и описание к ним.
Надеюсь, для кого-то пост может быть полезным :-) Спасибо за внимание, жду фидбека.