[go: up one dir, main page]

この記事は Devin Chasanoff による Google Ads Developer Blog の記事 "Announcing the Google Ads Query Language Query Validator" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

この度、Google Ads Query Language(GAQL)のクエリ バリデータをリリースします。これにより、ブラウザを使ってデベロッパー ドキュメント サイトで GAQL クエリを直接検証できるようになります。この新しいツールは、効率的なワークフローを実現できるインタラクティブ GAQL クエリビルダーに組み込まれています。

新しいクエリ バリデータを使うには、直接クエリ バリデータ ページにアクセスするか、任意のリソースのクエリビルダー ページで [Enter or edit a query] ボタンをクリックします。



クエリ バリデータによるクエリの検証が成功した後、[Continue Editing in Query Builder] ボタンをクリックすると、インタラクティブ クエリビルダーを使ってクエリの編集を続けることができます。





クエリ バリデータは、無効なクエリのエラーについてのフィードバックも提供します。




さらに、クエリビルダーで作成したクエリを、クエリ バリデータを使って手動で編集や検証することもできます。これをするには、クエリビルダーでクエリを作成してから [Enter or Edit a Query] ボタンをクリックします。





新しいクエリ バリデータを使う際は、ページの右上に表示されている [Send feedback] ボタンをクリックして、お気軽にフィードバックをお送りください。

ご質問やさらにサポートが必要なことがありましたら、フォーラムまたは googleadsapi-support@google.com までご連絡ください。



Reviewed by Thanet Knack Praneenararat - Ads Developer Relations Team

この記事は Mike Cloonan による Google Ads Developer Blog の記事 "Updating Default Reporting Versions in Google Ads Scripts" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

今後、Google 広告スクリプトで search リクエストと、Google Ads Query Language を使う report リクエストを対象に、デフォルトのレポート バージョンの更新方法を変更します。これまでは、最大数か月にわたって新しいバージョンが利用できない期間がありましたが、今後は新しいレポート機能がリリースされたまもなくアクセスできるようになります。この変更は、v201809 の AdWords API ベースのレポートを使い続けている方には影響しません。

今後は最新バージョンの Google Ads API のリリースから 2 週間以内に、デフォルトのレポート バージョンを更新し、最新バージョンが使えるようになります。たとえば、v8 がリリースされるとその 2 週間以内に、GAQL を使う report 呼び出しと、すべての search 呼び出しについて、デフォルトのレポート バージョンを更新し、v8 を使うようにします。

スクリプトに悪影響が生じる可能性があり特定のバージョンに固定したい場合、手動でバージョンを指定することもできます。これはデフォルトよりも優先されるので、次のバージョンの準備が整うまでアップデートを延期できます。延期する場合、Google Ads API のバージョンが提供終了になるタイミングに注意してください。新しいバージョンにアップデートしないと、スクリプトが失敗します。API のバージョンを設定する例を次に示します。

report の場合 :
var report = AdsApp.report(query, {apiVersion: 'v7'});
search の場合 :
var results = AdsApp.search(query, {apiVersion: 'v7'});
このリリースの一環として、デフォルト(現在は v5)を v7 にアップデートします。v6 と v7 で行われたレポートのアップグレードの全一覧は、Google Ads API リリースノート ページで確認できます。

質問がある方は、サポートを得られるようにフォーラムに投稿してください。

- Google 広告スクリプト チーム、Mike Cloonan
Reviewed by Thanet Knack Praneenararat - Ads Developer Relations Team

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


このブログシリーズでは、新しく改善されたインタラクティブ Google 広告クエリビルダー ツールの構築過程についてお伝えしています。シリーズのパート 6 では、クエリのフィールドの選択と選択解除の方法について説明しました。パート 7 では、ユーザーの選択に基づいてクエリを検証する方法について説明します。

背景
パート 5 ではフィールドの同時選択可否について説明し、パート 6 でも選択可否について少し触れました。それでも、クエリビルダーを使って無効な Google Ads Query Language(GAQL)文字列を作ることは可能です。それを対処するため、パート 6 で SelectionService に Observable をサブスクライブする ValidationService を作成します。Observable がトリガーされるたびに、一連の検証テストを実行してエラー メッセージの一覧を生成します。ValidationService には、別の Observable を作成し、検証が行われるたびに通知を受けるようにします。こうすることで、クエリにエラーが含まれている場合、ユーザーに通知できるようになります。ユーザーが何も選択していない場合は、アプリケーションが初期状態であることを示しているため、エラーは表示されません。





