Библиотека PHP Sheetsu доступна через композитор.
Вы можете отредактировать файл composer.json или просто нажать эту команду в своем терминале
composer require emilianozublena/sheetsu-php
Вам нужно создать создание основного объекта листа и дать листовому ID, который вы можете найти на приборной панели Sheetsu. Не забудьте использовать автозагрузку композитора.
require ( ' vendor/autoload.php ' );
use Sheetsu Sheetsu ;
$ sheetsu = new Sheetsu ([
' sheetId ' => ' sheetId '
]); Если у вас есть базовая аутентификация HTTP для вашего API, вы должны передать здесь key и secret , например:
require ( ' vendor/autoload.php ' );
use Sheetsu Sheetsu ;
$ sheetsu = new Sheetsu ([
' sheetId ' => ' sheetId ' ,
' key ' => ' key ' ,
' secret ' => ' secret '
]);Если вам нужно, вы можете повторно обретать (или инициализировать) библиотеку после создания
# Initialize after creation
$ sheetsu = new Sheetsu ();
$ sheetsu -> initialize ([
' sheetId ' => ' sheetId ' ,
' key ' => ' key ' ,
' secret ' => ' secret '
])Библиотека PHP Sheetsu поставляется с небольшой реализацией абстрактного типа данных.
Модели представляют собой единицы коллекций (в данном случае каждая модель представляет строку данного листа).
Вместо того, чтобы давать массивы клиенту Sheetsu (для операций CRUD), вы можете сделать что -то вроде этого:
$ collection = new Collection ();
$ collection -> addMultiple ([
Model:: create ([ ' name ' => ' John ' ]),
Model:: create ([ ' name ' => ' Steve ' ])
]);
$ response = $ sheetsu -> create ( $ collection );Коллекции и модели - это два объекта, которые вы собираетесь получать каждый раз, когда вы называете API.
Ссылка на документы
Чтобы добавить данные в электронные таблицы Google, отправить массив, массив массивов или, более проще, работать с моделями или коллекциями;)
# Adds single row from array
$ sheetsu -> create ([ ' name ' => ' John ' ]);
# Adds multiple rows from array
$ sheetsu -> create ([
[ ' name ' => ' John ' ],
[ ' name ' => ' Steve ' ]
]);
# Adds single row from Model
$ sheetsu -> create (Model:: create ([ ' name ' => ' John ' ]));
# Adds multiple rows from Collection
$ collection = new Collection ();
$ collection -> addMultiple ([
Model:: create ([ ' name ' => ' John ' ]),
Model:: create ([ ' name ' => ' Steve ' ])
]);
$ response = $ sheetsu -> create ( $ collection );После того, как вызов будет выполнен, возвращает объект ответа.
Ссылка на документы
Прочитайте весь лист
$ response = $ sheetsu -> read ();
$ collection = $ response -> getCollection ();Функция чтения позволяет 2 параметра
limit - предельное количество результатовoffset - начать с первой записи # Get first two rows from sheet starting from the first row
$ response = $ sheetsu -> read ( 2 , 0 );
$ collection = $ response -> getCollection ();Ссылка на документы
Чтобы получить ряды, которые соответствуют критериям поиска, передайте массив с критериями
# Get all rows where column 'id' is 'foo' and column 'value' is 'bar'
$ response = $ sheetsu -> search ([
' id ' => ' foo ' ,
' value ' => ' bar '
]);
$ collection = $ response -> getCollection ();
# Get all rows where column 'First name' is 'Peter' and column 'Score' is '42'
$ response = $ sheetsu -> search ([
' First name ' => ' Peter ' ,
' Score ' => ' 42 '
]);
$ collection = $ response -> getCollection ();
# Get first two row where column 'First name' is 'Peter',
# column 'Score' is '42' from sheet named "Sheet3"
$ response = $ sheetsu -> search ([
' First name ' => ' Peter ' ,
' Score ' => ' 42 '
], 2 , 0 );
$ collection = $ response -> getCollection ();
# Get first two row where column 'First name' is 'Peter',
# column 'Score' is '42' from sheet named "Sheet3"
# with ignore case
$ response = $ sheetsu -> search ([
' First name ' => ' Peter ' ,
' Score ' => ' 42 '
], 2 , 0 , true );
$ collection = $ response -> getCollection ();Ссылка на документы
Чтобы обновить строки (ы), передайте имя столбца и его значение, которое используется для поиска строк (и массива или модели с данными для обновления.
# Update all columns where 'name' is 'Peter' to have 'score' = 99 and 'last name' = 'Griffin'
$ model = Model:: create ([ ' score ' => ' 99 ' , ' last name ' => ' Griffin ' ]);
$ response = $ sheetsu -> update ( ' name ' , ' Peter ' , $ model ); По умолчанию отправляется запрос на патч, который обновляет только значения, которые находятся в коллекции, передаваемой методу. Чтобы отправить запрос на пут, передайте 4 -й аргумент, который является true . Узнайте больше о разнице между пут и патч в документах Sheetsu.
Ссылка на документы
Чтобы удалить строки, пройти имя столбца и его значение, которое используется для поиска строк (ы).
# Delete all rows where 'name' equals 'Peter'
$ response = $ sheetsu -> delete ( ' name ' , ' Peter ' );Если вам нужно изменить лист, над которым вы работаете, вы можете сделать это, используя функцию листа и передавая новый идентификатор листа листа
# Change active sheetsu to 'THIS'
$ sheetsu -> sheet ( ' THIS ' )Вы также можете подключить эту функцию с другими, как так:
# Change active sheetsu to 'THIS'
$ sheetsu -> sheet ( ' THIS ' )-> read ();Если вам нужно использовать всю электронную таблицу легко:
# Back to whole spreadsheet
$ sheetsu -> whole ()Вы также можете подключить эту функцию с другими, как так:
# Back to whole spreadsheet
$ sheetsu -> whole ()-> read ();Библиотека PHP Sheetsu обрабатывает соединение через класс соединения. Этот класс использует Curl для создания соединений и использует класс ответов в качестве возврата. Объект ответа является тем, что отвечает за предоставление коллекций, моделей или ошибок (или любого другого ответа из последнего вызова), также осуществляется через объект ответа (ответ использует класс ErrorHandler для абстрагирования блока Try/Catch и тесно связан с классом PHP ErroreXception)
$ response = $ sheetsu -> read ();
#if you need only the error messages, you can get the errors like this
$ errors = $ response -> getErrors ();
$ firstError = $ response -> getError ();
#if you need to get the exceptions thrown, do it like this.
$ exceptions = $ response -> getExceptions ();
$ firstException = $ response -> getException ();Эта библиотека имеет более 97% покрытия кода. Некоторые из тестов не используют фиктивные объекты, это в нашем списке дел и надеюсь, что мы сделаем это так. Тесты готовы использоваться с PhpUnit, а набор для тестирования настроен через XML, поэтому вам нужно только выполнить PhpUnit в вашей раздвоенной версии этого репо, как SO:
./vendor/bin/phpunit