基本のレポート

スクリプトの概要

Yahoo!広告スクリプトでは、Google スプレッドシートに各種レポートを直接出力することが可能です。
本ページでは、基本的なレポートの取得方法と、取得したレポートをスプレッドシートへ出力する方法について解説します。
フィルタの指定方法や既存の行に追記していく方法などの応用編については、近日中に公開予定です。

ご利用の流れ

1.サンプルコードをコピーしてテキストファイルに保存し、解説を見ながらサンプルコード内の(1)~(6)を書き換えます。
2.こちらの手順のとおり、Google アカウントと連携します。
3.こちらの手順のとおり、1で作ったスクリプトを保存・認証・実行します。

1.検索広告のキャンペーンレポート(今月、フィルタ指定なし)

サンプルコード


function main() {
  const spreadsheetId = 'スプレッドシートID';//...(1)
  const sheetName = 'シート1';//...(2)
  const ss = SpreadsheetApp.openById(spreadsheetId);
  let sh = ss.getSheetByName(sheetName);
  sh.clear();
  const reportData = AdsUtilities.getSearchReport({
    accountId: AdsUtilities.getCurrentAccountId(),// 実行中のアカウントを取得します
    reportType: 'CAMPAIGN', //...(3)
    fields: [
      'ACCOUNT_NAME','CAMPAIGN_NAME','IMPS','CLICKS','COST','CONVERSIONS'//...(4)
    ],
    reportDateRangeType: 'THIS_MONTH',//...(5)
    reportSkipColumnHeader : 'FALSE',//...(6)
  }).reports[0].rows; //戻り値の1つ目のレポート行を取得
  sh.getRange('A1').setValues(reportData);//スプレッドシートへの書き込み処理
}

解説

(1)出力先のスプレッドシート ID を指定します。
 スプレッドシート ID については、こちらの FAQ をご覧ください。
 以下1点ご注意ください。
 ・文字列なので、項目を'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと

(2)出力先のスプレッドシートのシート名を指定します。
 以下1点ご注意ください。
 ・文字列なので、項目を'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと

(3)reportTypeでレポート種別を指定します。
 今回の例ではキャンペーンレポートを作成するため、reportType は「CAMPAIGN」を指定しています。
 以下1点ご注意ください。
 ・文字列なので、項目を'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと

よく使われる reportType は以下のとおりです。
reportType説明
CAMPAIGNキャンペーンレポートです。
ADGROUP広告グループレポートです。
AD広告レポートです。
KEYWORDSキーワードレポートです。
SEARCH_QUERY検索クエリーレポートです。
RESPONSIVE_ADS_FOR_SEARCH_ASSETレスポンシブ検索広告アセットレポートです。

上記以外に指定できる値の詳細はリファレンスをご覧ください。

(4)fieldsで出力項目を指定します。
 以下2点ご注意ください。
 ・文字列なので、項目を'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと
 ・配列なので、項目を,(カンマ)で区切ること

よく使われるfieldsは以下のとおりです。
fields説明
ACCOUNT_IDアカウントID
ACCOUNT_NAMEアカウント名
CAMPAIGN_IDキャンペーンID
ADGROUP_ID広告グループID
KEYWORD_IDキーワードID
CAMPAIGN_NAMEキャンペーン名
ADGROUP_NAME広告グループ名
SEARCH_QUERY検索クエリー
SEARCH_QUERY_MATCH_TYPE検索クエリーのマッチタイプ
KEYWORDキーワード
COSTコスト
IMPSインプレッション数
CLICKSクリック数
CLICK_RATEクリック率
AVG_CPC平均CPC
CONVERSIONSコンバージョン数
CONV_RATEコンバージョン率
CONV_VALUEコンバージョンの価値
COST_PER_CONVコスト/コンバージョン数
VALUE_PER_CONV価値/コンバージョン数
ALL_CONVすべてのコンバージョン数
ALL_CONV_RATEすべてのコンバージョン率
ALL_CONV_VALUEすべてのコンバージョンの価値
COST_PER_ALL_CONVコスト/すべてのコンバージョン数
VALUE_PER_ALL_CONV価値/すべてのコンバージョン数
DAY
DAY_OF_WEEK曜日