以下を確認する検証テストをします。
  • SELECT 句にフィールドが含まれている
  • コア日付の選択が有効である
  • click_view の日付フィルタが有効である
  • change_event と change_status の日付フィルタが有効である
  • change_event と change_status の LIMIT が有効である

SELECT 句にフィールドが含まれている有効な GAQL クエリには、SELECT 句に少なくとも 1 つの有効なフィールドが含まれている必要があります。選択されたのが SELECT 以外の句で、SELECT 句が空だった場合、エラーを生成します。

コア日付の選択が有効であるクエリのいずれかの句にコア日付セグメント(segments.date、segments.week、segments.month、segments.quarter、segments.year)がある場合、WHERE 句のフィルタ条件を組み合わせたときに、少なくとも 1 日の日付範囲を表すようなコア日付セグメントの有限な日付範囲ができなければなりません。クエリにコア日付セグメントが存在しない場合、エラーは生成されません。


それ以外の場合は、WHERE 句のコア日付セグメントによるフィルタを組み合わせたときに、有限の範囲になることを確認します。言い換えるなら、WHERE segments.date > ‘2021-01-01’ などのフィルタが 1 つしかない場合は、日付の範囲が閉じられていないので、失敗します。この場合はエラーが生成されます。ただし、WHERE segments.date > ‘2021-01-01’ AND segments.date < ‘2021-02-01’、WHERE segments.date = ‘2021-01-01’、WHERE segments.date DURING LAST_7_DAYS といったフィルタは有効です。この 3 つの例には開始日と終了日があるので、エラーは生成されません。


最後に、コア日付セグメントによるフィルタが有限の範囲になる場合、それを組み合わせたときに少なくとも 1 日の範囲になることをチェックします。たとえば、フィルタ条件 WHERE segments.date = ‘2021-01-01’ AND segments.date BETWEEN ‘2021-02-01’ AND ‘2021-03-01’ を含むクエリは、両方のフィルタ条件を満たす日付が存在しないので、失敗します。この場合はエラーが生成されます。ただし、フィルタ条件 WHERE segments.date BETWEEN ‘2021-01-01’ AND ‘2021-01-31’ AND segments.date >= ‘2021-01-15’ AND segments.date < ‘2021-03-01’ は有効です。すべてのフィルタ条件を満たす日付範囲は ‘2021-01-15’ - ‘2021-01-31’ なので、エラーは生成されません。

click_view の日付フィルタが有効であるclick_view が FROM 句のメインリソースである場合、他の選択内容にかかわらず、WHERE 句に直近 90 日間の 1 日を指定する日付フィルタが存在しなければなりません。
change_event と change_status の日付フィルタが有効であるFROM 句のリソースが change_event または change_status である場合、「コア日付の選択が有効である」ルールと同じように、WHERE 句のフィルタ条件で有効な日付範囲が指定されている必要があります。ただし、この条件はクエリに日付フィールドがあるかどうか関係なく適用されます。さらに、コア日付セグメントではこのフィルタ条件は生成されません。FROM 句のメインリソースが change_event または change_status である場合、利用できるコア日付セグメントはないからです(パート 4 参照)。FROM 句のリソースが change_event である場合、Google Ads API サーバーで change_event.change_date_time フィールドのフィルタに対して日付の評価が行われます。FROM 句のリソースが change_status である場合、Google Ads API サーバーで change_status.last_change_date_time フィールドに対して日付の評価が行われます。
change_event と change_status の LIMIT が有効であるFROM 句のリソースが change_event または change_status である場合、クエリに有効な LIMIT、すなわち正の整数が含まれている必要があります。
まとめこれで、GAQL クエリのエラーをチェックする ValidationService ができました。ValidationService では、GAQL 文字列が変更されるたびにこのチェックをし、エラーリストを生成して、Observable からイベントを発行します。エラーリストが空でない場合、この Observable をサブスクライブするコンポーネントでエラーアイコンを表示します。この投稿では、GAQL クエリ検証のさまざまな側面について説明しました。


