function myFunction() { // 1時間おきのトリガを設定したい場合はこちらを実行 trigger = ScriptApp.newTrigger("report") .timeBased() .everyHours(1) // .everyMinutes(5) .create(); report(); } function report() { var adsenseClientID = 'ca-pub-NNNNNNNNNNNNNNNN'; var adsenseAccounts = 'pub-NNNNNNNNNNNNNNNN'; var metrics = ['ESTIMATED_EARNINGS', 'PAGE_VIEWS', 'CLICKS', 'PAGE_VIEWS_CTR', 'COST_PER_CLICK', 'PAGE_VIEWS_RPM']; var sheetName = 'report'; var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(sheetName); if (sheet == null) { sheet = ss.insertSheet(sheetName); } const today = new Date(); var lastRow = sheet.getLastRow(); if (lastRow < 2) { var last = new Date('1900/1/1'); sheet.getRange(1, 1, 1, metrics.length+1).setValues([['Date'].concat(metrics)]); lastRow = 2; } else { var last = new Date(sheet.getRange(sheet.getLastRow(), 1).getDisplayValue()); } var report = AdSense.Accounts.Reports.generate( 'accounts/'+adsenseAccounts, { // Specify the desired ad client using a filter. filters: ['AD_CLIENT_ID=='+adsenseClientID], metrics: metrics, dimensions: ['DATE'], dateRange: 'CUSTOM', 'startDate.year': last.getFullYear(), 'startDate.month':last.getMonth() + 1, 'startDate.day':last.getDate(), 'endDate.year': today.getFullYear(), 'endDate.month':today.getMonth() + 1, 'endDate.day':today.getDate(), // Sort by ascending date. reportingTimeZone: 'ACCOUNT_TIME_ZONE', orderBy: ['+DATE'] } ); sheet.getRange(lastRow, 1, report.rows.length, report.rows[0].cells.length) .setValues(report.rows.map(row => row.cells.map(cell => cell.value))); }
Reports.generate関数はヘルプ(Method: accounts.reports.generate)を、metricsやdimensionsに指定する値はヘルプ(Metrics and Dimensions)を参照してください。
0 件のコメント:
コメントを投稿
質問、要望、指摘など書いていただいてもよいですが、対応できるとは限りませんのでご了承ください。私に対するものも含め他の人を嫌な気分になるようなコメントは避けてください。