※レポートごとに使える項目が異なります。それぞれのレポートでどの項目が使えるかは各レポート定義をご確認ください。

(5)reportDateRangeTypeでレポートデータの期間を指定します。
 今回の例では今月分のレポートを作成するためreportDateRangeTypeは「THIS_MONTH(本日を含む当月)」を指定しています。
 以下1点ご注意ください。
 ・文字列なので、項目を'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと

よく使われるreportDateRangeTypeは以下のとおりです。
reportDateRangeType説明
TODAY本日です。
YESTERDAY昨日です。
LAST_7_DAYS本日を除く、過去7日間です。
LAST_14_DAYS本日を除く、過去14日間です。
LAST_30_DAYS本日を除く、過去30日間です。
LAST_MONTH前月です。

上記以外に指定できる値の詳細はリファレンスをご覧ください。
ユーザー側で任意の日付を指定したい場合は、後述の「応用:期間を自由に指定したい場合」をご覧ください。

(6)reportSkipColumnHeaderでヘッダー行を出力するかどうか設定できます。
 今回はヘッダー行を出力するため「FALSE」です。
 ヘッダー行を出力したくない場合は「TRUE」を指定してください。
 以下1点ご注意ください。
 ・文字列なので、項目を'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと

2.ディスプレイ広告のキャンペーンレポート(今月、フィルタ指定なし)

サンプルコード


function main(){
  const spreadsheetId = 'スプレッドシートID';//...(1)
  const sheetName = 'シート1';//...(2)
  const ss = SpreadsheetApp.openById(spreadsheetId);
  let sh = ss.getSheetByName(sheetName); 
  sh.clear();
  const reportData = AdsUtilities.getDisplayReport({
    accountId: AdsUtilities.getCurrentAccountId(), 
    fields: [
      'ACCOUNT_NAME','CAMPAIGN_NAME','IMPS','CLICKS','COST','CONVERSIONS'
    ],//...(3)
    reportDateRangeType: 'THIS_MONTH',//...(4)
    reportSkipColumnHeader : 'FALSE',//...(5)
  }).reports[0].rows;
  sh.getRange('A1').setValues(reportData);
}

解説

(1)出力先のスプレッドシート ID を指定します。
 スプレッドシート ID については、こちらの FAQ をご覧ください。
 以下1点ご注意ください。
 ・文字列なので、項目を'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと

(2)出力先のスプレッドシートのシート名を指定します。
 以下1点ご注意ください。
 ・文字列なので、項目を'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと

(3)fieldsで出力項目を指定します。
 以下2点ご注意ください。
 ・文字列なので、項目を'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと
 ・配列なので、項目を,(カンマ)で区切ること

よく使われるfieldsは以下のとおりです。
fields説明
ACCOUNT_IDアカウントID
ACCOUNT_NAMEアカウント名
CAMPAIGN_IDキャンペーンID
CAMPAIGN_NAMEキャンペーン名
CAMPAIGN_USER_STATUSキャンペーン配信設定
ADGROUP_ID広告グループID
ADGROUP_NAME広告グループ名
ADGROUP_USER_STATUS広告グループ配信設定
AD_ID広告ID
AD_NAME広告名
AD_TYPE広告タイプ
AD_USER_STATUS広告配信設定
GENDER性別
AGE年齢
MONTH
DAY
HOUR時間
DELIVER広告掲載方式
DEVICEデバイス
MEDIA_IDメディアID
MEDIA_NAMEメディア名
MEDIA_FILE_NAMEファイル名
MEDIA_AD_FORMATピクセルサイズ
AD_TITLEタイトル
IMPSインプレッション数
CLICK_RATEクリック率
COSTコスト
CLICKSクリック数
AVG_CPC平均CPC
AVG_DELIVER_RANK平均掲載順位
VIEWABLE_IMPSビューアブルインプレッション数
AVG_CPV平均CPV
CONVERSIONSコンバージョン数
CONV_RATEコンバージョン率
COST_PER_CONVコスト/コンバージョン数
CONV_VALUEコンバージョンの価値
VALUE_PER_CONVコンバージョンの価値/コンバージョン数
ALL_CONVコンバージョン数(すべて)
ALL_CONV_RATEコンバージョン率(すべて)
COST_PER_ALL_CONVコスト/コンバージョン数(すべて)
ALL_CONV_VALUEコンバージョンの価値(すべて)
VALUE_PER_ALL_CONVコンバージョンの価値(すべて)/コンバージョン数(すべて)
CONV_VALUE_PER_COSTコンバージョンの価値/コスト
ALL_CONV_VALUE_PER_COSTコンバージョンの価値(すべて)/コスト
CONV_VALUE_VIA_AD_CLICK_PER_COSTコンバージョンの価値(クリック経由)/コスト
AVG_CPM平均CPM
AVG_VCPM平均vCPM