Google Ads API での GAQL クエリの構築について理解が深まれば幸いです。ご質問やさらにサポートが必要なことがありましたら、フォーラムまたは googleadsapi-support@google.com にご連絡ください。



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

このブログシリーズでは、新しく改善されたインタラクティブ Google 広告クエリビルダー ツールの構築過程についてお伝えしています。シリーズのパート 5 では、フィールドが選択可能かどうかを判断する方法について説明しました。パート 6 では、SelectionService を使って Google Ads Query Language(GAQL)文字列にフィールドを追加する方法について説明します。

GAQL 文字列の状態どのフィールドが選択されているかを追跡するには、GAQL 文字列の状態を追跡する必要があります。これは、以下のインターフェース定義で表される selectedFields というインスタンス変数で行います。


interface SelectedFields {
select: string[];
where: Array<{field: string, context: string}>;
orderBy: Array<{field: string, context?: string}>;
limit?: string;
params?: string;
}



select フィールドは、フィールド名の配列を保持します。where フィールドは、オブジェクトの配列を保持します。それぞれのオブジェクトには、field 名と context 文字列が含まれています。context は、フィールドに適用するフィルタ条件(つまり、演算子とオペランド)です。たとえば、WHERE 句にフィルタ条件 ad_group.id = 1234567890 を追加した場合、field は ad_group.id、context は = 1234567890 になります。同様に、orderBy フィールドも field 名と省略可能な context 文字列を含む配列を保持します。context は、ASC または DESC でソート順を示しますが、省略も可能です(デフォルトは ASC)。limit フィールドは LIMIT の整数を文字列で表現したもので、省略可能です。最後の params フィールドは PARAMETERS 句の文字列値を表します。これも省略可能です。現在のところ、この句で利用できる選択肢は 1 つだけなので、配列にする必要はありません、
フィールドの選択ユーザーのクエリの状態を追跡するデータ構造が完成したので、任意の句のフィールドを選択するメソッドを実装できるようになります。


selectField(field: string, clause: string, context?: string): void {
...
}

clause が SELECT の場合、指定されたフィールドを selectedFields の select 配列に追加します。ユーザーが SELECT 句にフィールドを追加する場合、context は指定しません。


clause が WHERE である場合は、context 文字列として演算子とオペランドを含むフィルタ条件を提供する必要があるので、3 つのパラメータのすべてが必要です。ユーザーがチェックボックスをクリックして WHERE 句にフィールドを追加すると、ダイアログが開き、まずは演算子を、続いてオペランドを指定します。ユーザーが選択できる演算子のリストは、選択するフィールドの data_type に応じてあらかじめ指定されています。また、オペランドを入力するためにユーザーに表示するコンポーネントは、選択した演算子に応じて変わります。ユーザーがフィルタ条件を追加すると、演算子とオペランドを結合して 1 つの文字列にすることで context 文字列を作成します。





clause が ORDER BY である場合、context は省略可能です。ユーザーが ORDER BY 句のフィールドを選択すると、context なしで selectField を呼び出し、context がない状態で selectedFields の orderBy 配列にフィールドを追加します。また、フィールド名の下にラジオボタンを表示し、ASC か DESC でソート順を指定できるようにしています。ユーザーがいずれかの項目をクリックすると、orderBy 配列のそれぞれのフィールドのエントリを更新し、context にソート順を追加します。




clause が LIMIT か PARAMETERS である場合は、field パラメータで指定された文字列を使って selectedFields の limit エントリまたは params エントリを更新します。limit は正の整数である必要があるので、関連する UI コンポーネントで検証をします。現在利用できるパラメータは include_drafts だけで、このデフォルト値は false です。そのため、PARAMETERS の UI コンポーネントでは、'include_drafts=true' という選択肢が 1 つだけあるチェックボックスをユーザーに表示します。ユーザーがチェックボックスをクリックすると、field パラメータとして文字列 include_drafts=true を selectField に渡します。
SELECT での存在フィールドを選択するロジックは単純ですが、パート 5 ではあえて触れなかった選択可否に関するルールが 2 つあります。WHERE 句または ORDER BY 句にフィールドを挿入する場合、そのフィールドは SELECT 句に存在しなければなりません。

