GAS(Google Apps Script)を使って、Googleアドセンスのレポートを自動で取得する方法について解説します。
GAS(Google Apps Script)とは
GASは、Google Apps Scriptの略で、Googleが提供しますJavaScriptベースのプログラム環境です。開発と実行の両方を提供しています。開発ではスクリプトエディタでコードを書き、実行ではGmailやGoogleスプレッドシートなど様々なアプリケーションにおける作業効率化を図れます。

主にGoogleが提供するサービスを、自動化するためのスクリプト言語です。
GASでできること
- メールの自動送信
- Goolgeフォームとスプレッドシートを組み合わせて、データ入力管理
- WEBサイトをスクレイピングしてデータ取得
- httpベースの外部APIを取得し、スプレッドシートに張り付け
- 毎日決められた時間にバックアップファイルを作成
アドセンスの広告収益を取得するGASを作ってみよう
今回はGoogleスプレッドシートにGoogleアドセンスの広告収益を出力するGASを作ってみます。
Step1. スプレッドシートを作成する
まずは、Googleドライブにアクセスしてください。「新規」からスプレッドシートを選択してみましょう。
適当に「GoogleAdsense広告収益」などの名前をつけておき、下記のように入力してください。

- B列の2行目:アドセンスのサイト運営者IDを記載します。確認方法はこちら
- B列の3行目:集計開始日「yyyy-mm-dd」の形式で入力します。
- B列の4行目:集計終了日「yyyy-mm-dd」の形式で入力します。
- B列の5行目:コンテンツ連動広告(AFC)の収益を出力するシート名を入力します
- B列の6行目:検索連動広告(AFS)の収益を出力するシート名を入力します
最後にこれらを入力したシート名を「_variable」としてください。また、B列の5行目と6行目で入力したシートは、事前に作成しておいてください
実際に作ったサンプルがこちらになります。
Step2. スクリプトエディタを開く
メニューから「ツール」と進み、「スクリプトエディタ」を選択してください。
ここをクリックすると、別ウィンドウでスクリプトエディタが開きます。プロジェクト名が必要なので適当に「AdSense API」とでも名付けておきましょう。
ここにGoogle Apps Scriptのコードを書いていくことになります。
Step3. AdSense の API を有効化する
コードを書く前に、事前にAPIを有効にしておく必要があります。「サービス」をクリックしてください

プロジェクト内に追加したいAPIを選択する画面が表示されます。「AdSense Management API」を選択して、追加を押しましょう。

これだけでは、APIを利用できません。API自体も有効にしておく必要があります。「Google Cloud platform API」をクリックしてGoogle Cloud platform の画面を開きます。
「adsense」と検索してみると、 AdSense Management API が出てきます。
「有効にする」を選んで、APIを有効にします。
これでAPIの有効化の設定は完了なので、先ほどのスクリプトエディタに戻りましょう。
Step4. スクリプトを書く
Step2のスクリプトエディタに戻ったら、次のようなコードをスクリプトエディタにコピー&ペーストしてみてください。
//AFCレポートの作成
function AFCReport() {
var ss = SpreadsheetApp.openById('●●●●●●●●●●●●●●●●●●●●●●●●●');
var var_sheet = ss.getSheetByName('_variable');
var myVar = var_sheet.getRange(2,2,5).getValues();//セル範囲指定してB2から4行取得
var adClientId = myVar[0][0];
var startDate = Utilities.formatDate(myVar[1][0], 'Asia/Tokyo', 'yyyy-MM-dd');
var endDate = Utilities.formatDate(myVar[2][0], 'Asia/Tokyo', 'yyyy-MM-dd');
var outputsheet = ss.getSheetByName(myVar[3][0]);
var metrics = ['EARNINGS', 'CLICKS','INDIVIDUAL_AD_IMPRESSIONS','INDIVIDUAL_AD_IMPRESSIONS_RPM','PAGE_VIEWS']
var args = {
'metric': metrics,
'dimension': ['DATE','URL_CHANNEL_ID'],
'filter': ['AD_CLIENT_ID==' + adClientId],
};
var report = AdSense.Reports.generate(startDate, endDate, args).getRows();
outputsheet.getRange(2, 2, report.length, metrics.length + 2).setValues(report);//B2に出力
}
//AFSレポートの作成
function AFSReport() {
var ss = SpreadsheetApp.openById('●●●●●●●●●●●●●●●●●●●●●●●●●');
var var_sheet = ss.getSheetByName('_variable');
var myVar = var_sheet.getRange(2,2,5).getValues();//セル範囲指定してB2から4行取得
var adClientId = myVar[0][0];
var startDate = Utilities.formatDate(myVar[1][0], 'Asia/Tokyo', 'yyyy-MM-dd');
var endDate = Utilities.formatDate(myVar[2][0], 'Asia/Tokyo', 'yyyy-MM-dd');
var outputsheet = ss.getSheetByName(myVar[4][0]);
var metrics = ['EARNINGS', 'CLICKS','INDIVIDUAL_AD_IMPRESSIONS','INDIVIDUAL_AD_IMPRESSIONS_RPM','PAGE_VIEWS']
var args = {
'metric': metrics,
'dimension': ['DATE','PRODUCT_CODE'],
};
var report = AdSense.Reports.generate(startDate, endDate, args).getRows();
outputsheet.getRange(2, 2, report.length, metrics.length + 2).setValues(report);//B2に出力
}
//メニューに追加
function onOpen(){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var myMenu= [];
myMenu.push({name: "コンテンツ連動広告取得実行", functionName: "AFCReport"});
myMenu.push({name: "検索連動広告取得実行", functionName: "AFSReport"});
sheet.addMenu("myScript", myMenu);
}
上記スクリプトの「●●●●」の部分はStep1で作成したスプレッドシートのIDが入ります。例えばスプレッドシートのURLが下記の場合には、「/spreadsheets/d/」の後ろに記載してる「1hP2c8fH3Tk8Ud1I6KbqOEiZB8lfPXn378U6mgMobQy0」までがIDになります。「/edit#gid=380746820」はスプレッドシートのIDではないため不要です。
https://docs.google.com/spreadsheets/d/1hP2c8fH3Tk8Ud1I6KbqOEiZB8lfPXn378U6mgMobQy0/edit#gid=380746820
Step5. スクリプトを実行する
スクリプトを実行してアドセンスのデータを取得していきましょう。ただし、スクリプトを実行するときにアクセスの許可を取らなければなりません。
まず、スクリプトを「保存」して「実行」を押します。
次のように「データへのアクセス権限」への承認を要求されます。

「権限を確認」を押すと、承認する権限を持ったアカウントへログイン要求がされます。
「許可」を押して、データへのアクセスを許可します。
Step6. スプレッドシートを確認する
「_rawdata」シートにデータが出力されているのが分かります。わざとB列2行目から出力するようにスクリプトを設定しています。

1行目に項目名を記載しておくと分かりやすくなりますね。A列にはVLOOKUP関数でKEYとなるコードを記載すると、集計しやすくなります。

最後に:次回から実行はメニューでできる
メニューに「myScript」というのが追加されているはずです。次回以降、スクリプトエディタを開かなくとも、メニューから実行可能になります。

また、次回は時限式タイマーで決まった時刻に実行する方法を紹介します。