GoogleApi+ Spreadsheet + PHP : Практика маленьких и полезных клиенту скриптов

Часто бывает, что ручная работа может занять недели, а программист — за день автоматизировать ее и сделать приятной. С наличием кучи библиотек в репозиториях гитхаба — важно выбрать нужную и рабочую. И правильно постучать молотком

Постановка задачи этого примера: клиент сделал огромную таблицу в гугл-документах, но забыл туда вставить важное поле (и приложил в письме еще большую таблицу со связкой «код товара» — «поле»). Клиенту приятно, мне не долго — все счастливы и веселы.

Авторизация

Зарегистрируем наше приложение (или даже возьмем одно из старых — нам по сути нужны только разрешения на «локальных» хост. Нам даже кода писать не нужно — целевая библиотека — https://github.com/google/google-api-php-client (хотя для крупных проектов я люблю все контролировать и не очень использую чужие приблуды)

google

Получение нашего документа

Документация позволяет строить прямые запросы, но мы же хотим красиво и недолго делать задачу. Поэтому возьмем тоже готовое решение https://github.com/asimlqt/php-google-spreadsheet-client. Не без приключений, но оно вполне нам подойдет. Собственно эта заметка о приключениях

Например приключение номер один — в доках забыли указать что тип токена тоже нужен (по дефолту — это никак не Bearer, а нужен именно он)

Приключение номер два — кстати описанное в инете, но так и не решенное создателем либы —
Fatal error: Uncaught exception ‘Exception’ with message ‘String could not be parsed as XML’ in D:\NEWCORE\mz.loc\vendor\asimlqt\php-google-spreadsheet-client\src\Google\Spreadsheet\SpreadsheetService.php on line 55

Для того чтобы это убрать в классе DefaultServiceRequest отключите CURLOPT_SSL_VERIFYPEER — иначе приходит пустой ответ, он собственно и генерирует такую ошибку

Собственно работа с таблицей

Тут уже код с привязкой к специфике задачи — но общая суть достаточно проста, мы сравниваем по upc данные из таблицы в гугл-доках с полученными из текстовой таблицы (массив $parsed). И небольшой «лог» поиска и замен.

Оставить комментарий

XHTML: Вы можете использовать такие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">