получить все строки в Google Spreadsheet через API, используя Laravel - PullRequest
0 голосов
/ 31 августа 2018

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

Пример 1 (по их ссылке):

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use PulkitJalan\Google\Facades\Google;
use Revolution\Google\Sheets\Sheets;

class SpreadController extends Controller
{
    function index()
    {
        $rows = Sheets::sheet('Sheet 1')->get();

        $header = $rows->pull(0);
        $values = Sheets::collection($header, $rows);
        dd($values);
    }

}

Ошибка:

Разрешение неразрешимой зависимости [Параметр # 0 [массив $ config]] в классе PulkitJalan \ Google \ Client


Пример 2 (по их ссылке):

Код:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use PulkitJalan\Google\Facades\Google;
use Revolution\Google\Sheets\Sheets;

class SpreadController extends Controller
{
    function index()
    {
        $user = $request->user();

        $token = [
            'access_token'  => $user->access_token,
            'refresh_token' => $user->refresh_token,
            'expires_in'    => $user->expires_in,
            'created'       => $user->updated_at->getTimestamp(),
        ];

// all() returns array
        $values = Sheets::setAccessToken($token)->spreadsheet('1n0nyJX9wYp-_frg7TzoyMu3WyuSwtCo21g')->sheet('Sheet 1')->all();

    }

}

Ошибка:

Неопределенная переменная: запрос


Это файл конфигурации в каталоге библиотеки ("vendor / pulkitjalan / google-apiclient / src / config / config.php"):

<?php

return [
    /*
    |----------------------------------------------------------------------------
    | Google application name
    |----------------------------------------------------------------------------
    */
    'application_name' => env('GOOGLE_APPLICATION_NAME', ''),

    /*
    |----------------------------------------------------------------------------
    | Google OAuth 2.0 access
    |----------------------------------------------------------------------------
    |
    | Keys for OAuth 2.0 access, see the API console at
    | https://developers.google.com/console
    |
    */
    'client_id'       => env('GOOGLE_CLIENT_ID', ''),
    'client_secret'   => env('GOOGLE_CLIENT_SECRET', ''),
    'redirect_uri'    => env('GOOGLE_REDIRECT', ''),
    'scopes'          => [],
    'access_type'     => 'online',
    'approval_prompt' => 'auto',

    /*
    |----------------------------------------------------------------------------
    | Google developer key
    |----------------------------------------------------------------------------
    |
    | Simple API access key, also from the API console. Ensure you get
    | a Server key, and not a Browser key.
    |
    */
    'developer_key' => env('GOOGLE_DEVELOPER_KEY', ''),

    /*
    |----------------------------------------------------------------------------
    | Google service account
    |----------------------------------------------------------------------------
    |
    | Set the credentials JSON's location to use assert credentials, otherwise
    | app engine or compute engine will be used.
    |
    */
    'service' => [
        /*
        | Enable service account auth or not.
        */
        'enable' => env('GOOGLE_SERVICE_ENABLED', false),

        /*
        | Path to service account json file
        */
        'file' => env('GOOGLE_SERVICE_ACCOUNT_JSON_LOCATION', '')
    ],

    /*
    |----------------------------------------------------------------------------
    | Additional config for the Google Client
    |----------------------------------------------------------------------------
    |
    | Set any additional config variables supported by the Google Client
    | Details can be found here: 
    | https://github.com/google/google-api-php-client/blob/master/src/Google/Client.php
    | 
    | NOTE: If client id is specified here, it will get over written by the one above.
    |
    */
    'config' => [],
];

и файл .env содержит эти присвоенные значения для переменных конфигурации:

 GOOGLE_APPLICATION_NAME= Append Data
 GOOGLE_CLIENT_ID= 995576272219-q9t67ufvehsqoctcq7g.apps.googleusercontent.com
 GOOGLE_CLIENT_SECRET= ow1kEPcuSEGmGIXZtl
 GOOGLE_REDIRECT=
 GOOGLE_DEVELOPER_KEY=
 GOOGLE_SERVICE_ENABLED=
 GOOGLE_SERVICE_ACCOUNT_JSON_LOCATION=

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

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете использовать пакет https://github.com/googleapis/google-api-php-client для выполнения задачи.

Для установки этого пакета добавьте

"google / apiclient": "^ 2.0"

в composer.json и выполните команду обновления composer.

Пожалуйста, следуйте инструкции https://www.fillup.io/post/read-and-write-google-sheets-from-php/ для получения дополнительной информации

После установки пакета необходимо установить значения в файле .env и файле constants.php, который находится в папке config.

Здесь я использовал переменную имени листа. Если этот параметр пропустить, он займет первый лист (вкладку) в электронной таблице.

Пример кода:

namespace App\Utilities;

    use App\Exceptions\LogExceptions;
    use AWS;
    use Illuminate\Http\File;
    use Illuminate\Support\Facades\Storage;
    use Config;

    class SpreadSheetManagemnt{
      private $CLIENT;
      private $SERVICE;
      private $SPREAD_SHEET;
      private $SPREAD_SHEET_ID;
    /**
     * Returns an authorized API client.
     * @return Google_Client the authorized client object
     */
      public function __construct() {

      $this->CLIENT = new \Google_Client();
      $this->CLIENT->setApplicationName("My Sample App");
      $this->CLIENT->setScopes([\Google_Service_Sheets::SPREADSHEETS]);
      $this->CLIENT->setAccessType('offline');
      $this->CLIENT->setAuthConfig(Config::get('constants.SPREAD_SHEET_AUTH_FILE'));

      $this->SPREAD_SHEET_ID = Config::get('constants.SPREAD_SHEET_ID');

      $this->SERVICE = new \Google_Service_Sheets($this->CLIENT);
      $this->SPREAD_SHEET =  $this->SERVICE->spreadsheets->get($this->SPREAD_SHEET_ID);
   }

    /**
     * Function to show sheet datas
     * @param string sheet name
     * @return boolean
     */
    public function showDatas($sheetName)
    {
        try{
          // column ranges in spreadsheet
          $range = "'".$sheetName."'!A2:F3";
          $rows = $this->SERVICE->spreadsheets_values->get($this->SPREAD_SHEET_ID, $range, ['majorDimension' => 'ROWS']);
          dd($rows['values']);

        }catch( \Throwable $e){
            LogExceptions::writeLog($e);
        }
    }

}
...