※レポートごとに使える項目が異なります。それぞれのレポートでどの項目が使えるかは各レポート定義をご確認ください。

(4)reportDateRangeTypeでレポートデータの期間を指定します。
 今回の例では今月分のレポートを作成するためreportDateRangeTypeは「THIS_MONTH(本日を含む当月)」を指定しています。
 以下1点ご注意ください。
 ・文字列なので、項目を'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと

よく使われるreportDateRangeTypeは以下のとおりです。

reportDateRangeType説明
TODAY本日です。
YESTERDAY昨日です。
LAST_14_DAYS本日を除く、過去14日間です。
LAST_30_DAYS本日を除く、過去30日間です。
LAST_MONTH前月です。

上記以外に指定できる値の詳細はリファレンスをご覧ください。
ユーザー側で任意の日付を指定したい場合は、後述の「応用:期間を自由に指定したい場合」をご覧ください。

(5)reportSkipColumnHeaderでヘッダー行を出力するかどうか設定できます。
 今回はヘッダー行を出力するため「FALSE」を指定しています。ヘッダー行を出力したくない場合は「TRUE」を指定してください。
 以下1点ご注意ください。
 ・文字列なので、項目を'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと

※ディスプレイ広告では、一部のレポートを除いてreportTypeは指定しません。
 reportTypeを指定しない場合、「fields」で指定した出力項目により、以下の単位のレポートとなります。
 ・アカウントレポート
 ・キャンペーンレポート
 ・広告グループレポート
 ・広告レポート
 ・リンク先URLレポート
 例)「fields」で「AD_ID(広告ID)を指定した場合、広告レポートとなります。

 reportTypeを指定する必要があるレポートについてはリファレンスをご覧ください。
 reportTypeを指定する場合、以下1点ご注意ください。
 ・文字列なので、項目'(シングルクオーテーション)または"(ダブルクオーテーション)で囲むこと

応用:期間を自由に指定したい場合

検索広告もディスプレイ広告も共通です。
reportDateRangeTypeに「CUSTOM_DATE」を設定し、dateRangeを以下のように指定します。


reportDateRangeType:'CUSTOM_DATE',
dateRange: {
    startDate: '20230101',//開始日をYYYYMMDD形式で指定
    endDate: '20230228' //終了日をYYYYMMDD形式で指定
},
1.検索広告のキャンペーンレポート(今月、フィルタ指定なし)」のスクリプトに適用すると以下のようになります。

function main() {
 const spreadsheetId = 'スプレッドシートID';
  const sheetName = 'シート1';
  const ss = SpreadsheetApp.openById(spreadsheetId);
  let sh = ss.getSheetByName(sheetName);
  sh.clear();
  const reportData = AdsUtilities.getSearchReport({
    accountId: AdsUtilities.getCurrentAccountId(),// 実行中のアカウントを取得します
    fields: [
      'ACCOUNT_NAME','CAMPAIGN_NAME','IMPS','CLICKS','COST','CONVERSIONS'
    ], 
    //reportDateRangeType: 'THIS_MONTH',//THIS_MONTH指定は削除する
  //ここに上記reportDateRangeType、dateRangeを貼り付ける
    reportDateRangeType:'CUSTOM_DATE',
    dateRange: {
        startDate: '20230101',//開始日をYYYYMMDD形式で指定
        endDate: '20230228'//終了日をYYYYMMDD形式で指定
    },
    //ここまで
    reportType: 'CAMPAIGN', 
    reportSkipColumnHeader : 'FALSE',
  }).reports[0].rows; //戻り値の1つ目のレポート行を取得
  sh.getRange('A1').setValues(reportData);//スプレッドシートへの書き込み処理
}