内容へ移動
ClownWiki
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
temporary:google_api
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Google API ====== ===== アプリケーション固有のパスワード ===== 2段階認証の設定をしているアカウントで認証する場合、独自に2段階認証プロセスを実装するのは困難なため、アプリケーション固有のパスワードを生成して、認証に用います。 - ブラウザからgoogleアカウントをクリックして、ポップアップから「アカウント」をクリックします。 {{twitter_api:google API:001.png}} - 左のメニューから「セキュリティ」をクリックして、右の「2段階認証プロセス」の説明文中の「アプリケーション固有のパスワードの管理」をクリックします。 {{twitter_api:google API:002.png}} - 「名前」に適当な名前を入力して「パスワードの生成」を押下します。 {{twitter_api:google API:003.png}} - パスワードが表示されますので、これを作成しているブラウザアプリなどの認証処理のパスワードに使用します。 {{twitter_api:google API:004.png}} ===== Zend_Gdataインストール ===== http://framework.zend.com/manual/1.12/ja/zend.gdata.introduction.html <code> # wget "https://packages.zendframework.com/releases/ZendGdata-1.12.3/ZendGdata-1.12.3.tar.gz" # tar xzvf ZendGdata-1.12.3.tar.gz # cp -r ZendGdata-1.12.3/library/Zend /usr/local/clown/bin/ </code> ===== PHP実装のお作法 ===== <code> <?php set_include_path(get_include_path() . PATH_SEPARATOR . '/usr/local/clown/bin'); require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata'); Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); Zend_Loader::loadClass('Zend_Gdata_Calendar'); /* ClientAuth 認証 */ // ClientAuth 認証用のパラメータ $Email = "taro@clown.com"; $Password = "アプリケーション固有のパスワード"; $Service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // 認証済みHTTPクライアント作成(ClientLogin版) $Client = Zend_Gdata_ClientLogin::getHttpClient($Email, $Password, $Service); </code> ===== Google Calendar ===== http://framework.zend.com/manual/1.12/ja/zend.gdata.calendar.html <code> $service = new Zend_Gdata_Calendar($Client); $query = $service->newEventQuery(); // カレンダーID(default/*****) $query->setUser('clown.com_ulamstbg1c1b9tp4elv2krmg88@group.calendar.google.com'); // 公開/非公開 $query->setVisibility('private'); // 情報(full/composite/basic) $query->setProjection('full'); // $query->setOrderby('starttime'); //並べ替えの昇順・降順を指定(ascend/descend) $query->setSortorder('ascend'); //期間指定時はコメントアウト //$query->setFutureevents('true'); // 指定した日付の範囲からのイベントの取得 $query->setStartMin('2013-12-09'); $query->setStartMax('2013-12-29'); // 全文検索によるイベントの取得 //$query->setQuery("KingVM"); // カレンダーサーバからイベントの一覧を取得します try { $eventFeed = $service->getCalendarEventFeed($query); } catch (Zend_Gdata_App_Exception $e) { echo "エラー: " . $e->getMessage(); } // リストの内容を順に取得し、HTML のリストとして出力します echo "<ul>"; foreach ($eventFeed as $event) { $list = $event->when[0]->getStartTime(); $list .= ”~”; $list .= $event->when[0]->getEndTime(); $list .= ” ”; $list .= $event->title; $list .= " (Event ID: "; $list .= $event->id; $list .= ")"; echo "<li>" . $list . "</li>"; } echo "</ul>"; </code> ===== Google Spreadsheets ===== http://framework.zend.com/manual/1.12/ja/zend.gdata.spreadsheets.html <code> /* スプレッドシートの読み込み */ // Spreadsheetサービスのインスタンス作成 $Spreadsheet = new Zend_Gdata_Spreadsheets($Client); //スプレッドシートのキーを知らなければ、 // スプレッドシート名 $spreadsheetName = "test"; $Feed = $Spreadsheet->getSpreadsheetFeed(); // スプレッドシートのキー取得 $i = 0; foreach($Feed->entries as $Entry) { if( $Entry->title->text===$spreadsheetName) { $Key = split('/', $Feed->entries[$i]->id->text); $SpreadsheetKey = $Key[5]; break; } $i++; } //スプレッドシートのキーを知っていれば $SpreadsheetKey = "tX6waVdKTSIWZdwwKe8-bfg"; //ワークシートIDを知らなければ // ワークシート(タブ)名 $worksheetName = "sheet1"; /* ワークシートIDの取得 */ // クエリの作成 $Query = new Zend_Gdata_Spreadsheets_DocumentQuery(); $Query->setSpreadsheetKey($SpreadsheetKey); // ワークシートフィードの取得 $Feed = $Spreadsheet->getWorksheetFeed($Query); // ワークシートの検索 $i = 0; foreach($Feed->entries as $Entry) { $worksheetId = split('/', $Feed->entries[$i]->id->text); if( $Entry->title->text===$worksheetName ){ $WorksheetId = $worksheetId[8]; //echo("ワークシートのID:{$WorksheetId}<br>"); break; } $i++; } //ワークシートIDを知っていれば $WorksheetId = "od6"; // リストフィードの取得 $listFeed = searchListFeed($Spreadsheet,$SpreadsheetKey,$WorksheetId); </code> ==== tips ==== ■日付指定は9時間ずれる(+9時間される) 以下のスケジュールをgoogleカレンダーに定義して、12/25 00:00:00~12/25 23:59:59の予定を取得したい <code> 12/24 17:00~20:00 7台 12/24 21:00~01:00 10台 12/25 01:00~03:00 4台 12/25 09:00~10:00 6台 12/25 10:00~11:00 5台 12/26 08:00~09:00 10台 </code> 日時指定で12/24~12/26を指定する ⇒12/24 09:00:00~12/26 08:59:59の予定が取得される <code> 2013-12-24T17:00:00.000+09:00,2013-12-24T20:00:00.000+09:00,7 2013-12-24T21:00:00.000+09:00,2013-12-25T01:00:00.000+09:00,10 2013-12-25T01:00:00.000+09:00,2013-12-25T03:00:00.000+09:00,4 2013-12-25T09:00:00.000+09:00,2013-12-25T10:00:00.000+09:00,6 2013-12-25T10:00:00.000+09:00,2013-12-25T11:00:00.000+09:00,7 2013-12-26T08:00:00.000+09:00,2013-12-26T09:00:00.000+09:00,10 </code> 日時指定で12/25~12/26を指定する ⇒12/25 09:00:00~12/26 08:59:59の予定が取得される <code> 2013-12-25T09:00:00.000+09:00,2013-12-25T10:00:00.000+09:00,6 2013-12-25T10:00:00.000+09:00,2013-12-25T11:00:00.000+09:00,7 2013-12-26T08:00:00.000+09:00,2013-12-26T09:00:00.000+09:00,10 </code> 日時指定で12/24 15:00~12/25 15:00を指定する ⇒12/25 00:00:00~12/25 23:59:59の予定が取得される <code> 2013-12-24T21:00:00.000+09:00,2013-12-25T01:00:00.000+09:00,10 2013-12-25T01:00:00.000+09:00,2013-12-25T03:00:00.000+09:00,4 2013-12-25T09:00:00.000+09:00,2013-12-25T10:00:00.000+09:00,6 2013-12-25T10:00:00.000+09:00,2013-12-25T11:00:00.000+09:00,7 </code> ■連続のイベントは期間指定では一度しか抽出されない 以下のスケジュールをgoogleカレンダーに定義 ※12/24 13:00~15:00でスケジュールを登録して、27日まで毎日で定義 <code> 12/24 13:00~15:00 8台(※) 12/24 17:00~20:00 7台 12/24 21:00~01:00 10台 12/25 01:00~03:00 4台 12/25 13:00~15:00 8台(※) 12/25 09:00~10:00 6台 12/25 10:00~11:00 5台 12/26 08:00~09:00 10台 12/26 13:00~15:00 8台(※) 12/27 13:00~15:00 8台(※) </code> 日時指定で12/24 15:00~12/26 15:00を指定する(12/25 00:00~12/27 00:00を取得したい) ⇒12/25 13:00~15:00と12/26 13:00~15:00の2回あるはずが、取得は一度だけ <code> 2013-12-25T13:00:00.000+09:00,2013-12-25T15:00:00.000+09:00,8 2013-12-24T21:00:00.000+09:00,2013-12-25T01:00:00.000+09:00,10 2013-12-25T01:00:00.000+09:00,2013-12-25T03:00:00.000+09:00,4 2013-12-25T09:00:00.000+09:00,2013-12-25T10:00:00.000+09:00,6 2013-12-25T10:00:00.000+09:00,2013-12-25T11:00:00.000+09:00,7 2013-12-26T08:00:00.000+09:00,2013-12-26T09:00:00.000+09:00,10 </code> 日時指定で12/25 15:00~12/27 15:00を指定する(12/26 00:00~12/28 00:00を取得したい) ⇒12/26 13:00~15:00と12/27 13:00~15:00の2回あるはずが、取得は一度だけ <code> 2013-12-26T13:00:00.000+09:00,2013-12-26T15:00:00.000+09:00,8 2013-12-26T08:00:00.000+09:00,2013-12-26T09:00:00.000+09:00,10 </code> ■終日スケジュールは翌日まで取得対象となる 以下のスケジュールをgoogleカレンダーに定義 <code> 1/7 9台 </code> 日時指定で1/6 15:00~1/7 15:00を指定する(1/7 00:00:00~59:59:59を取得したい) <code> 2014-01-07,2014-01-08,9 </code> 日時指定で1/7 15:00~1/8 15:00を指定する(1/8 00:00:00~59:59:59を取得したい) ⇒1/8日中でも処理の対象となる <code> 2014-01-07,2014-01-08,9 </code> ■画面上削除したスケジュールは実際に削除される場合と、ステータスで削除となる場合がある。 取得したスケジュールの$event->eventstatusがcanceledとなっているものは、無効なスケジュール。 ■日時のないスケジュールが存在する場合がある。 取得したスケジュールの$event->when[0]がないものは、無効なスケジュール。
temporary/google_api.txt
· 最終更新: 2025/02/16 13:53 by
127.0.0.1
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