GoogleSheets. Синхронизация!

Данное обновление дает возможность синхронизировать гугл таблицу с данными сайта.


Синхронизация ресурсов/товаров


Чекбоксы синхронизации:
  • Создание (добавляет новые ресурсы в гугл таблицу)
  • Обновление (обновляет ресурс, который есть в гугл таблице. Если ресурс в таблице не был найдет, то он добавляется)
  • Удаление (удаляются соответствующие ресурсы в гугл таблице)
Для синхронизации используется уникальное поле, которое задано в импорте или id в экпорте.

Синхронизация заказов


Внимание! Системные настройки для сохранения заказов были удалены. Теперь для сохранения новых заказов нужно создать экспорт и активировать чекбокс 'Создание' в блоке 'Синхронизация'.
Чекбоксы синхронизации:
  • Создание (добавляет новый заказ в гугл таблицу)
  • Обновление (обновляет заказ, который есть в гугл таблице. Например, при смене статуса заказа в адмнке обновляется статус в гугл таблице(на самом деле обновляется вся строка заказа). Если заказа не существует в гугл таблице, то он будет добавлен)
  • Удаление (при удалении заказа в админке соответствующий заказ будет удален в гугл таблице).
Для синхронизации обязательно в полях экспорта должно присутствовать поле 'num'(номер заказа).

Синхронизация пользователей/покупателей


Чекбоксы синхронизации:
  • Создание (добавляет нового пользователя в гугл таблицу. Например, при создание заказа создается покупатель, который будет добавлен)
  • Обновление (обновляет пользователя. Добавляет пользователя в гугл таблицу, при его отсутствии в ней)
  • Удаление (удаляет пользователя)
Для синхронизации обязательно в полях экспорта должно присутствовать поле 'id'(id пользователя).

Какого функционала не хватает?


  • Импорт пользователей
  • Импорт заказов
  • Импорт/Экспорт контекстов
  • Импорт/Экспорт производителей
  • Свой вариант

Полезные ссылки:


Ссылка на компонент
Ссылка на документацию

UPD: Версия 1.3.2


— Добавлен сниппет GoogleSheetsFront для экспорта/импорта с фронта
Параметры сниппета:
  • id — идентификатор экспорта/импорта
  • mode — режим работы: export || import. По умолчанию export
— Добавлен файл action.php для экспорта/импорта через ajax
Пример:
$.ajax({
  url: '/assets/components/googlesheets/action.php',
  type: "POST",
  data: {id: 4, mode: 'export', token: 'значение системной настройки googlesheets_client_secret'},
  success: function(data, textStatus, jqXHR){ console.log(data) },
  dataType: 'text'
});
Aleksandr Huz
12 мая 2019, 17:20
modx.pro
2
803
+7
Поблагодарить автора Отправить деньги

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

