appsscript містить усе, що стосується сервісів Google. Це та частина бібліотеки, яка працює лише всередині середовища Apps Script, — що це означає для тестів, розібрано в Середовище виконання Apps Script.
Пакети
Пакет
Містить
appsscript/base
спільні помічники для решти пакетів сервісів
appsscript/admin
сервіс Admin SDK Directory
appsscript/sheet
Таблиці: рядки, стовпці, нотація A1, GridRange, перевірки типів
appsscript/slide
Презентації: пошук слайдів, заміна тексту, перетворення Markdown
appsscript/net
автентифікацію запитів
appsscript/ui
вбудовані класи Ui, HtmlOutput і TextOutput
appsscript/doc, appsscript/drive, appsscript/form
зарезервовані, поки не реалізовані
Нотація A1
parseA1Notation перетворює рядок нотації на GridRange — простий об'єкт із межами від нуля та невключеною правою межею, як у Sheets API, а не позиціями від одиниці, які приймають методи Range:
У вжитку дві схеми нумерації, і імена функцій кажуть, яку саме вони повертають. Індекс рахується від нуля, як у GridRange; позиція — від одиниці, як у Sheet.getRange():
Вони пишуть за один виклик, а не порядково, — це різниця між одним походом до сервісу й походом на кожен рядок. Усі рядки мають бути однієї довжини; перевірити це заздалегідь допомагає isConsistent2DArray з lang.
Перевірки типів для об'єктів сервісів
Та сама домовленість, що й у всій бібліотеці, застосована до класів Apps Script:
import { isSheet, isSpreadsheet, isRange, requireSheet } from "apps-script-utils";
function rowCount(value: unknown): number {
return requireSheet(value).getLastRow();
}
requireSheet, requireSpreadsheet і requireRange кидають InvalidSheetException, InvalidSpreadsheetException та InvalidRangeException відповідно — дивіться Обробка винятків.
Презентації
import { getSlideByIndex, findReplaceAllTextInSlide, requireSlide } from "apps-script-utils";
const presentation = SlidesApp.getActivePresentation();
// getSlideByIndex повертає null, якщо індекс поза межами, тому його поєднують
// з requireSlide там, де відсутність слайда має зупинити скрипт.
const slide = requireSlide(getSlideByIndex(presentation, 0));
findReplaceAllTextInSlide(slide, "{{name}}", "Ada Lovelace");
findReplaceAllTextInSlide повертає кількість зроблених замін і типово враховує регістр; передайте false четвертим аргументом для пошуку без урахування регістру. requireSlide кидає SlideNotFoundException, якщо значення не є слайдом.
Admin SDK
import { isAdmin } from "apps-script-utils";
if (isAdmin()) {
Logger.log("Access granted to admin panel.");
}
isAdmin повертає false, якщо сервіс Admin SDK Directory не увімкнено в проєкті, записуючи причину в журнал, а не кидаючи виняток. Виклик тому безпечний навіть під час побудови меню, але false сам по собі ще не доводить, що користувач не адміністратор. Увімкніть розширений сервіс, перш ніж покладатися на відповідь.