🐷

GA4 phpライブラリでnextPageTokenを使う風

2023/06/01に公開

GA4ベータユーザーさん こんにちは

ga4 V1alpha V1beta を使用しているみなさまこんにちは。

pageTokenはGoogle全般で使われている10000件以降はこのトークン指定して
次の10000件取得してねという仕様です。

GA4のドキュメントにも記載してあります。でも少なくともphpライブラリにはなさそうです。
サンプルを世界中で検索しましたがでてきません。なさそうです。

chatGPT3.5に聞いてもホラばっか吹いて、

PHP Fatal error:  Uncaught Error: Call to undefined method
PHP Fatal error:  Uncaught Error: Cannot use object of type

に、なりまくりです。そりゃそうです。
ドキュメントに偽りが記載されているからです。

githubのソースもクロールしてほしいです。chatGPT4なら解決?
いえ解決しません、ないんだからnextPageTokenが。

解決方法

レコードをチェックします。テストしたい場合は1万ではなくlimit2件とかにします。

$date = "2023-06-01";
$limit = 10000; // 1ページあたりの最大レコード数
$offset = 0; // オフセットの初期値

do {
	//GA4からレコードを取得
	$response = getGa4Data($date);

	//ここで件数があれば、BigQueryにいれてます。
	if(count($response->getRows())) {
		#var_dump("レコード数: " .count($response->getRows()), $offset);
		insertBqRecord($date, $response);
	}
} while (count($response->getRows()));//ここで0じゃなければループさせます。

GA4の取得や、BQの中身は今回本題ではないのではしょった記載にします。
do-whileで回すたびにoffsetを進めないといけません。

/**
 * getGa4Data GA4データの取得
 *
 * @param str 日付
 **/
function getGa4Data($date) {
	global $limit, $offset;

	//省略
	//...
	//...

	//次のオフセットを指定
	$offset += $limit;

	//取得したレコードを返す
	return $response;
}

こんな感じ。

Discussion