ルール 1: 「コア日付セグメント」(segments.date、segments.week、segments.month、segments.quarter、segments.year)を除き、すべてのセグメントとセグメント化リソースは、SELECT 句に存在しなければ WHERE 句に挿入することはできません。

ルール 2: すべてのセグメント、セグメント化リソース、指標、属性付きリソースのフィールドは、SELECT 句に存在しなければ ORDER BY 句に挿入することはできません。言い換えるなら、最初に SELECT 句に挿入することなく ORDER BY 句に配置できるのは、FROM 句のリソースのフィールドだけです。

このような場合は、ユーザーが 1 回の手順で、指定された句だけでなく SELECT 句にもフィールドを追加できるダイアログを表示します。





フィールドの選択解除フィールドを選択解除できるように、SelectionService に deselectField というメソッドを実装します。


deselectField(field: string, clause: string): void {
…
}




フィールドの選択解除は、フィールドの選択と同様です。念のため、最初にそのフィールドが選択されているかどうかをチェックします。続いて、clause が SELECT、WHERE、ORDER BY のいずれかである場合は、selectedFields の対応する配列のエントリから選択解除されたフィールドを削除します。前述のルールにより、WHERE や ORDER BY に追加される前に SELECT に存在していなければならないフィールドが SELECT から削除されると、そのフィールドが SELECT から 1 回の操作で自動的に削除されます。句が LIMIT や PARAMETERS である場合は、selectedFields のそれぞれのエントリを undefined に更新します。
出力の更新selectedFields 変数、selectField メソッド、deselectField メソッドがそろったので、クエリ文字列の状態を追跡できます。アプリケーション全体で変化を追跡できるように、SelectionService で Observable を作成し、selectField か deselectField が呼び出されるたびに next を呼び出します。これにより、GAQL クエリの状態を認識したいコンポーネントで Observable をサブスクライブできるようになります。
まとめSelectionService を更新し、フィールドの選択と選択解除ができるようになりました。今回の投稿では、以下について説明しました。
  • GAQL クエリと句の構造
  • フィールドの選択可否に関する追加の詳細情報
  • Angular での Observable の利用
Google Ads API での GAOL クエリの構築について理解が深まれば幸いです。ご質問やさらにサポートが必要なことがありましたら、フォーラムまたは googleadsapi-support@google.com にご連絡ください。



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

このブログシリーズでは、新しく改善されたインタラクティブ Google 広告クエリビルダー ツールの構築過程についてお伝えしています。シリーズのパート 4 では、ResourceService を作成し、アプリ内のユーザーのロケーションによって決まる FROM 句のリソースをもとにして関連フィールドを表示する方法について説明しました。パート 5 では、Google Ads Query Language(GAQL)クエリ文字列でフィールドが選択できるかどうかを決定する方法について説明します。


背景と目的フィールドが選択できるかどうか、すなわち、GAQL 文字列の句を追加できるかどうかは、1)FROM 句におけるメインリソースの固有のプロパティとそのフィールドのプロパティ、2)GAQL クエリ文字列の現在の状態、という 2 つによって決まります。ユーザーに選択可能なフィールドとして表示されるのは固有のプロパティだけなので、項目(1)にはパート 4 で作成した ResourceService で対処できます。

項目(2)に対処するために、SelectionService という新しいサービスを作成します。このサービスの役割は、選択可否の判断、フィールドの選択、フィールドの選択解除などです。この投稿では、フィールドの選択可否の判断について説明します。SelectionService によるフィールドの選択と選択解除の方法については、シリーズのパート 6 で説明します。
フィールドの同時利用性すべてのフィールドを同時に利用できるとは限りません。2 つのフィールドを同時に利用できる場合、両方のフィールドが 1 つの GAQL 文字列内に共存できます。2 つのフィールドを同時に利用できない場合は、2 つのフィールドのどちらかのみを GAQL 文字列のいずれかの句に含めることができます。そのため、評価対象のフィールドとは同時に利用できないフィールドが GAQL 文字列内にある場合、評価対象のフィールドは選択不可となります。UI はそれを反映し、対応するエラー メッセージをユーザーに表示します。





