GoogleSheets

Компонент для работы с Google таблицами.
Автор дополнения
Boshnik
Пакетов
4
Закачек
69
Обычно отвечает в течение суток
Автор дополнения
Пакетов
4
Закачек
69
Обычно отвечает в течение суток
Версия 1.2.3-pl
Дата выпуска 17.12.2018
Загрузки 11
Просмотры 698
Внимание, этот компонент требует версию PHP 5.6 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.6 !

Возможности:


  1. Импорт ресурсов/товаров
  2. Экспорт ресурсов/товаров/заказов/пользователей
  3. Сохранение данных с форм
  4. Сохранение заказов minishop2
  5. Вывод данных из гугл таблицы на сайт.

Внимание!
Компонент пока не умеет работать с мультикатегориями для товаров при импорте и экспорте.
Будет исправлено при следующем обновлении!


1. Импорт.


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

Удаление ресурсов
При клике на кнопку «Удалить данные» удаляются*** только те ресурсы, которые соответствуют ресурсам в таблице.
* Если уникальное поле не было создано в таблице, значит будет создан новый ресурс. Но если ресурс с таким названием уже есть, то ресурс не будет создан.
** Первая строка в таблице не импортируется.
*** На самом деле ресурсы помечаются как удаленные.


Поля импорта:
  • parent — id или заголовок
  • category (категории для товаров) — список id или заголовков, через запятую.


2. Экспорт.


  • Переходим в верхнее меню Приложения -> GoogleSheets
  • Переходим во вкладку Export
  • Жмакаем на создать экспорт
  • Заполняем все поля:
    • URL таблицы
    • Лист таблицы (название листа таблицы, можно указывать диапазон)
    • Тип ресурса: (modResource(ресурсы) || msProduct(товары) || msOrder(заказы minishop2) || modUser(пользователи) )
    • Поля импорта (для пропуска поля оставить пустое значение или слово ignore)
    • Настройка экспорта:
      • Append (добавляет новые данные к старым)
      • Update (стирает все данные и записывает новые)
  • Жмакаем правой кнопкой на необходимой строке (экспорта) или на соответствующей иконке и экспортируем данные .

Поля экспорта:
  • parent — id родителя
  • parent_name — заголовок родителя
  • category_id — список id категорий товара
  • category_name — список заголовков категорий товара

3. Сохранение данных с форм.


  • Добавляем хук GoogleSheetsSaveForm
  • Добавляем параметр formFields = список полей, которые нужно сохранить, через запятую.
  • Указываем таблицу, куда будем сохранять данные:
    • Добавляем адрес(url) таблицы в системную настройку googlesheets_form_table или в параметр googleSheetsUri сниппета AjaxForm(FormIt).
    • Добавляем название листа таблицы в системную настройку googlesheets_form_range или в параметр googleSheetsRange сниппета AjaxForm(FormIt).
  • Заполняем системную настройку googlesheets_form_fields — список полей, которые находятся в гугл таблице, по порядку и через запятую. Для пропуска поля в таблице использовать слово ignore или пустое значение
Примеры:
{'!AjaxForm' | snippet: [
    'hooks' => 'spam,email,GoogleSheetsSaveForm',
    'formFields' => 'name,email,message',
    'form' => 'tpl.AjaxForm.example'
]}
Будут сохранены поля name, email, message в таблицу, которая указанная в системной настройке googlesheets_form_table в лист, который указан в системной настройке googlesheets_form_range

{'!AjaxForm' | snippet: [
    'hooks' => 'spam,email,GoogleSheetsSaveForm',
    'formFields' => 'name,email,message',
    'googleSheetsRange' => 'DataForm',
    'form' => 'tpl.AjaxForm.example'
]}
Будут сохранены поля name, email, message в таблицу, которая указанная в системной настройке googlesheets_form_table в лист, который указан в параметре googleSheetsRange.

{'!AjaxForm' | snippet: [
    'hooks' => 'spam,email,GoogleSheetsSaveForm',
    'formFields' => 'name,email,message',
    'googleSheetsUri' => 'https://docs.google.com/spreadsheets/d/16eyRFL94Dtqm30lBXVIpKGbw/edit#gid=0',
    'googleSheetsRange' => 'DataForm',
    'form' => 'tpl.AjaxForm.example'
]}
Будут сохранены поля name, email, message в таблицу, которая указанная в параметре googleSheetsUri в лист, который указан в параметре googleSheetsRange.

4. Сохранение заказов.


Переходим в системные настройки компонента.
  • googlesheets_order_save = Да/Нет(сохранять заказы или нет)
  • googlesheets_order_table = ссылка таблицы, в которую будем сохранять заказы
  • googlesheets_order_range = лист таблицы
  • googlesheets_order_fields = список полей для сохранения, через запятую. Сохраняется по порядку. Для пропуска поля в таблице использовать слово ignore или пустое значение.

Возможные значения googlesheets_order_fields:
id, num, cart_cost, cost, weight, delivery, delivery_cost, payment, createdon, receiver, email, phone, index, region, city, street, building, room, comment, user, user_id, properties

