Что я собираюсь сделать ~
Пишите на листы Google через .php файл, который получает данные формы html.
Пока ~
Завершено быстрое начало PHP здесь: https://developers.google.com/sheets/api/quickstart/php
Успешно завершен и смог читать / писать на лист, используя их пример.
Далее я использовал пример кода, чтобы добавить лист, найденный по адресу:
https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append
Но, похоже, отсутствует важный фрагмент кода. Смотри ниже.
Сервер Linux, PHP5.
<code><?php
/*
* BEFORE RUNNING:
* ---------------
* 1. If not already done, enable the Google Sheets API
* and check the quota for your project at
* https://console.developers.google.com/apis/api/sheets
* 2. Install the PHP client library with Composer. Check installation
* instructions at https://github.com/google/google-api-php-client.
*/
// Autoload Composer.
require_once __DIR__ . '/vendor/autoload.php';
$client = getClient();
$service = new Google_Service_Sheets($client);
// The ID of the spreadsheet to update.
$spreadsheetId = 'my-spreadsheet-id'; // TODO: Update placeholder value.
// The A1 notation of a range to search for a logical table of data.
// Values will be appended after the last row of the table.
$range = 'my-range'; // TODO: Update placeholder value.
// TODO: Assign values to desired properties of `requestBody`:
$requestBody = new Google_Service_Sheets_ValueRange();
$response = $service->spreadsheets_values->append($spreadsheetId, $range, $requestBody);
// TODO: Change code below to process the `response` object:
echo '<pre>', var_export($response, true), '
', "\ n";
function getClient () {
// TODO: Изменить заполнитель ниже, чтобы сгенерировать учетные данные для аутентификации. Увидеть
//
https://developers.google.com/sheets/quickstart/php#step_3_set_up_the_sample
//
// Авторизуйтесь, используя одну из следующих областей:
// '
https://www.googleapis.com/auth/drive'
// '
https://www.googleapis.com/auth/drive.file'
// '
https://www.googleapis.com/auth/spreadsheets'
вернуть ноль;
}
?>
Я бы ожидал увидеть заполненную функцию getClient (). Что именно мне нужно добавить сюда?
Полагаю, что после того, как это заполнено, я могу просто сохранить файл php и вызвать приложение, так как мой сайт уже имеет авторизацию.
Заранее спасибо.
Ясиру - Спасибо за предложение. Теперь у меня есть следующее ~
<code><?php
/*
* BEFORE RUNNING:
* ---------------
* 1. If not already done, enable the Google Sheets API
* and check the quota for your project at
* https://console.developers.google.com/apis/api/sheets
* 2. Install the PHP client library with Composer. Check installation
* instructions at https://github.com/google/google-api-php-client.
*/
// Autoload Composer.
require_once __DIR__ . '/vendor/autoload.php';
$client = getClient();
$service = new Google_Service_Sheets($client);
// The ID of the spreadsheet to update.
$spreadsheetId = 'XXXX'; // TODO: Update placeholder value.
// The A1 notation of a range to search for a logical table of data.
// Values will be appended after the last row of the table.
$range = 'Sheet1'; // TODO: Update placeholder value.
// TODO: Assign values to desired properties of `requestBody`:
//$requestBody = new Google_Service_Sheets_ValueRange();
$requestBody = {
"majorDimension": 'ROWS',
"values": [
"val1","val2"
]
}
$response = $service->spreadsheets_values->append($spreadsheetId, $range, $requestBody);
// TODO: Change code below to process the `response` object:
echo '<pre>', var_export($response, true), '
', "\ n";
функция getClient ()
{
$ client = new Google_Client ();
$ client-> setApplicationName («Быстрый запуск PHP Google Sheets API»);
$ Client-> setScopes ( '
https://www.googleapis.com/auth/spreadsheets');
$ Client-> setAuthConfig ( 'credentials.json');
$ Client-> setAccessType ( 'отсутствует');
$ client-> setPrompt («согласие select_account»);
// Загрузка ранее авторизованного токена из файла, если он существует.
// Файл token.json хранит токены доступа пользователя и обновляет его и является
// создается автоматически при завершении потока авторизации для первого
// время
$ tokenPath = 'token.json';
if (file_exists ($ tokenPath)) {
$ accessToken = json_decode (file_get_contents ($ tokenPath), true);
$ Client-> setAccessToken ($ маркер доступа);
}
// Если предыдущего токена нет или срок его действия истек.
if ($ client-> isAccessTokenExpired ()) {
// Обновить токен, если это возможно, иначе получить новый.
if ($ client-> getRefreshToken ()) {
$ Client-> fetchAccessTokenWithRefreshToken ($ client-> getRefreshToken ());
} еще {
// Запрос авторизации от пользователя.
$ authUrl = $ client-> createAuthUrl ();
printf («Откройте в браузере следующую ссылку: \ n% s \ n», $ authUrl);
напечатайте «Введите проверочный код:»;
$ authCode = trim (fgets (STDIN));
// Обмен кода авторизации на токен доступа.
$ accessToken = $ client-> fetchAccessTokenWithAuthCode ($ authCode);
$ Client-> setAccessToken ($ маркер доступа);
// Проверьте, не было ли ошибки.
if (array_key_exists ('error', $ accessToken)) {
бросить новое исключение (join (',', $ accessToken));
}
}
// Сохраняем токен в файл.
if (! file_exists (dirname ($ tokenPath)))) {
mkdir (dirname ($ tokenPath), 0700, true);
}
file_put_contents ($ tokenPath, json_encode ($ client-> getAccessToken ()));
}
вернуть $ client;
}
?>
Однако, когда я загружаю страницу, я получаю внутреннюю ошибку сервера 500.
Для пояснения приведенный выше PHP сохраняется в test.php, вызывается через url и находится в рабочем каталоге.