実装
incompatibleSelected というインスタンス変数で、メインリソースの各フィールドについて、同時に選択できないフィールドのうち現在選択されているものを追跡します。この変数は、それぞれのフィールドを、同時に選択できないフィールドのうち現在選択されているものの一覧を表す Set にマッピングします。

interface IncompatibleSelected: {[key: string]: Set<string>}


この incompatibleSelected を初期化して、ResourceService で求めたリソースのすべてのフィールドがマップのキーになるように、また各エントリの値が空の Set になるようにします。

フィールドが選択されると、incompatibleSelected の Set(選択されたフィールドと同時に選択できないフィールドの集合)に、選択されたフィールドを追加します。たとえば、FROM 句のリソースが ad_group であるとします。segments.ad_destination_type は、metrics.absolute_top_impression_percentage や metrics.active_view_cpm などとは同時に選択できません。次の表は、これらのフィールド間の同時選択性の関係を示しています。

フィールド 同時に選択できないフィールド
segments.ad_destination_type [metrics.absolute_top_impression_percentage, metrics.active_view_cpm, …]
metrics.absolute_top_impression_percentage [segments.ad_destination_type, …]
metrics.active_view_cpm [segments.ad_destination_type, …]
segments.ad_destination_type が選択されると、incompatibleSelected マップの metrics.absolute_top_impression_percentage と metrics.active_view_cpm のエントリに segments.ad_destination_type を追加します。

クエリのいずれかの句に segments.ad_destination_type を追加したときの incompatibleSelected フィールドの一部を抜粋すると、次のようになります。

incompatibleSelected = {
…
'segments.ad_destination_type': {},
'metrics.absolute_top_impression_percentage': {'segments.ad_destination_type'}
'metrics.active_view_cpm': {'segments.ad_destination_type'}
...
}


フィールドの選択を解除するたびに、最初にそのフィールドがクエリのいずれかの句に含まれているかをチェックする必要があります(詳しくはパート 6 で説明します)。含まれている場合は、incompatibleSelected を更新すべきではないからです。たとえば、segments.ad_destination_type が SELECT 句と ORDER BY 句で選択されており、ORDER BY でのみ選択解除された場合、まだ segments.ad_destination_type がクエリに含まれているので、incompatibleSelected マップを変更してはいけません。ただし、選択解除されたフィールドがどの句にも含まれていない場合は、Set(選択解除されたフィールドとは同時に選択できないフィールドの集合)からそのフィールドを削除できます。

先ほどの例で、SELECT 句から segments.ad_destination_type を削除すると、このフィールドはクエリに存在しなくなります。そのため、incompatibleSelected マップの metrics.absolute_top_impression_percentage と metrics.active_view_cpm のエントリからこのフィールドを削除します。この時点で、incompatibleSelected マップのすべてのエントリは空の Set となります。


このデータ構造があれば、フィールド名をパラメータとして受け取る isSelectable というメソッドを作ることができます。isSelectable は、incompatibleSelected でそのフィールドに対応する Set が空であれば true を、そうでなければ false を返します。


  isSelectable(field: string): boolean {
return this.incompatibleSelected[field]?.size === 0;
}

まとめ以上で、フィールドが選択可能かどうかを判断する SelectionService のロジックを実装できました。ユーザーにフィールドを表示する際には、isSelectable(field) を呼び出すだけで、UI に表示するものを決めることができます。今回の投稿では、フィールドの同時選択性と、フィールドが選択できるかどうかに関する内容を説明しました。パート 6 では、このセクションの内容をもとに、フィールドの選択や選択解除が行われたときに、SelectionService で GAQL クエリ文字列の状態を追跡する方法について説明します。

Google Ads API での GAOL クエリの構築についての理解が深まれば幸いです。ご質問やさらにサポートが必要なことがありましたら、フォーラムまたは googleadsapi-support@google.com にご連絡ください。


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


