У меня есть 5 версий нижеприведенного скрипта в моем проекте, которые извлекаются из Google Analytics (каждая из которых тянет группу страниц). В настоящее время я должен запускать каждый из них вручную и хотел бы, чтобы они запускались по порядку. Я настроил его таким образом, чтобы обойти 6-минутный лимит времени.
Есть ли способ запустить первый, и после завершения есть триггер со сценарием, который указывает на следующий сценарий для автоматического запуска?
function main3() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
for (var i = 1; i < 32; i++) {
var istring = i.toString();
var sheetName = istring;
var istring1 = "a" + ((i+1).toString());
var sheet = spreadsheet.getSheetByName(sheetName);
//sheet.clearContents();
}
for (var j = 27; j < 40; j++) {
var jstring = j.toString();
var jstring1 = "d" + ((j+1).toString());
var ss = SpreadsheetApp.openById("...");
var sheet2 = ss.getSheetByName('GA ID & SS KEY');
var sheet1 = ss.getSheetByName('Dates');
var allRows = sheet1.getRange(2, 1, 31).getValues();
var timeZone = ss.getSpreadsheetTimeZone();
var tableId = sheet2.getRange(jstring1).getValue();
//var lastRow = 2;
for (var i = 1; i < 32; i++) {
var istring = i.toString();
var sheetName = istring;
var istring1 = "a" + ((i+1).toString());
var sheet = spreadsheet.getSheetByName(sheetName);
var startDate1 = Utilities.formatDate(allRows[i-1][0], timeZone, "YYYY-MM-dd");
var endDate1 = startDate1;
var lastRow = sheet.getLastRow();
if (lastRow == 0) {
lastRow = 2;
} else {
lastRow = lastRow + 1;
}
var metrics = ['ga:pageviews,ga:uniquePageviews,ga:users,ga:newUsers,ga:entrances'];
var options = {
'dimensions': 'ga:hostname,ga:pagePath,ga:dimension3,ga:date',
'filters': 'ga:dimension3==commerce',
'sort': '-ga:pageviews',
//'segment': '',
'samplingLevel': 'HIGHER_PRECISION',
'max-results': '10000'
}
var report = gaGet(tableId, startDate1, endDate1, metrics, options);
if (report.rows !== undefined) {
Logger.log(report.rows.length);
var data = report.rows;
var writeRange = sheet.getRange(lastRow, 1, data.length, data[0].length)
writeRange.setValues(data);
}
}
}
}
function gaGet3(tableId, startDate1, endDate1, metrics, options) {
// Apply standard options
options = options || {};
options['max-results'] = options['max-results'] || '10000';
for (var i = 0; i < 5; i++) {
try {
return Analytics.Data.Ga.get(tableId, startDate1, endDate1, metrics, options);
} catch (err) {
if (err.message.indexOf('a server error occurred') > -1) {
Logger.log('Backend Error');
Utilities.sleep(2 * 60 * 1000);
} else if (err.message.indexOf('User Rate') > -1) {
Logger.log('Rate Limit Error');
Utilities.sleep(1000 * Math.pow((i + 1), 2));
} else if (err.message.indexOf('too many concurrent connections') > -1) {
Logger.log('Concurrent Connections Error');
Utilities.sleep(1000 * Math.pow((i + 1), 2));
} else {
Logger.log(err);
throw err;
}
}
}
throw 'Error. Max retries reached';
}