質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

345閲覧

Google AdWords APIを CakePHPから実行する方法

takujiji

総合スコア24

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2018/02/23 03:14

Google AdWords APIを CakePHPから呼び出して実行しようとしていますが、Classの扱いがよく分かっておらず、エラーが出ています。
対応の方法をご教授いただけませんでしょうか?

Account Performance Report
https://developers.google.com/adwords/api/docs/appendix/reports/account-performance-report

上記のものを実行するため、APIを下記の場所に設置しました。
/app/Vendor/adwords-examples-33.0.0/examples/AdWords/v201710/Reporting/

そして、
/app/Vendor/adwords-examples-33.0.0/
の場所で、下記のコマンドを実行して APIの動作を確認しました。
php examples/AdWords/v201710/Reporting/DownloadCriteriaReportWithSelector.php

「DownloadCriteriaReportWithSelector.php」を多少カスタマイズしていますが、基本構造はそのままで、この状態では想定しているレポートのデータを取得できています。

「DownloadCriteriaReportWithSelector.php」のソースファイルは、下記にあるものです。
https://github.com/googleads/googleads-php-lib/blob/master/examples/AdWords/v201710/Reporting/DownloadCriteriaReportWithSelector.php

これを、下記のような流れの CakePHPのシェルで実行しようとしています。

php

1<?php 2App::uses('ComponentCollection', 'Controller'); 3App::import('Vendor', 'adwords-examples-33.0.0/examples/AdWords/v201710/Reporting/DownloadCriteriaReportWithSelector'); 4 5class GoogleReportShell extends Shell { 6 7 (中略) 8 9 public function google_ad() { 10 //レポートクラス読み込み 11 $ReportDownload = new DownloadCriteriaReportWithSelector; 12 13 $file_name = $ReportDownload->DownloadCriteriaReportWithSelector->main(); 14 15 (略) 16

PHP Fatal error: Class 'DownloadCriteriaReportWithSelector' not found in /home/app/Console/Command/GoogleReportShell.php on line 1663

というエラーがでます。
エラーの行数は、「$ReportDownload = new DownloadCriteriaReportWithSelector;」の行です。

「DownloadCriteriaReportWithSelector.php」を置いてある場所は、「App::import('Vendor',....」で指定しているパスで合っていると思っていますので、そもそも呼び出し方が違っているのではないか、と思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/25 11:39

うろ覚えだけど第二引数はクラス名(ディレクトリ構成ではない)なはず
takujiji

2018/02/26 02:02

コメントありがとうございます。 App::import()の記述方法については、下記のページを見る限りでは書き方には問題がないように感じています。 https://qiita.com/katsukii/items/8d2126177446d23ab37d   ただ、上記のページの記事が正しいか分かりませんでしたので、下記のページにある記述を参考に、 https://book.cakephp.org/2.0/ja/core-utility-libraries/app.html   下記の様に記述してみましたが、エラーの内容も含め、特に変化はありませんでした。 App::import('Vendor', 'DownloadCriteriaReportWithSelector', array("file"=>"adwords-examples-33.0.0/examples/AdWords/v201710/Reporting/DownloadCriteriaReportWithSelector.php"));
退会済みユーザー

退会済みユーザー

2018/02/26 03:11

ドットがないと? > adwords-examples-33.0.0
退会済みユーザー

退会済みユーザー

2018/02/26 03:33

ざくっと確認、 ネームスペースってしってますか?(対象ファイルは別ネームスペース領域)
退会済みユーザー

退会済みユーザー

2018/02/26 03:33

対象ファイルには必要ライブラリを composer で取得するようになっているのは気づいてますか?
退会済みユーザー

退会済みユーザー

2018/02/26 03:34

アドワーズのアクセスキー(トークン等)は取得済みですか
takujiji

2018/02/26 07:04

コメントありがとうございます。 ネームスペースについては、そういうものがあることは知ってはいるという程度でして、それを何となく使っていたことが原因のようでした。ネームスペースについて改めて確認して、Classを完全修飾名という形式で記述してみたところ動きました。修正内容は、自己解決のところに書かせていただきます(たぶん、もっとスマートな書き方があるんじゃないかと思いますが...)。アドバイス、ありがとうございました。
guest

回答1

0

自己解決

下記の内容を修正すると動くようになりました。
修正した個所は、以下の通りです。

1・「App::import(...」の部分の修正
2・「$ReportDownload = new ...」の行をコメントアウト
3・「$file_name = ...」の行を修正

修正したソースコードは以下のようになりました。

PHP

1<?php 2App::uses('ComponentCollection', 'Controller'); 3App::import('Vendor', 'DownloadCriteriaReportWithSelector', array("file"=>"adwords-examples-33.0.0/examples/AdWords/v201710/Reporting/DownloadCriteriaReportWithSelector.php")); 4 5class GoogleReportShell extends Shell { 6 7 (中略) 8 9 public function google_ad() { 10 //レポートクラス読み込み 11// $ReportDownload = new DownloadCriteriaReportWithSelector; 12 13 $file_name = \Google\AdsApi\Examples\AdWords\v201710\Reporting\DownloadCriteriaReportWithSelector::main(); 14 15 (略)

投稿2018/02/26 07:06

takujiji

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問