Я могу добавить сценарий в существующий лист с помощью редактора сценариев и предоставить доступ к API AdSense, как описано в официальной документации: API управления AdSense . После включения API-интерфейса AdSense в редакторе сценариев при первом запуске функции generateReport () он запрашивает разрешение и, если он предоставляется, создает новый лист с отчетом AdSense.
Это код, где функция возвращает тестовый номер, если все в порядке (в данном случае 55):
/**
* Returns a test number.
*
* @return {Number} a test number.
* @customfunction
*/
function generateReport() {
var adClientId="XXXXXXXXXX"
// Prepare report.
var today = new Date();
var oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
var timezone = Session.getTimeZone();
var startDate = Utilities.formatDate(oneWeekAgo, timezone, 'yyyy-MM-dd');
var endDate = Utilities.formatDate(today, timezone, 'yyyy-MM-dd');
var report = AdSense.Reports.generate(startDate, startDate, {
// Specify the desired ad client using a filter.
filter: ['AD_CLIENT_ID==' + escapeFilterParameter(adClientId)],
metric: ['PAGE_VIEWS', 'AD_REQUESTS', 'AD_REQUESTS_COVERAGE', 'CLICKS',
'AD_REQUESTS_CTR', 'COST_PER_CLICK', 'AD_REQUESTS_RPM',
'EARNINGS'],
dimension: ['DATE'],
// Sort by ascending date.
sort: ['+DATE']
});
if (report.rows) {
var spreadsheet = SpreadsheetApp.create('AdSense Report');
var sheet = spreadsheet.getActiveSheet();
// Append the headers.
var headers = report.headers.map(function(header) {
return header.name;
});
sheet.appendRow(headers);
// Append the results.
sheet.getRange(2, 1, report.rows.length, headers.length)
.setValues(report.rows);
Logger.log('Report spreadsheet created: %s',
spreadsheet.getUrl());
return 55;
} else {
Logger.log('No rows returned.');
}
}
Однако, если я пытаюсь выполнить ту же функцию в существующей вместо редактора сценариев функция завершается ошибкой, сообщая, что для вызова generateReport () и доступа к отчету в AdSense требуется вход в систему. Для доступа к функции на листах, ячейка дважды щелкается, и функция вызывается с использованием = generateReport () и сбой при выполнении из-за проблемы входа в систему.
Я не могу найти ни одного места в листе для предоставления доступа к AdSense API, как это было сделано в редакторе сценариев, так как предоставить разрешение?