GoogleSheets. Компонент для работы с Google таблицами.

Возможности
  • Cохранение форм
  • Cохранение заказов (minishop2)
  • Импорт ресурсов / товаров (minishop2)
  • Выгрузка данных из таблицы

Сниппеты
  • GoogleSheets (выгружает данные из таблицы)
  • GoogleSheetsSaveForm (хук для формы, для сохранение результатов)
Плагины
  • GoogleSheetsSaveOrder (плагин для сохранения заказов minishop2)
  • modifierTable (модификатор table)
Инструкция авторизации
1. Создаем проект
2. Создаем API ключ
  1. Выбираем API и сервисы
  2. Жмакаем Учетные данные.
  3. Переходим во вкладку «Окно запроса доступа OAuth»
  4. Придумываем и затем записываем название приложения
  5. Создаем учетные данные -> выбираем «Идентификатор клиента OAuth»
  6. Тип приложения = Другие типы
  7. Жмакаем кнопку создать
  8. Получаем client_id (Идентификатор клиента) и client_secret (Секрет клиента)
  9. Переходим в библиотеку API и включаем Google Sheets API
3. Записываем в системные настройки googlesheets_client_id = client_id и googlesheets_client_secret = client_secret
4. Переходим в верхнее меню: Приложения -> GoogleSheets
5. Жмакаем на кнопку справа «Авторизация»
6. Открывается новая вкладка для получения кода авторизации(если не открылась, значит всплывающие окна заблокированы, разблокируйте их)
7. Копируем код авторизации и записываем его в системную настройку googlesheets_auth_code
8. Жмакаем еще раз на кнопку «Авторизация» (см. п. 4,5)
9. Если не увидели сообщения, что Вы успешно авторизованы, значит что-то пошло не так или Вы где-то ошиблись.

Примеры:
### Сохранение данных с формы
{'!AjaxForm' | snippet: [
    'hooks' => 'spam,GoogleSheetsSaveForm,FormItSaveForm',
    'googleSheetsUri' => 'https://docs.google.com/spreadsheets/d/16eyRFL94Dtqm8hh0lBXVIpKGbw/edit#gid=0',
    'googleSheetsRange' => 'Data',
    'formFields' => 'name,email,message',
    'form' => 'tpl.AjaxForm.example'
]}
Чтобы сохранить данные из формы, нужно:
  1. Добавить хук GoogleSheetsSaveForm
  2. Добавить параметр googleSheetsUri = url таблицы
  3. Добавить параметр googleSheetsRange = название листа таблицы. Не название таблицы, а листа(находится внизу).
  4. Добавить параметр formFields = список полей для сохранения, через запятую
  5. Заполнить системную настройку googlesheets_form_fields = список полей, которые находятся в гугл таблице, через запятую.
Сохранение заказов
Переходим в системные настройки компонента.
— googlesheets_order_save = Да/Нет(сохранять заказы или нет)
— googlesheets_order_table = ссылка таблицы, в которую будем сохранять заказы
— googlesheets_order_range = лист таблицы
— googlesheets_order_fields = список полей для сохранения. Сохраняется по порядку.

Вывод заказов.
1. В виде таблицы. Используется модификатор table.
P.S. Сниппет GoogleSheets возвращает результат в виде массива.
<div class="table-responsive">
{'!GoogleSheets' | snippet: [
    'table' => 'https://docs.google.com/spreadsheets/d/16eyRFL94Dtqm8QQjYzwGbw/edit#gid=2059149967',
    'range' => 'Order'
] | table: 'table table-hover'}
</div>

2. Вывод заказов через шаблон(то есть, чанк)
P.S. Первая строка таблицы = название переменных.
<ul>
{'!GoogleSheets' | snippet: [
    'table' => 'https://docs.google.com/spreadsheets/d/16eyRFL94Dtqm8QpKGbw/edit#gid=2059149967',
    'range' => 'Order'
    'tpl' => '@INLINE <li>{$receiver} - {$email}</li>'
]}
<ul>

Импорт ресурсов / товаров
1. Переходим в верхнее меню Приложения -> GoogleSheets
2. Жмакаем на создать импорт.
3. Заполняем все поля:
— URl таблицы
— Лист (название листа таблицы)
— Тип ресурса (modResource || msProduct)
— Уникальное поле, по которому будет проверяется ресурс/товар.
— Настройка импорта ( Default || Create || Update)
  • Default (создает новые ресурсы и обновляет существующие)
  • Create (только создает новые ресурсы)
  • Update (только обновляет ресурсы)
