Google Spreadsheets и PHP

  1. Подготовка электронной таблицы для программного доступа
  2. Чтение данных из электронной таблицы с помощью PHP
  3. Начальная загрузка Google API Authentication
  4. Получение реальных данных
  5. Вставка, обновление и удаление из электронной таблицы с помощью PHP
  6. Обновление ячеек
  7. Обновление строк
  8. Удаление строк
  9. Вставка строк
  10. Поиск проблемы

Вам когда-нибудь нужно было извлечь некоторые данные из таблицы Google? В прошлом я по умолчанию использовал экспорт данных и их прямую загрузку в приложение, но оказалось, что их не очень сложно читать напрямую из таблиц Google с помощью API-интерфейса Google Drive.

В этом руководстве мы будем читать, записывать, обновлять и удалять данные из таблицы Google с помощью всего лишь нескольких строк PHP.

В последнее время я провел много времени, работая с группами активистов в сфере технологий, и часто людям, которые хотят работать с данными, является контактная информация законодателей. Давайте возьмем эту таблицу с контактная информация для всех законодателей Соединенных Штатов , Сделайте копию этой таблицы в своем аккаунте, и мы готовы к работе.

Давайте возьмем эту таблицу с   контактная информация для всех законодателей Соединенных Штатов   ,  Сделайте копию этой таблицы в своем аккаунте, и мы готовы к работе

Подготовка электронной таблицы для программного доступа

По умолчанию новая электронная таблица недоступна через API Google. Нам нужно будет перейти к вашей консоли API Google, создать новый проект и настроить его для предоставления данных ваших таблиц.

  1. Перейти к Консоль API Google ,
  2. Создать новый проект.
  3. Нажмите Включить API . Найдите и включите Google Drive API.
  4. Создайте учетные данные для веб-сервера для доступа к данным приложения .
  5. Назовите учетную запись службы и предоставьте ей роль редактора проекта .
  6. Загрузите файл JSON.
  7. Скопируйте файл JSON в каталог вашего приложения и переименуйте его в client_secret. JSON

JSON

Теперь у нас есть большой кусок информации для аутентификации, включая то, что Google называет client_email, который уникально представляет эту учетную запись службы OAuth. Получите значение client_email из вашего client_secret. json, и возвращайся к своей таблице. Нажмите кнопку « Поделиться» в правом верхнем углу и вставьте значение client_email в поле, чтобы предоставить ему права на редактирование. Хит отправить. Это оно!

Чтение данных из электронной таблицы с помощью PHP

Давайте начнем строить!

Мы не будем писать здесь какой-либо специфичный для фреймворка код; если у вас установлен и загружен Composer, вы готовы следовать за ним.

Хотите попробовать это с ванильным PHP? Создайте файл PHP в каталоге вашего проекта для хранения этого кода и в начале файла сразу после
<? PHP поставить эту строку:

требуется __DIR__. '/Vendor/autoload.php';

Теперь создайте файл в вашем проекте с именем composer. json и поместите в него пустой объект JSON:

Если вы хотите проверить свой код, просто запустите php yourfilename. Php. Вы готовы начать кодирование!

Начальная загрузка Google API Authentication

Во-первых, требовать наши пакеты; мы будем использовать Google / apiclient библиотека для аутентификации и asimlqt / PHP-Google-таблицы-клиент библиотека для доступа к электронным таблицам:

composer требуется google / apiclient: «^ 2.0» composer требуется asimlqt / php-google-spreadsheet-client: «3.0. *»

Затем, где-нибудь в процессе загрузки (в рамках, я бы поместил его в загрузочный файл или в сервис-провайдера, но сейчас вы можете просто поместить его в начало файла), вы захотите инициализировать клиент с помощью токен, который мы сгенерируем с помощью библиотеки google / apiclient:

putenv ('GOOGLE_APPLICATION_CREDENTIALS ='. __DIR__. '/client_secret.json'); $ client = new Google_Client; $ Client-> useApplicationDefaultCredentials (); $ client-> setApplicationName («Что-то делать с моими представителями»); $ Client-> setScopes ([ 'https://www.googleapis.com/auth/drive','https://spreadsheets.google.com/feeds']); if ($ client-> isAccessTokenExpired ()) {$ client-> refreshTokenWithAssertion (); } $ accessToken = $ client-> fetchAccessTokenWithAssertion () ["access_token"]; ServiceRequestFactory :: setInstance (новый DefaultServiceRequest ($ accessToken));