このブログシリーズでは、新しく改善されたインタラクティブ Google 広告クエリビルダー ツールの構築過程についてお伝えしています。シリーズのパート 3 では、GoogleAdsFieldService を使って詳細な JSON リソース スキーマを作成する方法について説明しました。これが、Angular アプリケーションで使う正規データセットとなります。パート 4 では、アプリケーションのさまざまな部分でどのフィールドがユーザーに表示されるかを決めるリソース サービスを作成する方法について説明します。

背景新しいインタラクティブ Google 広告クエリビルダーのメリットの 1 つは、ユーザーの選択内容に応じてフィールドが動的に更新され、フィールドが選択できるかどうかが表示されることです。選択できない場合は、なぜそのフィールドが選択できないかがわかるフィードバックがユーザーに返されます。これを実現するには、Google Ads Query Language(GAQL)文字列の FROM 句のメインリソースに基づいて、その GAQL 文字列のそれぞれの句で選択できるフィールドのリストを提示する必要があります。そのロジックを含む、ResourceService という名前のサービスを作成します。すると、Angular のサービスと依存関係の注入モデルを使って適切なフィールドと関連情報を取得し、任意のコンポーネントに設定できるようになります。

目的このアプリは、FROM リソースがユーザーの現在の URL によって決まるように設計されています。そのため、FROM 句のリソースとすべての利用可能なフィールドのリストは、その URL によって決まる定数となります。この投稿では、SELECT、WHERE、ORDER BY という 3 つの GAQL 句のみについて考えることにします。動的にフィールドを設定できる句はこれだけだからです。LIMIT は整数のみを受け付け、PARAMETERS には 1 つの選択肢しかありません。


ユーザー エクスペリエンスを向上するため、それぞれの句では、利用可能なフィールドを属性フィールド、指標、セグメント、属性付きリソース フィールドの 4 つのカテゴリに分類します。ここでの目的は、指定された句とカテゴリに応じて、関連フィールドを提供する ResourceService を作成することです。

実装前回生成したリソース スキーマを活用すると、URL によって決まる FROM 句のメインリソースに対するエントリを選択し、フィールドのサブエントリを絞り込んで、特定の条件に一致する fields だけを提供できます。


まずは、句によってフィールドを分類するところから始めます。
  • SELECT 句のフィールドは、selectable プロパティが true に等しい
  • WHERE 句のフィールドは、filterable プロパティが true に等しい
  • ORDER BY 句のフィールドは、sortable プロパティが true に等しい
このフィールド リストは、さらに属性フィールド、指標、セグメント、属性付きリソース フィールドに分類できます。指定された句から指標とセグメントを取得するのは簡単です。リソース スキーマには指標とセグメント(セグメント化リソースを含む)のリストが含まれているからです。それぞれの句について、句に関連する前述の条件を満たすすべてのセグメントと指標を含めます。

同じように、FROM 句のリソースの attributes を調べ、リソース名で始まり、その後にドットが存在するものを絞り込み、句に関連する前述の絞り込み条件を適用することで、それぞれの句のメイン属性フィールドを取得できます。

attributes エントリのその他のフィールドは、すべて属性付きリソース フィールドです。属性付きリソースのリストは、メインリソースを除くリソースの attributes の一意なプレフィックス(ドットの前のテキスト)を集めることで生成できます。最後に、それぞれの属性付きリソースの名前がプレフィックスになっているフィールドを選択すると、それぞれの属性付きリソースについて、句ごとのフィールド リストを作成できます。

以上のロジックがすべてそろえば、インターフェースを作成し、指定されたカテゴリと句に応じてフィールドのリストを返すメソッドを公開できます。すると、ResourceService に注入される任意のコンポーネントは、対応するメソッドを呼び出すだけで、適切なフィールドのリストを取得できるようになります。

まとめ以上で、アプリで表示している句とカテゴリに基づいて GAQL クエリを作成しているユーザーに、関連フィールドを表示する ResourceService を作成できました。今回の投稿では、以下について説明しました。

Google Ads API での GAOL クエリの構築について理解が深まれば幸いです。ご質問やさらにサポートが必要なことがありましたら、フォーラムまたは googleadsapi-support@google.com にご連絡ください。



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

