Добавляем данные в таблицу Google Sheeet при помощи PHP
Руководство от Гугла для ознакомления. Делано собственно по нему.
1) Включаем в своем аккаунте доступ к Google Sheets API. Сделать это можно прямо на странице «Руководство от Гугла«:
Получаем ID, секрет и файл credentials.json который сохраняем туда, где будет лежать основной скрипт
2) При помощи composer добавляем необходимые библиотеки
| 
					 1 2  | 
						composer require google/apiclient:^2.0 composer update  | 
					
3) Создаем таблицу в гуглодокументах и узнаем её ID — можно взять прямо из URL. Так-же даем доступ «всем вподряд по ссылке»
4) Создаем следующего вида файл:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95  | 
						<?php require 'vendor/autoload.php'; if (php_sapi_name() != 'cli') {     throw new Exception('This application must be run on the command line.'); } /**  * Returns an authorized API client.  * @return Google_Client the authorized client object  */ function getClient(){     $client = new Google_Client();     $client->setApplicationName('Google Sheets API PHP Quickstart');     $client->setScopes(Google_Service_Sheets::SPREADSHEETS);     $client->setAuthConfig('credentials.json');     $client->setAccessType('offline');     $client->setPrompt('select_account consent');     // Load previously authorized token from a file, if it exists.     // The file token.json stores the user's access and refresh tokens, and is     // created automatically when the authorization flow completes for the first     // time.     $tokenPath = 'token.json';     if (file_exists($tokenPath)) {         $accessToken = json_decode(file_get_contents($tokenPath), true);         $client->setAccessToken($accessToken);     }     // If there is no previous token or it's expired.     if ($client->isAccessTokenExpired()) {         // Refresh the token if possible, else fetch a new one.         if ($client->getRefreshToken()) {             $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());         } else {             // Request authorization from the user.             $authUrl = $client->createAuthUrl();             printf("Open the following link in your browser:\n%s\n", $authUrl);             print 'Enter verification code: ';             $authCode = trim(fgets(STDIN));             // Exchange authorization code for an access token.             $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);             $client->setAccessToken($accessToken);             // Check to see if there was an error.             if (array_key_exists('error', $accessToken)) {                 throw new Exception(join(', ', $accessToken));             }         }         // Save the token to a file.         if (!file_exists(dirname($tokenPath))) {             mkdir(dirname($tokenPath), 0700, true);         }         file_put_contents($tokenPath, json_encode($client->getAccessToken()));     }     return $client; } // Get the API client and construct the service object. $client = getClient(); $service = new Google_Service_Sheets($client); // Prints the names and majors of students in a sample spreadsheet: // https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit $spreadsheetId = 'аыукаыука-HW95_v_xwJ-U_L2Xc'; $range = 'Sheets1!A2:A'; $response = $service->spreadsheets_values->get($spreadsheetId, $range); $values = $response->getValues(); var_dump($values); if (empty($values)) {     print "No data found.\n"; } else {     print "Name, Major:\n";     foreach ($values as $row) {         // Print columns A and E, which correspond to indices 0 and 4.         printf("%s\n", $row[0]);     } }; $values = [ 	["2016-02-12", "5453 543543", "=C2+C3"], 	["2017-02-12", "5453 543543", "=C2+C3"], 	["2018-02-12", "5453 543543", "=C2+C3"], ]; $body    = new Google_Service_Sheets_ValueRange( [ 'values' => $values ] ); // valueInputOption - определяет способ интерпретации входных данных // https://developers.google.com/sheets/api/reference/rest/v4/ValueInputOption // RAW | USER_ENTERED $options = array( 'valueInputOption' => 'RAW' ); $service->spreadsheets_values->update( $spreadsheetId, 'Sheets1!A13', $body, $options );  | 
					
,где в переменной $spreadsheetId указываем id таблицы.
5) Запустим скрипт из командной строки. Он предложит открыть ссылку которую выведет на экран. По переходу по ссылке будет показан стандарный диалог «Бал-бла- Разрешить?». Разрешаем. На экран выведется токен. Его нужно будет скопировать в консоль.
После чего снова запускаем скрипт, и в таблице в конец последних заполненных ячеек добавятся данные.