Я знаю, что это немного сложно, но вы должны сделать это только один раз, и тогда все ваши запросы в вашем приложении будут просто правильно аутентифицироваться. Вы узнаете, что приложение подключается правильно, если действия в следующем разделе работают без ошибок.

Получение реальных данных

Далее, давайте создадим маршрут, который вы можете посетить в своем браузере, и начните получать реальные данные. Если вы тестируете это на ванильном PHP, просто добавьте это внизу файла, над которым вы работаете.

Все наши звонки начнутся с получения электронной таблицы, а оттуда - рабочего листа с нашими данными.

// Получить нашу электронную таблицу $ spreadsheet = (new Google \ Spreadsheet \ SpreadsheetService) -> getSpreadsheetFeed () -> getByTitle ('Copy of Legislators 2017'); // Получить первый лист (вкладка) $ worksheets = $ spreadsheet-> getWorksheetFeed () -> getEntries (); $ worksheet = $ worksheets [0];

Чтобы показать, что этот рабочий лист работает , давайте переберем каждую запись и выведем ее:

$ listFeed = $ worksheet-> getListFeed (); / ** @var ListEntry * / foreach ($ listFeed-> getEntries () как $ entry) {$ представитель = $ entry-> getValues ​​(); }

Мы работаем с объектом ListFeed, который представляет собой «список» строк, и каждая строка внутри этого списка возвращается как объект ListEntry.

Когда мы распечатаем их, мы увидим наш вывод со значением каждой ячейки, прикрепленной к строке заголовка для каждого столбца. Массив будет выглядеть примерно так:

{'фамилия': "Браун", "имя": "Шеррод", "день рождения": "9.11.1952", "пол": "М", ...}

Обратите внимание, что этот SDK использует Google Spreadsheet API v3, основанный на XML; Одним из недостатков формата является то, что он удаляет все подчеркивания из имен столбцов, превращая last_name в lastname, а first_name в firstname. Если вы хотите обойти это, вы можете просто разобраться с этим, как есть, использовать одну из немногих сравнительно непроверенных библиотек Google Spreadsheets v4 или сопоставить свои записи вручную, используя объект CellFeed, как определено ниже.

Вместо этого мы могли бы получить объект CellFeed, который позволяет нам получать каждую строку в качестве необработанных записей без сопоставления с заголовком:

$ cellFeed = $ worksheet-> getCellFeed (); $ row = $ cellFeed-> toArray ()); [["last_name", "first_name", "birthday", "пол", ...], ["Brown", "Sherrod", "9/19/1952", "M", ...],. ..]

Мы также можем использовать объект CellFeed для получения одной ячейки по индексам столбцов / строк:

$ cellFeed = $ worksheet-> getCellFeed (); / ** @var CellEntry * / $ topLeftCornerCell = $ cellFeed-> getCell (1, 1); echo $ topLeftCornerCell-> content; // "Фамилия"

Наконец, мы также можем просто экспортировать весь лист в формате CSV:

return $ worksheet-> getCsv ();

Вставка, обновление и удаление из электронной таблицы с помощью PHP

До сих пор мы читали только из таблицы. Но мы также можем обновить и удалить строки или ячейки, которые мы извлекаем, или даже вставить наши собственные ячейки или таблицы.

Обновление ячеек

Во-первых, давайте возьмем одну из тех ячеек, которые мы получили, и обновим ее:

$ cellFeed = $ worksheet-> getCellFeed (); / ** @var CellEntry * / $ firstEntryLastName = $ cellFeed-> getCell (2, 1); $ FirstEntryLastName-> обновление ( 'Doe');

Обновление строк

Мы также можем обновить всю строку, указав имена столбцов:

