Google Adsenseの売上レポートをGoogle Sheets(スプレッドシート)に出力する
弊社の運営媒体にGoogle Adsenseを導入することになり、日々の売上を確認する必要が出てきました。
毎日Adsenseの管理画面にアクセスするのも面倒なので、APIを利用し日次でスプレッドシートを自動更新してみましょう。
こんな感じのものが出力されます。
GAS
以下を適当なスプレッドシートのApps Scriptに貼り付けます。
pubId
とtargetSheetName
をご自分の環境に合わせて変更してください。
function writeAdsenceReport() {
const pubId = "pub-xxxxxxxxxxx"; //パブリッシャー ID
const targetSheetName = "report"; // 出力先のシート名
const spreadSheet = SpreadsheetApp.getActive();
const sheet = spreadSheet.getSheetByName(targetSheetName);
const adsenseAccount = "accounts/" + pubId;
const adsenseDimensionId = "ca-" + pubId;
const metrics = getMetrics();
const report = AdSense.Accounts.Reports.generate(adsenseAccount, {
filters: ["AD_CLIENT_ID==" + adsenseDimensionId],
metrics: metrics,
dimensions: ["DATE"],
dateRange: "YESTERDAY", // 昨日のレポートを取得する // TODAY,YESTERDAY,MONTH_TO_DATE,YEAR_TO_DATE,LAST_7_DAYS,LAST_30_DAYS,CUSTOM
// "startDate.year": 2022,
// "startDate.month": 11,
// "startDate.day": 1,
// "endDate.year": 2022,
// "endDate.month": 11,
// "endDate.day": 30,
orderBy: ["+DATE"],
});
if (report.rows) {
// レポートをシートの最終行に出力
sheet
.getRange(
sheet.getLastRow() + 1,
1,
report.rows.length,
report.headers.length
)
.setValues(report.rows.map((row) => row.cells.map((cell) => cell.value)));
// 重複データを防ぐため、日付が同じデータは削除する
sheet.getDataRange().removeDuplicates([1]);
}
}
function getMetrics(){
return [
"ACTIVE_VIEW_MEASURABILITY",
"ACTIVE_VIEW_TIME",
"ACTIVE_VIEW_VIEWABILITY",
"ADS_PER_IMPRESSION",
"AD_REQUESTS",
"AD_REQUESTS_COVERAGE",
"AD_REQUESTS_CTR",
"AD_REQUESTS_RPM",
"CLICKS",
"COST_PER_CLICK",
"ESTIMATED_EARNINGS",
"IMPRESSIONS",
"IMPRESSIONS_CTR",
"IMPRESSIONS_RPM",
"INDIVIDUAL_AD_IMPRESSIONS",
"INDIVIDUAL_AD_IMPRESSIONS_CTR",
"INDIVIDUAL_AD_IMPRESSIONS_RPM",
"MATCHED_AD_REQUESTS",
"MATCHED_AD_REQUESTS_CTR",
"MATCHED_AD_REQUESTS_RPM",
"PAGE_VIEWS",
"PAGE_VIEWS_CTR",
"PAGE_VIEWS_RPM",
"TOTAL_EARNINGS",
"TOTAL_IMPRESSIONS",
"WEBSEARCH_RESULT_PAGES",
];
}
サービスの追加
デフォルトだとAdSense Management API
が利用できない為、Apps Scriptの左メニューからサービスを追加します。
サービス一覧から、AdSense Management API
を選び、追加してください。
ヘッダー行の追加
今回のコードはヘッダ行の印字は行っていないので、必要あれば以下を出力先シートの1行目にコピペしてください。
カンマ区切りなので、A1
セルに貼った後でテキストを列に分割
で展開できます。
DATE,ACTIVE_VIEW_MEASURABILITY,ACTIVE_VIEW_TIME,ACTIVE_VIEW_VIEWABILITY,ADS_PER_IMPRESSION,AD_REQUESTS,AD_REQUESTS_COVERAGE,AD_REQUESTS_CTR,AD_REQUESTS_RPM,CLICKS,COST_PER_CLICK,ESTIMATED_EARNINGS,IMPRESSIONS,IMPRESSIONS_CTR,IMPRESSIONS_RPM,INDIVIDUAL_AD_IMPRESSIONS,INDIVIDUAL_AD_IMPRESSIONS_CTR,INDIVIDUAL_AD_IMPRESSIONS_RPM,MATCHED_AD_REQUESTS,MATCHED_AD_REQUESTS_CTR,MATCHED_AD_REQUESTS_RPM,PAGE_VIEWS,PAGE_VIEWS_CTR,PAGE_VIEWS_RPM,TOTAL_EARNINGS,TOTAL_IMPRESSIONS,WEBSEARCH_RESULT_PAGES
定期実行設定
トリガーを追加して、毎日9~10時に前日分のレポートが出力されるようにします。
レポート期間の変更
以下のコードを変更すると取得するレポート期間を変更できます。
例えば初回に過去1ヶ月分のレポートを取得したければ、dateRange
にLAST_30_DAYS
を指定して手動実行すればOKです。
必要な範囲のデータを取得した後で、dateRange
をYESTERDAY
に戻し、以降は日次の処理に任せましょう。
もし1ヶ月より過去のデータを取りたいようであれば、dateRange
をCUSTOM
に変更し、startDate.***
とendDate.***
で任意の年月日を指定してください。
過去1ヶ月分のレポート
dateRange: "LAST_30_DAYS",
// "startDate.year": 2022,
// "startDate.month": 11,
// "startDate.day": 1,
// "endDate.year": 2022,
// "endDate.month": 11,
// "endDate.day": 30,
任意の期間のレポート
dateRange: "CUSTOM",
"startDate.year": 2022,
"startDate.month": 11,
"startDate.day": 1,
"endDate.year": 2022,
"endDate.month": 11,
"endDate.day": 30,
参考資料
SARAHでは一皿に特化したごはん情報の投稿・配信・収集・解析するサービスをtoC,toBと多角的に展開しています。アプリ / Web / SaaS / データサイエンス を最新の環境と技術で広く運用します。 技術スタック詳細はこちら→ stackshare.io/companies/sarah-inc
Discussion