前回は 自端末のPython から GoogleDriveAPI を使用して GoogleDriveにアクセスする方法 をご紹介しました。
今回はレンタルサーバーから PHP で GoogleDriveAPI を使用して GoogleDrive のファイルを取得する方法をご紹介します。
1.GoogleDriveAPI の サービスアカウントキー を取得
以下の記事を参考に プロジェクトの作成、GoogleDriveAPI の有効化、サービスアカウントの鍵を取得しましょう。正直なところ、これが一番大変なところですが、以下の記事では ひとつひとつ 画像付きで解説していますので、最後まで行けると思います。
2.サービスアカウントキー(JSON)をサーバーにアップロード
先ほど取得した サービスアカウントの鍵 を FTPソフト でサーバーにアップロードします。

3.ライブラリをインストール
google/apiclient ライブラリのインストール
実行したいプログラム の ディレクトリに移動 し、以下のコマンドを実行します。
| 1 | composer require google/apiclient | 
composer をインストールする方法
もしサーバーに composer が入っていない場合は次の記事を参考に、まずは composer をサーバーにインストールしましょう!

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 | <?php require 'vendor/autoload.php'; $rootDir = dirname(__FILE__, 4); // 現在のスクリプトの位置から4階層上 $jsonPath = $rootDir . "/jitantech-**************.json"; // ここにサービスアカウントの鍵名 // Googleサービスアカウントキーを読み込む $client = new Google_Client(); $client->setAuthConfig($jsonPath); $client->addScope(Google_Service_Drive::DRIVE); // Google Drive APIに接続 $service = new Google_Service_Drive($client); // フォルダ内のファイルを取得 $folderId = "*******************************";  // ここにフォルダIDを入れます $files = $service->files->listFiles([     'q' => "'{$folderId}' in parents" ]); // 取得したファイルの繰り返し foreach ($files->getFiles() as $file) {     echo "ファイル名: " . $file->getName() . " (ID: " . $file->getId() . ")<br>"; 	// 読み取りたいファイルのID 	$fileId = $file->getId(); 	$response = $service->files->get($fileId, array('alt' => 'media')); 	// ファイルの内容を取得 	$content = $response->getBody()->getContents(); 	echo nl2br($content); } ?> | 
使い方
サービスアカウントの鍵を指定する
| 1 2 | $rootDir = dirname(__FILE__, 4); // 現在のスクリプトの位置から4階層上 $jsonPath = $rootDir . "/jitantech-**************.json"; // ここにサービスアカウントの鍵名 | 
このプログラムは /jitantech.com/public_html/youtube-project/プログラム名.php で実行しています。サービスアカウントの鍵は /jitantech-.json に置いています。ですので プログラムから見ると 4階層上 に鍵がある状態です。
フォルダIDを指定する
| 1 2 3 4 5 | // フォルダ内のファイルを取得 $folderId = "*******************************";  // ここにフォルダIDを入れます $files = $service->files->listFiles([     'q' => "'{$folderId}' in parents" ]); | 
・GoogleDrive のフォルダIDの調べ方
フォルダを開く ⇒ URL の最後の部分 がフォルダIDです。

・q って何?
 q はフォルダID {$folderId} の中にある ファイルを検索 するGoogleAPIのクエリです。
ファイルの内容を取得する
| 1 2 3 4 5 6 7 | // 読み取りたいファイルのID $fileId = $file->getId(); $response = $service->files->get($fileId, array('alt' => 'media')); // ファイルの内容を取得 $content = $response->getBody()->getContents(); echo nl2br($content); | 
・'alt' => 'media' って何?
Google Drive内の特定のファイルの内容を直接ダウンロード するのに使われます。
・$response->getBody()->getContents() は何をしている?
 Google Drive APIから取得した ファイルの中身(テキストデータ) を $content に格納します。
・echo nl2br($content)  は何をしている?
 $content の内容を表示する際に、改行コード \n を <br> に変換し、Webページ上で改行されるようにします。
実行結果
GoogleDrive に保存されている テキストファイルの内容が ブラウザに表示されました!!

おわりに
今回は Xserver から GoogleDrive にアクセスしてファイルの内容を取得する方法をご紹介しました。
おそらく、サービスアカウントの鍵を入手するのが一番大変だと思います。
しかし、サービスアカウントは非常に便利なので、この機会に取得して、いろいろなプログラムで使っていきましょう!
ではまた。
 
  
  
  
  


コメント