$ listFeed = $ worksheet-> getListFeed (); / ** @var ListEntry * / foreach ($ listFeed-> getEntries () как $ entry) {if ($ entry-> getValues ​​() ['lastname'] === 'Brown') {// Взять запись и обновить только свойство `lastname` $ entry-> update (array_merge ($ entry-> getValues ​​(), ['lastname' => 'Doe'])); перерыв; }}

Удаление строк

Давайте удалим полную строку:

$ listFeed = $ worksheet-> getListFeed (); foreach ($ listFeed-> getEntries () как $ entry) {if ($ entry-> getValues ​​() ['twitter'] === 'SenatorCarper') {$ entry-> delete (); перерыв; }}

Пакет Spreadsheets, который мы используем, нацелен на получение полных списков, а не на извлечение отдельных элементов из списка, поэтому нам нужно использовать и разбивать foreach. Если бы мы использовали конвейер коллекций, такой как коллекции Laravel, это было бы немного чище:

collect ($ worksheet-> getListFeed () -> getEntries ()) -> first (функция ($ entry) {return $ entry-> getValues ​​() ['twitter'] === 'SenatorCarper';}) -> delete ();

Вставка строк

Мы также можем добавить свои собственные строки на лист. Нам нужно захватить объект ListFeed и запустить на нем вставку.

$ listFeed = $ worksheet-> getListFeed (); $ listFeed-> insert (['lastname' => 'Stauffer', 'firstname' => "Matt", // ...]);

Поиск проблемы

Если вы видите эту ошибку при вставке или обновлении:

Пустые строки не могут быть записаны; используйте вместо этого удалить.

Вероятно, потому что вы не определили один из столбцов. Даже если вы устанавливаете пустое значение, вы все равно должны предоставить его.

Теперь, когда вы знаете, как читать, вставлять, обновлять и удалять записи из вашей электронной таблицы Google, у вас есть полнофункциональный слой базы данных, который легко раскручивается, и встроенный слой пользовательского интерфейса для не-технических людей, чтобы просматривать и администрировать свои данные.

Спасибо Greg Baugues за идею и оригинальный пост по использованию Google Spreadsheets и Python ,

-----

Мэтт Штауффер - автор книги О'Рейли Laravel: работает и работает и партнер и технический директор в Затянуть Co , Вы можете найти его в Твиттере на @stauffermatt ,

Похожие

Google напоминает основные правила защиты личных данных
По случаю Всемирного дня безопасного интернета компания Google напоминает основные правила защиты пользовательских данных в онлайн-пространстве. Пользователи могут повышать безопасность при работе в Google
Успешно заGOOGLЕты: секреты поиска
По дружеского согласия Verify - продолжаем делиться полезными советами для проверки информации из Сети, которые помогут убедиться, что информация является достоверной. На этот раз приоткрывает возможности ...
Для использования смартфона Android без учетной записи Google
Почти каждый новый Android-смартфон предлагает вам войти в систему с учетной записью Google, чтобы получить максимальную отдачу от вашего устройства. Проще говоря, это означает, что при входе в систему вы можете получить доступ к Google Play Store, крупнейшему из всех магазинов приложений, и устанавливать приложения по своему усмотрению. Тем не менее, предоставление Google Play Store для производителей смартфонов для загрузки так называемого "Google App Suite" с помощью поиска Google и
Как отключить автоматическое обновление в Ubuntu
Для некоторых людей появление автоматических уведомлений об обновлениях системы на рабочем столе каждый день может раздражать. Но вы можете отключить автоматическую проверку обновлений программного обеспечения в Ubuntu - и мы покажем вам,
печенье
Trainline сохраняет небольшие текстовые файлы (называемые куки) на диске компьютера, содержащие информацию о том, как пользователь использует браузер. Наша Политика использования файлов cookie, т. Е. Документ, который вы читаете, охватывает все технологии, которые работают на основе файлов cookie. Это элементы интернет-типа, пиксели, гифки, интернет-теги и маяки Задачи печенья: измерение и анализ того, как пользователь использует наш сайт и как мы можем лучше удовлетворить
Запросы для данных XML в SQL
Круг вопросов, касающихся присутствия XML в SQL Server, широк. Написание запросов к документам XML - это навык, который часто используется на практике. Поэтому я решил поместить вводную главу в XML как часть этого курса. Для начала я представлю общую концепцию стандарта XML и его типичные приложения на практике. Я покажу готовые рецепты, примеры - как писать SQL-запросы в XML-документы. В этой статье я расскажу об основных приложениях функции OPENXML
Как исправить проблемы с файлом гибернации в Windows 7
... строки вместо интерфейса панели управления. Средство командной строки powercfg автоматически удаляет файл гибернации, когда параметр отключен, а также правильно настраивает параметры реестра и загрузки. Фактически, использование инструмента командной строки для удаления файла гибернации рекомендуется в нескольких сценариях восстановления загрузки. Чтобы включить или отключить режим гибернации из командной строки, используйте следующие последовательности
Авторские права - Google Graphics и IPTC - Swiatobrazu.pl
Google объявила о сотрудничестве с IPTC (Международный совет по прессе и телекоммуникациям) и CEPIC (Совет европейских профессиональных ассоциаций в области информатики), целью которого является повышение безопасности авторов фотографий и повышение осведомленности пользователей Интернета в области интеллектуальной собственности. Поисковая система Google предоставит вам доступ к информации о том, кто создал изображение. Это станет возможным после нажатия поисковой системы на значок с тремя
Позиционирование сайтов Катовице optimization Оптимизация сайтов в Google
Интернет быстро становится крупнейшим источником трафика и прибыли для компаний. Когда люди ищут продукт или услугу, они редко делают это в телефонной книге - они попадают в поисковую систему. Поэтому в вашей маркетинговой стратегии вы должны обязательно учитывать позиционирование сайта
Как установить Google Chrome в OpenSUSE Leap
В этом руководстве я покажу вам, как установить Google Chrome на OpenSUSE Leap 42.1 и 42.2. Мы будем использовать менеджер пакетов zypper, чтобы добавить репозиторий Google Chrome, а затем установить его. Установите Google Chrome на OpenSUSE Откройте терминал и добавьте репозиторий Google Chrome, используя следующую команду. ar означает добавить хранилище. sudo zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome
Запускается возможность регистрации услуги Samsung Guard S8. Что стоит знать?
Samsung сегодня запустил польскую регистрационную страницу в сервисе Guard S8, благодаря которой вы получаете отличную прибыль за свою Galaxy S8 и Galaxy S8 + , Регистрация не занимает много времени, но есть проблемы, на которые стоит обратить внимание. Прежде всего, стоит точно знать, какие

Комментарии

Bing Images против Google Images - какие результаты лучше?
Bing Images против Google Images - какие результаты лучше? Bing Images против Google Images - какие результаты лучше? Поиск изображений в Bing когда-то бросал вызов Google, предлагая больше возможностей и лучший дизайн. Благодаря бесконечной прокрутке и возможности поиска похожих изображений, Bing был на законных основаниях лучше, чем Google в поиске изображений ...
Итак, почему вы видите миниатюру Google Street View, назначенную им для многих визитных карточек Google, которая приводит к фотографиям, сделанным несколько лет назад?
Итак, почему вы видите миниатюру Google Street View, назначенную им для многих визитных карточек Google, которая приводит к фотографиям, сделанным несколько лет назад? Ответ ниже. Я приглашаю вас прочитать. Просмотр улиц Google Просмотр улиц, закрепленный за визитной карточкой компании Миниатюра «вид со стороны», ведущая к виду на улицу, появляется на визитной карточке Google в ситуации, когда компания находится на уличном корте, по которому ехал автомобиль Google (создавая
Вы столкнулись с тем, что вам приходилось использовать Карты Google, но у вас не было покрытия для подключения мобильного Интернета, и поблизости не было сети Wi-Fi?
Вы столкнулись с тем, что вам приходилось использовать Карты Google, но у вас не было покрытия для подключения мобильного Интернета, и поблизости не было сети Wi-Fi? Если так, то теперь вы можете предотвратить эту ситуацию простым способом. Карты Google были обновлены двумя новыми функциями. Первая - это возможность сохранения выбранных областей карты на карте памяти для автономного использования. Второй - это специальный режим «только Wi-Fi», который работает простым способом - он позволяет
Так как же теперь получить доступ к плагинам Google Chrome?
Так как же теперь получить доступ к плагинам Google Chrome? Что случилось с плагинами chrome: // в Google Chrome? Ответ Участник SuperUser Стивен имеет ответ для нас: Страница плагинов chrome: // была удалена в Google Chrome версии 57. Цель: удалить страницу плагинов chrome: //, перенеся конфигурацию последнего оставшегося плагина, Adobe Flash Player, в свое явное место в настройках контента (включая опцию
Вы используете Google Keep?
Вы используете Google Keep? Поделитесь своими любимыми советами, хитростями и возможностями с другими читателями в комментариях ниже.
Хотите улучшить отзывчивость вашего сайта с помощью Bootstrap?
Хотите улучшить отзывчивость вашего сайта с помощью Bootstrap? Самым важным аспектом Bootstrap является 12-колоночная мобильная система первой сетки. Это то, что вы используете для создания адаптивного макета. В этом видеоуроке вы создадите базовый веб-сайт с помощью Bootstrap и узнаете, как использовать сеточную систему Bootstrap для создания адаптивного макета с несколькими столбцами. Перед просмотром учебника Прежде чем вы сможете следовать приведенному ниже видеоуроки
Обычно это не проблема, но что, если вы привязываете свой компьютер к смартфону с ограниченным тарифом на передачу данных?
Обычно это не проблема, но что, если вы привязываете свой компьютер к смартфону с ограниченным тарифом на передачу данных? Эти советы помогут вам использовать меньше данных и войти под ваш предел данных. Они не должны быть необходимы, если вы находитесь в приличном проводном подключении к Интернету с неограниченным объемом данных или высокой пропускной способностью данных. Кредит изображения: Йосомоно на Flickr
Проблемы с вашим интернет-соединением?
Проблемы с вашим интернет-соединением? Для правильной установки установщику Chrome необходим Интернет, но не у всех есть постоянное и достаточно крепкое интернет-соединение, чтобы оно работало хорошо. Если это так, загрузите автономный установщик Chrome , Однако после его установки вы действительно должны поддерживать обновление Chrome в фоновом режиме для повышения безопасности и производительности.
Для чего стоит использовать все эти пакеты данных?
Для чего стоит использовать все эти пакеты данных? Лучше всего слушать музыку. Компания Play объявила, что пользователи продуктов Play for Card, Internet Play for Card и Play Mix могут использовать Tidal бесплатно в течение шести месяцев. Чтобы использовать эту акцию, просто установите приложение Tidal на свой телефон Android, нажмите «Попробуйте», выберите любую песню и активируйте эту возможность. С этого момента музыкальный сервис в Премиум-версии будет доступен бесплатно в течение следующих
Как выглядит обновление карты в традиционной навигации?
Как выглядит обновление карты в традиционной навигации? Обычно обновление не было бесплатным, и, как правило, веб-сайты удаляли деньги за такое обновление. И известно, что никто не хочет время от времени нести дополнительные расходы, чтобы быть уверенным, что навигация не приведет их в поле. Но, наконец, с появлением навигации на смартфоне традиционная навигация также предлагает решения без дополнительной платы. Производители GPS предлагают неограниченные обновления карт, которые
Есть ли у вас проблемы с Flash в браузере Chrome?
Есть ли у вас проблемы с Flash в браузере Chrome? Страницы медленно загружаются и блокируются, и в адресной строке появляется желтое сообщение, не соответствующее плагину Shockwave Flash? Посмотрите, как решить эту проблему. Мы уже показали

Хотите попробовать это с ванильным PHP?
8. Что стоит знать?
Bing Images против Google Images - какие результаты лучше?
Bing Images против Google Images - какие результаты лучше?
Итак, почему вы видите миниатюру Google Street View, назначенную им для многих визитных карточек Google, которая приводит к фотографиям, сделанным несколько лет назад?
Итак, почему вы видите миниатюру Google Street View, назначенную им для многих визитных карточек Google, которая приводит к фотографиям, сделанным несколько лет назад?
Вы столкнулись с тем, что вам приходилось использовать Карты Google, но у вас не было покрытия для подключения мобильного Интернета, и поблизости не было сети Wi-Fi?
Так как же теперь получить доступ к плагинам Google Chrome?
Что случилось с плагинами chrome: // в Google Chrome?
Вы используете Google Keep?