Google App Engine for PHP에서 Google 스프레드시트에 읽기/쓰기
15763 단어 GoogleAppEnginePHP
1. Google 스프레드시트 만들기
Google 드라이브 로 이동하여 스프레드시트를 만듭니다.
브라우저에서 스프레드시트를 엽니다. 첫 번째 줄에 id, name, age를 입력하고 두 번째 줄부터는 적절한 데이터를 입력합니다.
스프레드시트를 연 상태에서 브라우저의 URL 입력란은
https://docs.google.com/spreadsheets/d/{スプレッドシートID}/edit#gid=0
되어 있으므로 스프레드시트 ID를 메모해 둡니다. 이 ID를 사용하여 프로그램에서 액세스합니다.2. 프로그램
"Google App Engine for PHP에서 Google Drive API 사용"의 Google APIs Client Library for PHP를 다운로드 할 때까지 완료하십시오. (프로젝트 생성, API 설정, OAuth 설정)
sample.php
<?php
require_once('./google-api-php-client/src/Google/autoload.php');
session_start();
$client = new Google_Client();
$client->setClientId('クライアントID');
$client->setClientSecret('クライアントシークレット');
$client->setRedirectUri('リダイレクトURI');
// 許可されてリダイレクトされると URL に code が付加されている
// code があったら受け取って、認証する
if (isset($_GET['code'])) {
// 認証
$client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
// リダイレクト GETパラメータを見えなくするため(しなくてもOK)
header('Location: http://'.$_SERVER['HTTP_HOST']."/");
exit;
}
// セッションからアクセストークンを取得
if (isset($_SESSION['token'])) {
// トークンセット
$client->setAccessToken($_SESSION['token']);
}
// トークンがセットされていたら
if ($client->getAccessToken()) {
try {
echo "Google Drive Api 連携完了!<br>";
$obj = json_decode($client->getAccessToken());
$token = $obj->{'access_token'};
write($token);
read($token);
} catch (Google_Exception $e) {
echo $e->getMessage();
}
} else {
// 認証スコープ(範囲)の設定
$client->setScopes(Google_Service_Drive::DRIVE);
// 一覧を取得する場合はhttps://spreadsheets.google.com/feedsが必要
$client->addScope('https://spreadsheets.google.com/feeds');
$authUrl = $client->createAuthUrl();
echo '<a href="'.$authUrl.'">アプリケーションのアクセスを許可してください。</a>';
}
function write($token) {
$key = '{スプレッドシートID}';
$url = "https://spreadsheets.google.com/feeds/list/{$key}/od6/private/full";
// 書き込みデータ
$fields = '<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gsx="http://schemas.google.com/spreadsheets/2006/extended">
<gsx:id>0004</gsx:id>
<gsx:name>umi</gsx:name>
<gsx:age>16</gsx:age>
</entry>';
$context = stream_context_create(
array(
'http' => array(
'method'=> 'POST',
'header'=> "Content-Type: application/atom+xml\r\n"."Authorization: Bearer ".$token,
'content' => $fields
)
)
);
$response = file_get_contents($url, false, $context);
// ステータスコードがHTTP/1.1 201なら書き込みOK
echo 'http status is ' . $http_response_header[0];
}
function read($token) {
$key = '{スプレッドシートID}';
$url = "https://spreadsheets.google.com/feeds/list/{$key}/od6/private/full";
// age>16条件
//$url = "https://spreadsheets.google.com/feeds/list/{$key}/od6/private/full?sq=age>16";
// 一覧取得
//$url = 'https://spreadsheets.google.com/feeds/spreadsheets/private/full';
$context = stream_context_create(
array(
'http' => array(
'method'=> 'GET',
'header'=> "Authorization: Bearer ".$token
)
)
);
$response = file_get_contents($url, false, $context);
echo 'http status is ' . $http_response_header[0];
$obj = simplexml_load_string($response);
/* 取得データ表示
echo "<pre>";
print_r($obj);
echo "</pre>";
*/
foreach($obj->entry as $data) {
$gsxNode = $data->children('gsx', true);
echo 'USER ID:'.$gsxNode->id.' Name:'.$gsxNode->name.' Age:'.$gsxNode->age.'<br>';
}
}
3. 실행 결과
4. 주의점과 보충
4.1 GAE/PHP에서는 cURL을 사용할 수 없다
로컬 서버에서는 설정을 변경하여 cURL을 사용할 수 있지만 GAE 서버에서는 cURL을 사용할 수 없습니다. 샘플 프로그램은 file_get_contents()를 사용하여 http 요청을 전송합니다.
로컬 서버에서 cURL을 사용하는 방법
1. app.yaml을 열고 runtime: php55로 변경
2. 프로젝트 폴더의 루트에 php.ini를 넣고 ini 파일에 extension = "curl.so"를 작성하십시오.
4.2 스프레드 시트에 여러 줄 쓰기
GAE에서는 자동으로 favicon에 액세스할 수 있습니다. app.yaml에서 설정하지 않으면 favicon에 액세스 할 때마다 url에
.*
가 설정된 script (php 파일)가 실행됩니다. 이를 피하려면 app.yaml에 favicon을 작성하거나 script 파일 (sample.php)의 url을 기본 .*
에서 /
로 변경하십시오. (루트 액세스 만 수행)4.3 쿼리
스프레드시트를 읽을 때 URL에 쿼리를 추가하여 조건과 일치하는 행을 검색할 수 있습니다.
Google Sheets API 버전 3.0 - Sending a structured query for rows
예: age>16 행 가져오기
$url = "https://spreadsheets.google.com/feeds/list/{$key}/od6/private/full?sq=age>16
참고
PHP로 Google Spreadsheet에 데이터를 넣어보세요 - Qiita
Google Sheets API version 3.0 - Google Apps — Google Developers
URL Fetch PHP API Overview - PHP — Google Cloud Platform
The php.ini File - PHP — Google Cloud Platform
Reference
이 문제에 관하여(Google App Engine for PHP에서 Google 스프레드시트에 읽기/쓰기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hikoalpha/items/90bbaf8a03bc7d688cdf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)