AdMob 판매를 Spreadsheet에 자동으로 출력하는 방법
개요
GoogleAppsScript를 사용하여 GoogleSpreadSheet에 AdMob 판매를 자동으로 가져오고 출력하는 방법입니다.
프레임마다 시트가 만들어져 출력되므로 적시에 importrange
에서 등으로 취득하여 필요한 형식으로 사용하십시오.
getAdUnitCodeList
에서 취득하는 범위내에서 광고 요청이 있으면 자동으로 취득되므로 인벤토리가 추가되거나 앱이 추가되어도
동일한 계정 내에서 관리되는 경우 자동으로 추가됩니다.
다만, 운용상 오랜 세월 운용하면 행수가 늘어나 무거워질 것 같기 때문에 1년마다 운용한다고 가정하고 있습니다.
년이 지나면 일정을 멈추고 정기 실행을 중지하고 새로 Spreadsheet를 복사하여 취득 기간을 변경한 후
일정을 추가하고 정기 실행을 다시 시작합니다.
사용법
아래 소스 코드를 붙여
AD_CLIENT_ID
, START_DATE
, END_DATE
AdSenseManagementAPI를 사용 설정하세요.
run
함수를 실행하면 시트가 자동으로 만들어져 출력됩니다.필요한 경우 일정을 등록하고 정기적으로 실행합니다.
제외하지 않고 쓸데없이 출력했을 경우는
truncateSheet
를 실행해 주세요.모든 시트가 삭제됩니다.
※이미
importrange
등으로 참조하고 있으면 참조가 망가질 가능성이 있으므로 조심해 주세요.※모두 덮어쓰기 보존되므로, 출력된 곳에 메모라든지 써도 사라져 버리거나 위치가 어긋나거나 하기 때문에
어디까지나 데이터 소스로 이용하십시오.
소스 코드
var AD_CLIENT_ID = 'ca-app-pub-xxxxxxxxxx' // 取得するレポートのID
var START_DATE = '2019-01-01'// 取得する範囲の開始日
var END_DATE = '2019-12-31' // 取得する範囲の終了日を入れる
var CODE_LIST_METRIC = ['REACHED_AD_REQUESTS']
var CODE_LIST_DEMENSION = ['APP_ID', 'AD_UNIT_CODE', 'APP_NAME', 'APP_PLATFORM']
var REPORT_METORIC = ['VIEWED_IMPRESSIONS','AD_REQUESTS_COVERAGE','CLICKS','MATCHED_AD_REQUESTS_CTR', 'COST_PER_CLICK','MATCHED_AD_REQUESTS_RPM','EARNINGS']
var REPORT_DEMENSION = ['DATE']
var AD_UNIT_SHEET = '枠管理(自動更新)' // 取得した枠一覧が入るシート名
// 除外するアプリがあればここに入れる
var IGNORE_APP_IDS = []
// メインロジック
// この関数をスケジュール実行してください
function run() {
var adUnitCodes = getAdUnitCodeList(AD_CLIENT_ID, START_DATE, END_DATE).filter(function(adUnitCode) {
return IGNORE_APP_IDS.indexOf(adUnitCode[0]) == -1
})
updateAdUnitList(adUnitCodes)
adUnitCodes.forEach(function(adUnitCode) {
var report = getReport(adUnitCode[0], adUnitCode[1], START_DATE, END_DATE)
updateReportSheet(adUnitCode[1], report)
})
}
// IGNORE_APP_IDSを後から追加したりして要らないシートが大量にできた時に削除したりするのに使ってください。
// AD_UNIT_SHEET以外のシートをすべて削除します。
// 別のSpreadsheetから参照とかしてると全部消えちゃうので気をつけてください。
function truncateSheet() {
var sheet = SpreadsheetApp.getActive().getSheetByName( AD_UNIT_SHEET );
if (sheet == null) {
SpreadsheetApp.getActive().insertSheet( AD_UNIT_SHEET )
}
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets()
sheets.filter(function(sheet){ return sheet.getName() != AD_UNIT_SHEET }).forEach(function(sheet) {
SpreadsheetApp.getActive().deleteSheet(sheet)
})
}
function updateReportSheet(sheetName, report) {
var sheet = SpreadsheetApp.getActive().getSheetByName( sheetName );
if (sheet == null) {
sheet = SpreadsheetApp.getActive().insertSheet(sheetName)
}
var header = [REPORT_DEMENSION.concat(REPORT_METORIC)]
sheet.getRange( 1, 1, header.length, header[0].length ).setValues(header)
sheet.getRange( 2, 1, report.length, report[0].length ).setValues(report)
}
function updateAdUnitList(adUnitCodes) {
var sheet = SpreadsheetApp.getActive().getSheetByName( AD_UNIT_SHEET );
if (sheet == null) {
SpreadsheetApp.getActive().insertSheet(AD_UNIT_SHEET)
}
var header = [CODE_LIST_DEMENSION.concat(CODE_LIST_METRIC)]
sheet.getRange( 1, 1, header.length, header[0].length ).setValues(header)
sheet.getRange( 2, 1, adUnitCodes.length, adUnitCodes[0].length ).setValues(adUnitCodes)
}
function getAdUnitCodeList(adClientId, startDate, endDate) {
var args = {
'metric': CODE_LIST_METRIC,
'dimension': CODE_LIST_DEMENSION,
'filter': ['AD_CLIENT_ID==' + adClientId],
'useTimezoneReporting': ['true'], // タイムゾーンを取得するアカウントに揃えるフラグ
};
return AdSense.Reports.generate(startDate, endDate, args).getRows();
}
function getReport(appId, adUnitCode, startDate, endDate) {
var args = {
'metric': REPORT_METORIC,
'dimension': REPORT_DEMENSION,
'filter': ['APP_ID==' + appId, 'AD_UNIT_CODE==' + adUnitCode],
'useTimezoneReporting': ['true'], // タイムゾーンを取得するアカウントに揃えるフラグ
};
return AdSense.Reports.generate(startDate, endDate, args).getRows();
}
참고 자료
AdMob 애드센스 관리 API 설명서
Reference
이 문제에 관하여(AdMob 판매를 Spreadsheet에 자동으로 출력하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yo1106/items/6c9167f84b49253f8a29
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var AD_CLIENT_ID = 'ca-app-pub-xxxxxxxxxx' // 取得するレポートのID
var START_DATE = '2019-01-01'// 取得する範囲の開始日
var END_DATE = '2019-12-31' // 取得する範囲の終了日を入れる
var CODE_LIST_METRIC = ['REACHED_AD_REQUESTS']
var CODE_LIST_DEMENSION = ['APP_ID', 'AD_UNIT_CODE', 'APP_NAME', 'APP_PLATFORM']
var REPORT_METORIC = ['VIEWED_IMPRESSIONS','AD_REQUESTS_COVERAGE','CLICKS','MATCHED_AD_REQUESTS_CTR', 'COST_PER_CLICK','MATCHED_AD_REQUESTS_RPM','EARNINGS']
var REPORT_DEMENSION = ['DATE']
var AD_UNIT_SHEET = '枠管理(自動更新)' // 取得した枠一覧が入るシート名
// 除外するアプリがあればここに入れる
var IGNORE_APP_IDS = []
// メインロジック
// この関数をスケジュール実行してください
function run() {
var adUnitCodes = getAdUnitCodeList(AD_CLIENT_ID, START_DATE, END_DATE).filter(function(adUnitCode) {
return IGNORE_APP_IDS.indexOf(adUnitCode[0]) == -1
})
updateAdUnitList(adUnitCodes)
adUnitCodes.forEach(function(adUnitCode) {
var report = getReport(adUnitCode[0], adUnitCode[1], START_DATE, END_DATE)
updateReportSheet(adUnitCode[1], report)
})
}
// IGNORE_APP_IDSを後から追加したりして要らないシートが大量にできた時に削除したりするのに使ってください。
// AD_UNIT_SHEET以外のシートをすべて削除します。
// 別のSpreadsheetから参照とかしてると全部消えちゃうので気をつけてください。
function truncateSheet() {
var sheet = SpreadsheetApp.getActive().getSheetByName( AD_UNIT_SHEET );
if (sheet == null) {
SpreadsheetApp.getActive().insertSheet( AD_UNIT_SHEET )
}
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets()
sheets.filter(function(sheet){ return sheet.getName() != AD_UNIT_SHEET }).forEach(function(sheet) {
SpreadsheetApp.getActive().deleteSheet(sheet)
})
}
function updateReportSheet(sheetName, report) {
var sheet = SpreadsheetApp.getActive().getSheetByName( sheetName );
if (sheet == null) {
sheet = SpreadsheetApp.getActive().insertSheet(sheetName)
}
var header = [REPORT_DEMENSION.concat(REPORT_METORIC)]
sheet.getRange( 1, 1, header.length, header[0].length ).setValues(header)
sheet.getRange( 2, 1, report.length, report[0].length ).setValues(report)
}
function updateAdUnitList(adUnitCodes) {
var sheet = SpreadsheetApp.getActive().getSheetByName( AD_UNIT_SHEET );
if (sheet == null) {
SpreadsheetApp.getActive().insertSheet(AD_UNIT_SHEET)
}
var header = [CODE_LIST_DEMENSION.concat(CODE_LIST_METRIC)]
sheet.getRange( 1, 1, header.length, header[0].length ).setValues(header)
sheet.getRange( 2, 1, adUnitCodes.length, adUnitCodes[0].length ).setValues(adUnitCodes)
}
function getAdUnitCodeList(adClientId, startDate, endDate) {
var args = {
'metric': CODE_LIST_METRIC,
'dimension': CODE_LIST_DEMENSION,
'filter': ['AD_CLIENT_ID==' + adClientId],
'useTimezoneReporting': ['true'], // タイムゾーンを取得するアカウントに揃えるフラグ
};
return AdSense.Reports.generate(startDate, endDate, args).getRows();
}
function getReport(appId, adUnitCode, startDate, endDate) {
var args = {
'metric': REPORT_METORIC,
'dimension': REPORT_DEMENSION,
'filter': ['APP_ID==' + appId, 'AD_UNIT_CODE==' + adUnitCode],
'useTimezoneReporting': ['true'], // タイムゾーンを取得するアカウントに揃えるフラグ
};
return AdSense.Reports.generate(startDate, endDate, args).getRows();
}
AdMob 애드센스 관리 API 설명서
Reference
이 문제에 관하여(AdMob 판매를 Spreadsheet에 자동으로 출력하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yo1106/items/6c9167f84b49253f8a29텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)