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

Получение нашего документа
Документация позволяет строить прямые запросы, но мы же хотим красиво и недолго делать задачу. Поэтому возьмем тоже готовое решение 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). И небольшой «лог» поиска и замен.