Артем
13 мая 2019, 21:13
0
Купил, установил, впечатления: нужен крон, возможность запуска с фронта, возможность экспортировать с условием (например parents=5).
Еще при синхронизации в режиме обновления не понял зачем нужно добавление отсутствующих записей: если у меня на сайте 1000 товаров, а в таблице 10, и я хочу эти десять обновить, то вариантов у меня это сделать нет, кроме как выгружать весь скоп с сайта и чистить руками.
    Aleksandr Huz
    13 мая 2019, 22:12
    0
    Завтра начну доработку компонента.
    Добавление нужно, чтобы ресурсы в таблице соответствовали ресурсам в админке.В след. обновлении добавлю еще один чекбокс, чтобы отключать добавление.
      Артем
      13 мая 2019, 22:35
      0
      Спасибо за ответ. Я мб не оч понятно объяснил ситуацию.
      Вот у меня 1000 разных товаров на сайте в разных категориях.
      1) Мне нужно выгрузить в таблицу все которые подходят под условие (например parents=5,published=1).
      2) Выгрузил (получилось, допустим 10 товаров в таблице), а потом время от времени хочу обновлять именно эти товары в таблице изменившимися данными с сайта.
      Эта ситуация нужна например для формирования прайс-листа для дропшиппинга, именно поэтому желательно что бы все это дело можно было запускать по кнопке с фронта.
        Aleksandr Huz
        14 мая 2019, 16:53
        0
        Выпустил обновление: добавил условия.
        Над другими задачами работаю.
          Артем
          15 мая 2019, 20:12
          +1
          Вот это скорость!
          UPD Я в восторге
            Aleksandr Huz
            19 мая 2019, 15:25
            0
            Выпустил обновление. Добавил сниппет и файл для запуска экспорта/импорта. Подробнее в статье.
    Александр Мельник
    17 мая 2019, 08:21
    0
    Хотел почитать документацию и посмотреть демо, но googlesheets.boshnik.ru не отвечает.
    alexbox
    25 июля 2019, 11:07
    0
    Александр, с данным компонентом я могу:
    1) указать перечень tv параметров товара для выгрузки
    2) выгрузить существующие товары
    3) изменить в гугл таблице нужные мне данные товаров
    4) добавить в гугл таблицу новые товары с параметрами
    5) загрузить из этой таблицы товары с обновлением данных существующих товаров и созданием новых товаров

    ??

    Заранее спасибо!
      Aleksandr Huz
      25 июля 2019, 14:24
      0
      Все верно
        alexbox
        27 июля 2019, 19:51
        0
        Александр, подскажите

        Авторизацию настроил, окно выдавалось, подтвердил, ключ скопировал
        все настройки прописал
        yadi.sk/i/mLdNmZBYQOcC2w
        написано: вы авторизованы

        настроил импорт
        yadi.sk/i/NvdC4AplNwDPXw

        но не работает…

        P.S. полезно будет указать разъяснение
        Импорт (загрузка из таблицы на сайт)
        Экспорт (выгрузка с сайта в таблицу)
          alexbox
          28 июля 2019, 11:08
          0
          Как диагностировать, в чём именно проблема?
            Aleksandr Huz
            28 июля 2019, 12:00
            0
            а что происходит когда нажимаете импорт/экспорт?

            P.S. Есть документация
              alexbox
              28 июля 2019, 12:11
              0
              Документацию вдоль и поперек перечитал ) всё по ней сделал

              только сейчас додумался в консоль посмотреть
              yadi.sk/i/l-f5BdWs1scv4g
              но я не программист
                alexbox
                28 июля 2019, 12:24
                0
                Под аккаунтом владельца (логин владельца файлов на сервере) — тоже самое, у обоих аккаунтов неограниченные права

                Переустановка MODX Revolution 2.7.1-pl тоже не дает результата

                Версия PHP 7.1 и 7.0

                на эту строчку жалуется, верно?
                MODx.msg.alert('Warning!',r.message || r.data[0]['msg'], function() {});
                  alexbox
                  29 июля 2019, 17:36
                  0
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsExport from mysql.googlesheetsexport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 1655) Could not load class GoogleSheetsExport!
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsExport from mysql.googlesheetsexport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 762) GoogleSheetsExport::load() is not a valid static method.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsExport from mysql.googlesheetsexport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 1655) Could not load class GoogleSheetsExport!
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsExport from mysql.googlesheetsexport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 762) GoogleSheetsExport::load() is not a valid static method.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsExport from mysql.googlesheetsexport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 1655) Could not load class GoogleSheetsExport!
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsExport from mysql.googlesheetsexport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 762) GoogleSheetsExport::load() is not a valid static method.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsImport from mysql.googlesheetsimport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 1655) Could not load class GoogleSheetsImport!
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsImport from mysql.googlesheetsimport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 762) GoogleSheetsImport::load() is not a valid static method.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsImport from mysql.googlesheetsimport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 1655) Could not load class GoogleSheetsImport!
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsImport from mysql.googlesheetsimport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 762) GoogleSheetsImport::load() is not a valid static method.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsImport from mysql.googlesheetsimport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 1655) Could not load class GoogleSheetsImport!
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 644) Could not load class: GoogleSheetsImport from mysql.googlesheetsimport.
                  [2019-07-29 17:35:06] (ERROR @ /home/s9033/www/core/xpdo/xpdo.class.php : 762) GoogleSheetsImport::load() is not a valid static method.
                    Aleksandr Huz
                    30 июля 2019, 10:13
                    0
                    Дайте доступы в админку, я гляну.
                      alexbox
                      30 июля 2019, 10:43
                      0
                      отправил на почту
                        Aleksandr Huz
                        30 июля 2019, 13:07
                        0
                        У вас проблемы с кешем.

                        Авторизовал свою таблицу. Экспорт работает!
                        Пробуйте авторизоваться заново. Мне приходилось вручную после каждого шага удалять папку core/cache/system_settings
                          alexbox
                          30 июля 2019, 15:43
                          0
                          Выгрузить получилось, большое спасибо за помощь
                            alexbox
                            9 часов назад
                            0
                            Александр, добрый день

                            обновился до актуальной версии, кеш сбросил, снова не экспортирует tv параметры товаров

                            context_key,id,vendor_name,parent_name,article,pagetitle,images,tv12,price, new, popular, favorite, tv78, tv11, tv9, tv7, tv28, tv25, tv10, tv8, tv6, tv27, tv26, tv1, tv57
                alexbox
                31 июля 2019, 17:20
                0
                комментарий удален
                  alexbox
                  31 июля 2019, 17:40
                  0
                  Как правильно указать tv параметры товара для экспорта?

                  article, pagetitle, tv.video, tv.effect, tv.timeR, tv.colibr, tv.colV, tv.transport_pack, parent_name, category_name, price, new, popular, favorite

                  article, pagetitle, tv12, tv7, tv10, tv11, tv9, tv54, parent_name, price, new, popular, favorite
                    alexbox
                    31 июля 2019, 18:02
                    0
                    Александр, с данным компонентом я могу:
                    1) указать перечень tv параметров товара для выгрузки
                    2) выгрузить существующие товары
                    Aleksandr Huz
                    Все верно
                    или tv только для ресурсов выгружаются?

                    как мне решить эту проблему? мне это очень нужно :(
                      Aleksandr Huz
                      01 августа 2019, 12:09
                      0
                      Вы правильно указали. Для экспорта не было реализовано поддержка TV. Исправил
                        alexbox
                        01 августа 2019, 12:17
                        0
                        Слёзы радости, спасибо! )))
                        вы правили файлы прямо в админке, при обновлении компонента я не затру эти доработки?
                          Aleksandr Huz
                          01 августа 2019, 12:25
                          0
                          Да, прям в админке. Новую версию с исправлением уже выпустил.
                            alexbox
                            01 августа 2019, 13:02
                            0
                            Александр, последний вопрос

                            Кол-во строк: 121.
                            Кол-во ошибок: 0.
                            Кол-во созданных товаров: 0.
                            Кол-во обновленных товаров: 0.
                            Время выполнения:: 0,44807720184326s

                            article, pagetitle, id, tv12, tv7, tv10, tv11, tv9, tv54, parent_name, price, new, popular, favorite

                            по полю article

                            не обновляет параметры, я не пойму.
                            таблица доступна по ссылке
                              alexbox
                              22 августа 2019, 17:21
                              0
                              При загрузке pagetitle — скрипт меняет uri страницы, исходя из этого имеем две проблемы:

                              1. например, у товаров одинаковый pagetitle и разные артикулы. тогда скрипт выдает: обновлено столько-то товаров, ошибка — 1 (но не говорит в чем ошибка, товар не обновлен).

                              2. меняет url ранее созданных страниц, после чего нужно:
                              менять в базе 1С ссылку на страницу товара
                              или
                              настраивать редирект со старого url на новый (лучше, чтобы это делалось автоматически)

                              в общем, штука хорошая, и сильно облегчила мне жизнь.

                              но пока что крайне не дружелюбна к пользователю.

                              пользователю нужно дать обратную связь:
                              1) обновлены такие то артикулы
                              2) ошибки в таких-то строчках (ячейках)
                                Aleksandr Huz
                                23 августа 2019, 18:03
                                0
                                В журнале ошибок должны выводиться товары, которые не обновились.

                                пользователю нужно дать обратную связь:
                                ок. Попробую добавить в компонент
                  Мартин Очоа
                  30 июля 2019, 02:46
                  0
                  Александр, доброго дня!

                  Подскажите, можно ли с помощью вашего компонента настроить обновление цен товара из Google Sheet таблицы по cron и вручную из админки?

                  Также подскажите, есть ли поддержка модификаций из дополнения msOptionsPrice? Планируете ли сделать? Мои товары имеют модификации и синхронизация цен модификаций была бы потрясающим решением!
                    Aleksandr Huz
                    30 июля 2019, 10:15
                    0
                    Добрый день, Мартин!

                    1. Можно.
                    2. Нет поддержки msOptionsPrice. Планируется, но неизвестно когда это будет.
                      Мартин Очоа
                      30 июля 2019, 15:34
                      0
                      Буду ждать с нетерпением поддержку msOptionsPrice2 (импорта товаров с модификациями, экспорта товаров с модификациями, обновление модификаций)! Сейчас пользуюсь msImportExport — но приходится выгружать онлайн-таблицы и загружать через админку. С помощью вашего скрипта можно было бы исключить эти манипуляции.
                        Мартин Очоа
                        02 августа 2019, 16:30
                        0
                        Готов посодействовать в консультационном ключе — показать, как выглядит файл импорта модификаций у msImportExport для msOptionsPrice2 и т.д.
                      Иван Кизименко
                      27 августа 2019, 16:47
                      0
                      В чем смысл галочек Синхронизация при Импорте?

                      Судя по всему если ты меняешь данные в гугл таблице то они не импортируются на сайт если стоит синхронизация.

                      При рабоче с десятичными цифрами идет нестыковка: в гугле стандартно идет разделить это запятая а в modx точка, соответственно при импорте все что после запятой просто затирается.
                        Aleksandr Huz
                        28 августа 2019, 13:33
                        0
                        1.Синхронизируется гугл таблица с данными сайта, но не наоборот.
                        2.Десятичные цифры протестю и поправлю. Спасибо
                          Иван Кизименко
                          28 августа 2019, 14:05
                          0
                          Тогда какой смысл в синхронизации при импорте? Я никак не могу понять логику.
                          Ты импортируешь товар на сайт, товар меняется и эта информация допустим выгружается в другую таблицу? если так, то это же делает и вкладка Экспорт.
                            Aleksandr Huz
                            28 августа 2019, 14:08
                            0
                            Выгружается в ту таблицу, с которой был сделан импорт.
                          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                          38