Posted at

Google APIをCLIから利用する手順

More than 3 years have passed since last update.


  • GoogleDeveloperConsoleから認証情報を選択

  • OAuth同意画面でサービス名を登録、その他は任意

  • 認証情報タブから認証除法を追加>OAuth2.0クライアントIDを選択、アプリケーションの種類はその他

  • Downloadリンクからjsonファイルを取得

  • 以下URLのquickstart.phpの手順に従い定義されている情報を編集する
    https://developers.google.com/drive/web/quickstart/php?hl=ja

#変更箇所

define('APPLICATION_NAME', 'Drive API PHP Quickstart'); #任意の名前
define('CREDENTIALS_PATH', '~/.credentials/drive-php-quickstart.json'); #認証後のtokenファイルを格納する場所(任意)
define('CLIENT_SECRET_PATH', 'client_secret.json'); #ダウンロードしてきたjsonファイル
#利用したいサービス名が入る
define('SCOPES', implode(' ', array(
Google_Service_Drive::DRIVE_METADATA_READONLY)
));


  • 書き込み完了したらコマンドラインから、php quickstart.phpを実行

  • 認証画面へのURLが表示されるのでブラウザで開く,承認後にでるIDをターミナル上で入力すると指定した場所にtokenファイルが生成されている

  • GoogleDrive内のファイルリストが表示されればOK


Drive REST APIでFileの情報を取得する

$file = $service->files->get($fileId); //$servie is Google Service Object

リファレンス https://developers.google.com/drive/v2/reference/files/get


GoogleAppsScriptのRESTExecutionAPIを使ってSpreadsheetsをDB代わりに使う

経緯

どうも2015年11月時点ではもともとあったSheetsAPIが使えなくなっているようで、GoogleDevelopersのサイトではAppsScriptを使うといろいろできますよ的なことが記載されている。今年の夏くらいまでは利用できたようなのだが、、仕方ないので初AppsScriptを使って作ってみます。


Google Apps Script

https://developers.google.com/google-apps/spreadsheets/

Caught exception: {

"error": {
"code": 403,
"message": "The caller does not have permission",
"errors": [
{
"message": "The caller does not have permission",
"domain": "global",
"reason": "forbidden"
}
],
"status": "PERMISSION_DENIED"
}
}


  • - ↑Scriptエディターの画面でリソース>DevelopersConsoleプロジェクト>プロジェクトを設定でプロジェクトを登録する


Google playgroundでの実行

参考にしたリンク http://qiita.com/soundTricker/items/1bcfc5c9e80d29a7ae4b


未解決の内容

コマンドラインから実行するofflineでのアクセスの場合セッションが途切れるためか、tokenが失効されてしまい毎回認証画面で認証する必要があり、コレに関しては解決案は見つからず。。


ちなみに

Google Apps Scriptにはcronのような機能があり、URL Fetch Service(UrlFetchApp)との合わせ技で自動phpスクリプトの実行が実現可能というのを初めて知った。

これはいつか役に立ちそうです。