2013-10-14 2 views
3

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

Я просмотрел многие страницы документации Google, однако ни одно из них не делает то, что я ищу.

Моя цель - изменить содержимое ячеек с помощью oAuth (а не по электронной почте/пропуску).

Пожалуйста, простите меня, если это проблема с RTFM, но я потратил более 2 недель на это без каких-либо результатов. :/

+1

Где вы долго искали? Для этого существует множество примеров, использующих фид электронной таблицы api. Все там. Сначала узнайте о oauth, который вы можете практиковать на игровой площадке oauth2. Google оба. –

+0

Хотелось бы мне привести рабочий пример? я получаю ключ oAuth и даже успех, чтобы получить данные моей таблицы, такие как title и mimeType, используя это: ** $ file = $ service-> files-> get ($ fileId); print "Название:". $ file-> getTitle(); ** hoever, я не знаю, кто редактирует ячейку – Anerty

+1

Все это в api docs. Или используйте zend для php-обертки. –

ответ

2

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

+0

Благодарим за помощь, но я только что нашел решения с Zend GData, теперь это ТОЛЬКО, поскольку Google предоставляет официальную поддержку нового APIS только для .NET, Java и Python! – Anerty

5

Вы можете сделать это с asimlqt/php-google-spreadsheet-client библиотеки.

  1. Установите библиотеку через composer:

    "require": { 
        "asimlqt/php-google-spreadsheet-client": "dev-master" 
    } 
    
  2. Bootstrap композитора в файле PHP:

    require('vendor/autoload.php'); 
    
  3. Выполните следующие действия, чтобы получить в Google API идентификатор клиента, клиент электронной почты, и ключ доступа P12, как описано здесь:
    https://github.com/asimlqt/php-google-spreadsheet-client/wiki/How-to-use-%22Service-account%22-authorization-(rather-than-user-based-access-refresh-tokens)

  4. Используйте следующий код:

    $accessToken = getGoogleTokenFromKeyFile(CLIENT_ID_HERE, CLIENT_EMAIL_HERE, P12_FILE_PATH_HERE); 
    use Google\Spreadsheet\DefaultServiceRequest; 
    use Google\Spreadsheet\ServiceRequestFactory; 
    ServiceRequestFactory::setInstance(new DefaultServiceRequest($accessToken)); 
    
    // Load spreadsheet and worksheet 
    $worksheet = (new Google\Spreadsheet\SpreadsheetService()) 
        ->getSpreadsheets() 
        ->getByTitle('xxxxxxxxx')  // Spreadsheet name 
        ->getWorksheets() 
        ->getByTitle('xxxxxxxxx');  // Worksheet name 
    $listFeed = $worksheet->getListFeed(); 
    
    // Uncomment this to find out what Google calls your column names 
    // print_r($listFeed->getEntries()[0]->getValues()); 
    
    // Add a new blank row to the spreadsheet, using the column headings 
    $listFeed->insert(['name' => 'Simon', 'age' => 25, 'gender' => 'male']); 
    
    /** 
    * Retrieves a Google API access token by using a P12 key file, 
    * client ID and email address 
    * 
    * These three things may be obtained from 
    * https://console.developers.google.com/ 
    * by creating a new "Service account" 
    */ 
    function getGoogleTokenFromKeyFile($clientId, $clientEmail, $pathToP12File) { 
        $client = new Google_Client(); 
        $client->setClientId($clientId); 
    
        $cred = new Google_Auth_AssertionCredentials(
         $clientEmail, 
         array('https://spreadsheets.google.com/feeds'), 
         file_get_contents($pathToP12File) 
        ); 
    
        $client->setAssertionCredentials($cred); 
    
        if ($client->getAuth()->isAccessTokenExpired()) { 
         $client->getAuth()->refreshTokenWithAssertion($cred); 
        } 
    
        $service_token = json_decode($client->getAccessToken()); 
        return $service_token->access_token; 
    } 
    
+0

Привет, как я могу вставлять строки, используя «Веб-приложение», а не «Учетную запись службы»? – Subhra

+0

Привет @Subhra, вам необходимо следовать инструкциям на странице https://github.com/asimlqt/php-google-spreadsheet-client и использовать рабочий процесс OAuth. Разработчик также разместил некоторые примеры OAuth: https://github.com/asimlqt/php-google-oauth –

+0

Привет @Simon, спасибо. Был в состоянии понять это. – Subhra

Смежные вопросы