Ticker

6/recent/ticker-posts

Header Ads Widget

クエリビルダー ブログシリーズ: パート 3 - リソース スキーマの作成

この記事は Devin Chasanoff による Google Ads Developer Blog の記事 "The Query Builder Blog Series: Part 3 - Creating a Resource Schema" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

このブログシリーズでは、新しく改善されたインタラクティブ Google 広告クエリビルダーの構築過程についてお伝えしています。シリーズのパート 2 では、インタラクティブ クエリビルダー Angular アプリケーションの正規データセットとして利用する詳細な JSON リソース スキーマの設計について説明しました。パート 3 では、GoogleAdsFieldService を使ってそのスキーマを作成する方法を取り上げます。

データの取得

パート 2 で説明したスキーマのデータの大半は、次のクエリを使って GoogleAdsFieldService という API を呼び出すことで作成します。

SELECT name, category, data_type, selectable, filterable, sortable, selectable_with, metrics, segments, is_repeated, type_url, enum_values, attribute_resources

結果は、Google Ads API で利用できるすべてのフィールドについての JSON オブジェクトの配列です。配列の各オブジェクトには、先ほどの SELECT 句のフィールドが含まれています。たとえば、ad_group のリスト項目は次のようになります。

{
"resourceName": "googleAdsFields/ad_group",
"name": "ad_group",
"category": "RESOURCE",
"dataType": "MESSAGE",
"selectable": false,
"filterable": false,
"sortable": false,
"selectableWith": [...],
"metrics": [...],
"segments": [...],
"isRepeated": false,
"typeUrl": "com.google.ads.googleads.v6.resources.AdGroup",
"enumValues": [],
"attributeResources": [...]
}


これをキーと値のペアに変換します。キーをエンティティ名、値をエンティティのメタデータにして、エンティティからメタデータを簡単に検索できるようにします。たとえば、ad_group エントリは次のようになります。

{
"ad_group": {
"resourceName": "googleAdsFields/ad_group",
"name": "ad_group",
"category": "RESOURCE",
"dataType": "MESSAGE",
"selectable": false,
"filterable": false,
"sortable": false,
"selectableWith": [...],
"metrics": [...],
"segments": [...],
"isRepeated": false,
"typeUrl": "com.google.ads.googleads.v6.resources.AdGroup",
"enumValues": [],
"attributeResources": [...]
}


パート 2 で設計したスキーマと比べると、変換したオブジェクトにはいくつかのフィールドが存在しないことがわかります。そこで、属性、フィールド、説明、表示名を表すセクションを追加します。

属性

スキーマの設計を思い出してみると、それぞれのリソースに attributes という名前の配列があり、そのリソース自体と任意の属性付きリソースに存在するすべてのフィールド名が含まれていました。この配列は、GoogleAdsFieldService クエリの結果を反復処理し、そのリソースかいずれかの属性付きリソースで始まるエントリ名にドットを追加することで作成できます。

フィールド

このスキーマの fields エントリは、(a)先ほど作成した属性配列の項目、(b)リソースの指標、(c)リソースのセグメントのそれぞれがエントリとなるオブジェクトです。各エントリの値は、先ほど作成したオブジェクトのそれぞれのフィールドの値となります。ただし、各フィールドに incompatible_fields 配列を追加する必要があります。

fields オブジェクトの各エントリの incompatible_fields 配列を作成するには、トップレベル オブジェクトに存在するフィールド、指標、セグメントのそれぞれが、評価対象のフィールドの selectable_with と一致するかどうかを確認します。一致しない場合、そのフィールド、指標、セグメントを incompatible_fields 配列に追加します。

説明

次に、トップレベルのリソースと fields エントリ内の項目のそれぞれに説明を追加します。ここで重要なのは、トップレベルのリソースによって、フィールドの説明が異なる場合があることです。たとえば、ad_group.id の説明には「出力のみ。広告グループの ID。」とありますが、campaign.id の説明には「出力のみ。キャンペーンの ID。」とあります。REST ディスカバリー ドキュメントには、ネストした説明が含まれています。これは正規の説明オブジェクトを作るために利用できるので、これを使ってスキーマを設定します。このステップには解析とフォーマット設定が必要ですが、詳細は割愛します。必要になったときのために、REST ディスカバリー ドキュメントが用意されていることを覚えておいてください。今のところ、この方法が利用できる最適なソリューションですが、GoogleAdsFieldService から説明が返されるようになれば、そちらを使う方が簡単でしょう。

表示名

残る作業は、リソース スキーマの表示名フィールドの設定です。この作業は単純で、名前に含まれるアンダースコアをスペースで置換し、各単語の最初の文字を大文字にするだけです。

リソースのフィルタリング

これで、リソース スキーマの内容をすべて設定できました。ただし、これには GoogleAdsFieldService クエリが返したすべてのリソース、フィールド、セグメント、指標が含まれています。このスキーマをフィルタリングし、categoryRESOURCE である項目のみを含むようにします。

まとめ

詳細なフィールド情報と、それぞれのフィールドと同時に選択できないフィールドのリストを含む、拡張リソース スキーマが作成できました。Angular アプリケーションでは、このスキーマを利用します。今回の投稿では、以下について説明しました。
  • GoogleAdsFieldService を使ってフィールドのメタデータを取得する方法
  • GAQL でのフィールドの同時使用可否
  • REST ディスカバリー API
Google Ads API でできることについての理解が深まれば幸いです。ご質問やさらにサポートが必要なことがありましたら、フォーラムまたは googleadsapi-support@google.com にご連絡ください。




source https://developers-jp.googleblog.com/2021/06/3.html

Post a Comment

0 Comments