前回は 自端末の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 にアクセスしてファイルの内容を取得する方法をご紹介しました。
おそらく、サービスアカウントの鍵を入手するのが一番大変だと思います。
しかし、サービスアカウントは非常に便利なので、この機会に取得して、いろいろなプログラムで使っていきましょう!
ではまた。
コメント