AG & Dev

Использование Google-таблиц для публикации информации на сайте

7 августа 2023 г.

Другие статьи

Dockerfile для Keystone CMS 6
Dockerfile и compose.yaml для развёртывания Keystone CMS 6
Аутентификация в Keystatic CMS
Настройка аутентификации в Keystatic CMS (Local mode) в проекте Next.js
Валидация и обработка формы на сервере
Валидация и обработка формы на сервере при помощи React-хука useActionState
Глобальное состояние в React
Глобальное состояние в React без подключения сторонних библиотек
Яндекс Карты в проекте Next.js
Подключение Яндекс Карты (API 3) к проекту Next.js (App Router)
Подключение к Headless CMS из Next.js
Пример подключения к Headless CMS (Wordpress) из приложения Next.js посредством REST API
Устранение FOUC в Next.js
Устранение FOUC-эффекта при использовании тёмной темы сайта в Next.js
Подключение Payload CMS к проекту Next.js
Как подключить Payload CMS к существующему проекту Next.js
Создание своего Rehype-плагина
Создание Rehype-плагина для корректировки HTML-кода при конвертировании из Markdown
Все статьи

Технологический стек

AG & Dev

Разработка быстрых и надёжных веб-сайтов на базе самых современных технологий

Профиль на GitHub

Инструменты

React
Next.js
Tailwind

Платформы

Node.js
Docker
Nginx

CMS

Directus
Keystone
Keystatic

Иногда необходимо дать владельцу сайта возможность оперативно обновлять некоторую актуальную информацию на сайте, для редактирования которой нет смысла устанавливать и настраивать полноценную CMS. В таком случае, в качестве CMS, можно задействовать обычную Google-таблицу.

Далее я покажу как автоматически подгружать информацию из Google-таблицы для дальнейшей публикации на сайте.

1. Пример таблицы с информацией о сериалах:

Пример Google-таблицы

2. Выдаём права на редактирование таблицы только владельцу и/или редакторам сайта:

Выдача прав на редактирование таблицы

3. Публикуем таблицу в Интернете:

Публикация таблицы в Интернете

4. В настройках публикации указываем какой лист из таблицы нужно опубликовать и в каком формате. Формат публикации – CSV. Кроме того, необходимо убедиться, что включена опция «Автоматически публиковать после внесения изменений»:

Настройка публикации таблицы

5. После нажатия на кнопку «Опубликовать» копируем публичную ссылку на опубликованную таблицу в формате CSV:

Получение ссылки на таблицу

6. Простейший пример кода для загрузки и парсинга информации из Google-таблицы:

javascript
const serials = async () => {
  const response = await fetch(
    "https://docs.google.com/spreadsheets/d/e/.../pub?gid=0&single=true&output=csv",
  );
  if (response.ok) {
    const text = await response.text();
    const rows = text.split("\r\n");
    return rows.map((row) => {
      const fields = row.split(",");
      return {
        name: fields[0],
        original: fields[1],
        year: fields[2],
        genres: [fields[3], fields[4]],
        country: fields[5],
        rating: fields[6],
      };
    });
  } else {
    console.log(response.status);
    return [];
  }
};

В результате выполнения этого кода переменная serials будет содержать массив объектов, каждый из которых будет включать информацию об одном сериале.

Теперь информацию о сериалах можно вывести на любой странице сайта путём перебора массива serials в цикле. В идеале, для этого лучше использовать реактивный фреймворк (React, Vue, Svelte, Alpine и т.п.), но можно обойтись и ванильным JS. Перед публикацией массив serials можно отфильтровать по требуемым критериям и/или упорядочить по любому из столбцов.