Google Ads API ,WindowsとPHPの場合

google ads api を使用するには、広告アカウントの設定からGCPの登録、アクセストークンの取得など下準備がいろいろとある。

それは以下を参照して、突破するとして、その後どのようにAPIを使用するか。

参考

https://qiita.com/navyracooon/items/b1da436318876df50798

APIを使用する方法は2種類ある。

APIに直接HTTPで送信する。もしくは、

Googleが作成した、簡易的にAPIを使用できるクライアントライブラリを使う方法である。

こちらは、githubやcomposerなどからライブラリをインストールして、gRPCの拡張機能もインストールする必要がある。

HTTPで直接送信する場合も、厄介なのがGoogle独自のクエリ言語(Google Ads Query Language(GAQL))を使っている。

これを参考にするためにライブラリをインストールしてexampleフォルダ内を参照するのもよい。

参考

https://cloud.google.com/php/grpc?hl=ja#php-implementation

windowsでphp8.2以降の環境の場合、現時点(2024年2月)で拡張機能のライブラリ grpc.dllがphp8.1までのものしかないため、自分でライブラリをビルドするか、HTTPで直接送信するしかない。

参考

https://cloud.google.com/php/docs/supported-php-versions?hl=ja

ちなみに、UNIX系はコマンドを打てば、拡張機能をインストールできる。

以下ビルド方法を書いておくが、成功しなかったので、参考まで。

PHPでgRPCをソースからビルドする方法

以下参照のこと。

参考

https://grpc.io/docs/languages/php/quickstart/

1.gRPCのリポジトリをクローン

git clone --recurse-submodules -b v1.62.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc

このバージョンが高すぎてもダメかも。

2.クイックスタートの例のディレクトリに移動

cd grpc/examples/php

3.gRPCのComposerパッケージをインストール

./greeter_proto_gen.sh composer install

ここでエラーが出る。

makeコマンドがないとか。greeter_proto_gen.shがないとか。。。

調べて以下のようなエラーも出た。

 bazel-bin/external/com_google_protobuf/protoc: No such file or directory

参考

https://github.com/grpc/grpc/issues/31408

4.gRPCサービスを更新

例えば、

examples/protos/helloworld.proto

を編集して新しいSayHelloAgainメソッドを追加します。

5.gRPCコードを再生成

grpcのルートディレクトリから以下のコマンドを実行:

protoc --proto_path=examples/protos \\ --php_out=examples/php \\ --grpc_out=examples/php \\ --plugin=protoc-gen-grpc=bins/opt/grpc_php_plugin \\ ./examples/protos/helloworld.proto

以上の手順で、PHP 8.2用のgRPCのDLLをソースからビルドすることができるとのこと。

このあと、protobufも必要になる。

grpcに対応するprotobufのバージョンは以下を参照

参考

https://chromium.googlesource.com/external/github.com/grpc/grpc/+/HEAD/src/php