4. Жмакаем правой кнопкой на необходимой строке (импорте) и импортируем данные.

P.S. Первая строчка в гугл таблице = название полей ресурса.
Если уникальное поле не было создано в таблице, значит будет создан новый ресурс. Но если ресурс с таким названием уже есть, то ресурс не будет создан.

Ссылка на компонент
Aleksandr Huz
30 октября 2018, 23:04
modx.pro
4
3 107
+11
Поблагодарить автора Отправить деньги

Комментарии: 18

Артем
13 мая 2019, 09:27
0
Через компонент можно импортировать товары со своими полями?
    Артем
    13 мая 2019, 09:41
    0
    И можно ли запускать все это дело по крону?
      Artur Plugin
      13 мая 2019, 10:07
      0
      есть там в гугл сервисах свой крон. будет дергать апи на сайте. но его писать надо.

      сложно кажется с ключом доступа, можно сделать все намного проще.
      у меня это это тоже все есть по кусочкам и импорт и чтение таблицы по токену скрипта js (он как пароль) и все бесплатно ;)
        Артем
        13 мая 2019, 10:32
        0
        знаю, но меня интересует крон на сайте.
          Artur Plugin
          14 мая 2019, 03:47
          0
          ну если есть доступ к консоли или из панели можно, то запросто. Но вот у меня на беспл. хосте нет такого. Какая разница откуда этот файл дергать если там ненадолго по времени,
          Делай документ, туда сниппет. таймаут побольше, из пхп вызов этого документа по урл и все. Можно вызывать сниппет прямо из пхп если умеешь, это посложнее но возможно. И этот компонент тут совсем ни причем, это универсальная задача для всего.
        Aleksandr Huz
        13 мая 2019, 12:02
        0
        Крон, еще не реализован.
        Aleksandr Huz
        13 мая 2019, 12:03
        0
        А как эти поля будут реализованы?
        Если они будут находится в таблице ms2_products тогда можно.
      Андрей Невский
      11 ноября 2019, 14:34
      0
      Приветствую! Хочу уточнить один момент перед покупкой GoogleSheets. У меня 10 интернет магазинов на MODX с бесплатным minishop2. Мне нужно сделать лёгкую загрузку товаров на сайт и дальнейшую правку при необходимости. К примеру я не на сайте, а в едином екселе вношу правку в цену к примеру и загружаю его на все сайты (по очереди). Такое возможно с GoogleSheets?
        Aleksandr Huz
        11 ноября 2019, 17:49
        0
        Добрый день, Андрей! Да, если для каждого сайта вы подключите одну и туже таблицу.
        varanika
        23 декабря 2019, 14:14
        0
        Так все таки при стандартном импорте ресурсов, как импортировать дополнительные поля, особенно с json или путем к картинке (да еще, чтобы она отобразилась в гугле как картинка, а не как ссылка)? Есть такая возможность?
          Aleksandr Huz
          23 декабря 2019, 15:39
          0
          Указываете в настройках импорта дополнительное поле:tv10, где 10 — id дополнительного поля.
          Для json указываете значение через запятую.

          да еще, чтобы она отобразилась в гугле как картинка, а не как ссылка
          Хорошая идея. Посмотрю что можно сделать.
            Aleksandr Huz
            07 апреля 2020, 20:08
            0
            да еще, чтобы она отобразилась в гугле как картинка, а не как ссылка
            Отобразить картинку можно только если она загружена в google drive
            Купчинский Михаил
            11 января 2022, 13:33
            0
            Добрый день!

            Столкнулся с такой проблемой при работе компонента.
            Если при экспорте в «поля экспорта» вводятся 2 поля с опциями (id, guid, option.dopchars, option.socle), то экспорт не проходит
            выскакивает ошибка:

            ext-base.js:21 POST assets/components/googlesheets/connector.php 500 (Internal Server Error)

            Если одно поле с опциями, то все нормально экспортируется.
              Aleksandr Huz
              11 января 2022, 22:21
              0
              Добрый день!
              Напишите в ТП, проверю.
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            18