デベロッパー リレーションズの重要な役割の 1 つは、デベロッパーの皆さんが使う API のフィードバックを集めることです。その目的は、プロダクトを改善し、デベロッパー エクスペリエンスを向上するツールを作成できるようにすることです。Google Ads API はベータ版を卒業したので、これは一層重要になっています。Google Ads Query Language(GAQL)と GAQL クエリの作成についても、いくつかの重要なフィードバックを受け取っています。そこからはっきりとわかったのは、以下のことです。

  • GAQL は、Google Ads API からデータを取得する柔軟で充実したメカニズムです。その力を最大限に引き出し、効率的にクエリを作成するには、クエリ言語の細かい点までしっかりと理解しておくことが重要です。
  • 以前のバージョンのインタラクティブ Google 広告クエリビルダー ツールは、GAQL のクエリ文字列の作成に役立ちました。しかし、ツールの背後にあるロジックの一部を公開して GAQL クエリ文字列の検証の仕組みについて理解を深めてもらうことで、クエリの作成プロセスを高速化する余地がありました。
そこで、新しいバージョンのインタラクティブ Google 広告クエリビルダー ツールをリリースしました。それに伴ういくつかのメリットは、リリースに関するブログ投稿に掲載されています。

この新ツールを開発するにあたり、ユーザーの視点から Google Ads API にアプローチし、デベロッパーのユースケースについての理解を深めました。そして、Google Ads API を使ったアプローチを共有するため、このプロセス全体を通して私たちの体験を記録しました。この記事は、その過程を追ったブログ投稿シリーズの第 1 回です。本クエリビルダー ブログシリーズでは、以下のトピックを取り上げる予定です。

  • リソース スキーマの設計 : インタラクティブ クエリビルダー Angular アプリケーションの正規データセットとして利用する詳細な JSON リソース スキーマの設計。
  • リソース スキーマの作成 : そのアプリケーションの構築を簡単にするため、GoogleAdsFieldService を使って、同時に利用できないフィールドを含む拡張リソース スキーマを作成する方法。
  • リソース サービスの作成 : アプリケーションのさまざまな部分で、どのフィールドがユーザーに表示されるかを決めるリソース サービスを作成する方法。
  • フィールドの選択可否の決定 : Google Ads Query Language(GAQL)のクエリ文字列の句で、フィールドが選択可能かどうかを決める選択サービスを作成する方法。
  • フィールド選択とクエリ検証 : 選択サービスを更新し、フィールドの選択と GAQL 文字列の検証をする方法。
  • 概要 : このプロセスから学んだ重要な教訓の概要。

このブログシリーズを通じた学習をお楽しみください。今後のコンテンツにご期待ください。

ご質問やさらにサポートが必要なことがありましたら、フォーラムまたは googleadsapi-support@google.com にご連絡ください。


この記事は Devin Chasanoff による Google Ads Developer Blog の記事 "Announcing the New and Improved Interactive Query Builder" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Google Ads Query Language(GAQL)の新しい改善版インタラクティブ クエリビルダーをリリースします。新しいバージョンはリソース中心型で、FROM 句のリソースを活用して GAQL クエリの作成をサポートします。クエリビルダーには、次の 2 つの方法でアクセスできます。


デベロッパー ドキュメントの [Reports] タブに移動し、ページの左側の [Query Builder] を展開して、リソースを選択します。

または、レポーティング リファレンス ドキュメントで任意のリソースの [Help me build a query] ボタンをクリックします。







ハイライトユーザーが新しい検索バーに文字を入力すると、フィールドが動的に絞り込まれます。





このツールは、デベロッパーが Google Ads Query Language を使いながら学習できるように設計されています。クエリビルダーには、動的にヒントが表示されます(フィールドの互換性など)。





プロンプトも表示されます(たとえば、クエリの複数の句にフィールドを追加する際の要件をユーザーに通知するなど)。





新しいクエリビルダーには、クエリを読みやすい形式で表示する "pretty print" モードと、クエリのボックスで直接フィールドを削除したり並び替えたりできる "interactive" モードがあります。





新しいクエリビルダーを使う際は、各ページの右上に表示されている [Send feedback] ボタンをクリックして、遠慮なくフィードバックをお送りください。




ご質問やさらにサポートが必要なことがありましたら、フォーラムまたは googleadsapi-support@google.com にご連絡ください。