Как получить URL в Google Apps Script?

Что такое URL и зачем он нужен в Google Apps Script?

URL (Uniform Resource Locator) — это адрес ресурса в интернете. В Google Apps Script URL необходимы для:

Взаимодействия с веб-приложениями, созданными на основе скриптов.

Получения доступа к различным ресурсам Google (Sheets, Docs, Drive и т.д.).

Интеграции с внешними сервисами через API.

Создания ссылок для пользователей.

Например, URL веб-приложения позволяет пользователям запускать скрипт из браузера. URL файла на Google Диске позволяет предоставлять доступ к файлу другим пользователям или сервисам.

Обзор сервисов Google Apps Script для работы с URL

Google Apps Script предоставляет несколько сервисов для работы с URL:

ScriptApp: Для получения URL текущего скрипта как веб-приложения.

SpreadsheetApp, DocumentApp, SlidesApp, FormApp: Для получения URL активных документов Google (Sheets, Docs, Slides, Forms).

DriveApp: Для получения URL файлов на Google Диске.

Calendar: Для получения URL событий в Google Calendar (требует использования Calendar API).

Получение URL текущего скрипта/проекта

Использование `ScriptApp.getService().getUrl()` для получения URL веб-приложения

ScriptApp.getService().getUrl() возвращает URL веб-приложения, созданного на основе скрипта. Этот URL можно использовать для запуска скрипта из браузера.

/**
 * @OnlyCurrentDoc
 */

/**
 * Возвращает URL веб-приложения.
 * @return {string} URL веб-приложения.
 */
function getWebAppURL(): string {
  return ScriptApp.getService().getUrl();
}

Как опубликовать веб-приложение в Google Apps Script

Чтобы получить доступ к URL веб-приложения, его необходимо опубликовать. Для этого выполните следующие шаги:

В редакторе скриптов выберите «Развертывание» > «Новое развертывание».

Выберите тип развертывания «Веб-приложение».

Укажите описание.

Выберите, кто будет иметь доступ к веб-приложению.

Нажмите «Развернуть».

Авторизуйте приложение.

После развертывания будет сгенерирован URL веб-приложения.

Различные режимы доступа к веб-приложению (Только я, Все у кого есть ссылка, Все)

При публикации веб-приложения можно выбрать один из следующих режимов доступа:

«Только я»: URL будет доступен только вам.

«Все у кого есть ссылка»: URL будет доступен всем, у кого есть ссылка.

«Все»: URL будет доступен всем в интернете.

Рекомендуется выбирать режим доступа «Все у кого есть ссылка», если вы хотите, чтобы URL был доступен только определенным пользователям, но не всем в интернете.

Получение URL из Google Sheets, Docs, Slides и Forms

Получение URL активного Google Sheets с помощью `SpreadsheetApp.getActiveSpreadsheet().getUrl()`

/**
 * Возвращает URL активной Google Sheets таблицы.
 * @return {string} URL таблицы.
 */
function getActiveSpreadsheetURL(): string {
  return SpreadsheetApp.getActiveSpreadsheet().getUrl();
}

Получение URL активного Google Doc с помощью `DocumentApp.getActiveDocument().getUrl()`

/**
 * Возвращает URL активного Google Docs документа.
 * @return {string} URL документа.
 */
function getActiveDocumentURL(): string {
  return DocumentApp.getActiveDocument().getUrl();
}

Получение URL активного Google Slides с помощью `SlidesApp.getActivePresentation().getUrl()`

/**
 * Возвращает URL активной Google Slides презентации.
 * @return {string} URL презентации.
 */
function getActivePresentationURL(): string {
  return SlidesApp.getActivePresentation().getUrl();
}

Получение URL активной Google Forms с помощью `FormApp.getActiveForm().getUrl()`

/**
 * Возвращает URL активной Google Forms формы.
 * @return {string} URL формы.
 */
function getActiveFormURL(): string {
  return FormApp.getActiveForm().getUrl();
}
Реклама

Получение URL других ресурсов Google (Календарь, Диск и т.д.)

Получение URL файла на Google Диске с помощью `DriveApp.getFileById(id).getUrl()`

/**
 * Возвращает URL файла на Google Диске по его ID.
 * @param {string} fileId ID файла.
 * @return {string} URL файла.
 */
function getFileURL(fileId: string): string {
  try {
    const file = DriveApp.getFileById(fileId);
    return file.getUrl();
  } catch (e) {
    Logger.log('Файл не найден или нет прав доступа: ' + e);
    return null;
  }
}

Получение URL события Google Календаря (через Calendar API)

Для получения URL события Google Календаря необходимо использовать Calendar API. Сначала необходимо получить доступ к API, затем получить событие по его ID и получить ссылку на событие.

Пример: Допустим, у нас есть eventId события и calendarId календаря, в котором находится событие.

/**
 * Возвращает URL события Google Календаря.
 * @param {string} calendarId ID календаря.
 * @param {string} eventId ID события.
 * @return {string} URL события.
 */
function getCalendarEventURL(calendarId: string, eventId: string): string {
  try {
    const event = Calendar.Events.get(calendarId, eventId);
    return event.htmlLink;
  } catch (e) {
    Logger.log('Событие не найдено или нет прав доступа: ' + e);
    return null;
  }
}

Альтернативные способы получения URL связанных ресурсов

В зависимости от сервиса, могут существовать альтернативные способы получения URL связанных ресурсов. Например, можно использовать Search API для Google Drive, чтобы найти файлы по имени и получить их URL.

Обработка и манипуляция URL в Google Apps Script

Разбор URL на компоненты (протокол, хост, путь, параметры)

Google Apps Script не предоставляет встроенных функций для разбора URL на компоненты. Однако, можно использовать регулярные выражения или сторонние библиотеки для этой цели.

Добавление и изменение параметров в URL

Для добавления или изменения параметров в URL можно использовать обычные строковые операции. Например:

/**
 * Добавляет или изменяет параметр в URL.
 * @param {string} url Исходный URL.
 * @param {string} paramName Имя параметра.
 * @param {string} paramValue Значение параметра.
 * @return {string} URL с добавленным или измененным параметром.
 */
function setURLParameter(url: string, paramName: string, paramValue: string): string {
  const urlObject = new URL(url);
  urlObject.searchParams.set(paramName, paramValue);
  return urlObject.toString();
}

// Пример использования:
const originalURL = 'https://example.com/path?param1=value1';
const newURL = setURLParameter(originalURL, 'param2', 'value2');
Logger.log(newURL); // Вывод: https://example.com/path?param1=value1&param2=value2

Кодирование и декодирование URL

Для кодирования и декодирования URL можно использовать встроенные функции encodeURIComponent() и decodeURIComponent().

/**
 * Кодирует строку для использования в URL.
 * @param {string} str Исходная строка.
 * @return {string} Закодированная строка.
 */
function encodeURL(str: string): string {
  return encodeURIComponent(str);
}

/**
 * Декодирует строку из URL.
 * @param {string} str Закодированная строка.
 * @return {string} Декодированная строка.
 */
function decodeURL(str: string): string {
  return decodeURIComponent(str);
}

// Пример использования:
const encodedString = encodeURL('Пример строки с пробелами');
Logger.log(encodedString); // Вывод: %D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8%20%D1%81%20%D0%BF%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%D0%B0%D0%BC%D0%B8

const decodedString = decodeURL(encodedString);
Logger.log(decodedString); // Вывод: Пример строки с пробелами

Добавить комментарий