Свои поля в форме заказа.
Если вы добавили свои поля по инструкции, то значение каждого поля будет выводиться в новой ячейке.
Пример:
Вы добавили 3 поля в форме заказа: extfld_type, extfld_org, extfld_inn
В системной настройке записали 3 поля для сохранения
googlesheets_order_fields = receiver,email,properties
В таблицу будет сохранено 5 полей(каждое поле в новой ячейке):
receiver, email, extfld_type, extfld_org, extfld_inn

Сохранение товаров
Можно в отдельную ячейку добавить список значений товаров, через запятую, которые принадлежат текущему заказу. Для этого нужно добавить перед названием необходимого поля = products. (c точкой)
Примеры:
products.pagetitle = сохранит название товаров
products.id = сохранит идентификаторы товаров
products.alias = сохранит алиасы товаров
В системной настройке это выглядит так:
googlesheets_order_fields = receiver,email,products.pagetitle,products.id,products.alias,properties

5. Вывод данных.


Для вывода данных из таблицы используется сниппет GoogleSheets
Параметры сниппета:
  • table = url таблицы, с которой нужно получить данные
  • range = название листа таблицы, также можно добавить диапазон ячеек для выборки (!A1:J10);
  • tpl = чанк для вывода результатов*
  • fileds = название переменных, через запятую**
  • ignore = список номеров строк, которые нужно пропустить. (начинаются с 1)

* Если параметр tpl пустой, то будет выведен массив результатов.
** По умолчанию название переменных = ячейкам первой строке таблицы.

Примеры:
{'!GoogleSheets' | snippet: [
    'table' => 'https://docs.google.com/spreadsheets/d/16AXIj1Dw0Cnx0neYHavZUuuDDmDMNkp8/edit#gid=0',
    'range' => 'Manhattan!A1:J10'
]}
Будет выбраны данные ячеек A1:J20 листа Manhattan из таблицы указной в параметре table.
Выводит массив результатов.

{'!GoogleSheets' | snippet: [
    'table' => 'https://docs.google.com/spreadsheets/d/16AXIj1Dw0Cnx0neYHavZUWGuuDDmDMNkp8/edit#gid=0',
    'range' => 'Manhattan'
    'ignore' => '1',
    'tpl' => '@INLINE <li>{$name} - {$email}</li>'
]}

Будет выбраны данные все данные(кроме 1 строки), листа Manhattan из таблицы указной в параметре table.
Переменные name и email должны быть в первой строке таблицы.

{'!GoogleSheets' | snippet: [
    'table' => 'https://docs.google.com/spreadsheets/d/16AXIj1Dw0Cnx0nI08nUDMNkp8/edit#gid=0',
    'range' => 'Manhattan'
    'ignore' => '1',
    'fields' => 'name,phone',
    'tpl' => '@INLINE <li>{$name} - {$phone}</li>'
]}
Присваиваем свои переменные для ячеек.
Первая ячейка будет соответствовать переменной name, вторая — phone

В компоненте присутствует модификатор table для преобразования массива в таблицу.
Пример:
{'!GoogleSheets' | snippet: [
    'table' => 'https://docs.google.com/spreadsheets/d/16AXIj1Dw0Cnx0neYHavZUmWJuDDmDMNkp8/edit#gid=0',
    'range' => 'Manhattan'
] | table: 'table table-hover'}
Данные будет оформлены в таблицу с классами table tabe-hover.

Инструкция авторизации.


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. Если не увидели сообщения, что Вы успешно авторизованы, значит что-то пошло не так или Вы где-то ошиблись.

FAQ


Как добавить изображения к товару?
  1. Добавьте поле images в поля для импорта.
  2. В гугл таблице укажите список изображений через запятую, путь изображения должен быть от корня сайта.Например: assets/img/name.jpg

1.2.3-pl (17.12.18)

  • Добавлена поддержка мультикатегорий
  • Добавлены поля для экспорта: parent_name, category_name
  • Добавлена поддержка заголовков для полей импорта: parent, category

1.2.2-pl (16.12.18)

  • Добавлена поддержка галереи minishop2
  • Исправлены ошибки при импорте
  • Добавлены поля производителя товара для экспорта (vendor.name, vendor.logo, vendor.country...)

1.2.1-pl (12.12.18)

  • Добавлена проверка списка полей для импорта
  • Добавлена проверка уникального поля при импорте

1.2.0-pl (04.12.18)

  • Добавлено поле 'список полей для импорта'
  • Удаление ресурсов/товаров через импорт
  • Добавлен экспорт ресурсов/товаров/заказов/пользователей
  • Добавлен тег ignore для пропуска ячейки при сохранении заказов/форм
  • Добавлены свойства товара при сохранении заказа
  • Добавлены доп. поля к заказу по инструкции https://modx.pro/solutions/10040
  • Улучшен модификатор table
  • Добавлены новые параметры для сниппета GoogleSheets: fields,ignore

1.1.0-pl (30.10.18)

  • Добавлен плагин для сохранение заказов minishop2
  • Добавлен импорт товаров minishop2
  • Добавлены сообщение о кол-во обновленных и созданных ресурсов
  • Добавлены настройки импорта
  • Добавлены лексиконы
  • Добавлен модификатор table

1.0.1-pl (29.10.18)

  • Добавлена защита дополнения

1.0.0-pl (29.10.18)

  • Первый релиз

Последние обсуждения в сообществе MODX.pro