1

我有一个图表来开发。我使用Google文档的电子表格发布了图表。我希望图表随着数据的任何变化而自动更新。因此,我通过转到Google电子表格中的工具>脚本编辑器>资源>触发器,每天在凌晨1点设置触发器。触发器无法用于Google Analytics的gs代码

但是,这是行不通的,公布的图表没有得到更新。

本人已添加触发器的代码如下:

function runDemo() { 
    try { 

    var firstProfile = getFirstProfile(); 
    var results = getReportDataForProfile(firstProfile); 
    outputToSpreadsheet(results); 

    } catch(error) { 
    Browser.msgBox(error.message); 
    } 
} 


function getFirstProfile() { 
    var accounts = Analytics.Management.Accounts.list(); 
    if (accounts.getItems()) { 
    var firstAccountId = accounts.getItems()[0].getId(); 

    var webProperties = Analytics.Management.Webproperties.list(firstAccountId); 
    if (webProperties.getItems()) { 

     var firstWebPropertyId = webProperties.getItems()[0].getId(); 
     var profiles = Analytics.Management.Profiles.list(firstAccountId, firstWebPropertyId); 

     if (profiles.getItems()) { 
     var firstProfile = profiles.getItems()[0]; 
     return firstProfile; 

     } else { 
     throw new Error('No views (profiles) found.'); 
     } 
    } else { 
     throw new Error('No webproperties found.'); 
    } 
    } else { 
    throw new Error('No accounts found.'); 
    } 
} 

function getReportDataForProfile(firstProfile) { 

    var profileId = firstProfile.getId(); 
    var tableId = 'ga:' + profileId; 
    var startDate = getLastNdays(14); // 2 weeks (a fortnight) ago. 
    var endDate = getLastNdays(0);  // Today. 

    var optArgs = { 
    'dimensions': 'ga:date',    // Comma separated list of dimensions. 
    'sort': '-ga:date,ga:sessions',  // Sort by sessions descending, then keyword. 
    'segment': 'dynamic::ga:isMobile==No', // Process only mobile traffic. 
    //'filters': 'ga:source==google',   // Display only google traffic. 
    'start-index': '1', 
    'max-results': '250'      // Display the first 250 results. 
    }; 

    // Make a request to the API. 
    var results = Analytics.Data.Ga.get(
     tableId,     // Table id (format ga:xxxxxx). 
     startDate,     // Start-date (format yyyy-MM-dd). 
     endDate,     // End-date (format yyyy-MM-dd). 
     'ga:sessions,ga:pageviews', // Comma seperated list of metrics. 
     optArgs); 
    //{‘dimensions’: ‘ga:date’} 

    if (results.getRows()) { 
    return results; 

    } else { 
    throw new Error('No views (profiles) found'); 
    } 
} 

function getLastNdays(nDaysAgo) { 
    var today = new Date(); 
    var before = new Date(); 
    before.setDate(today.getDate() - nDaysAgo); 
    return Utilities.formatDate(before, 'GMT', 'yyyy-MM-dd'); 
} 

function outputToSpreadsheet(results) { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 

    // Print the headers. 
    var headerNames = []; 
    for (var i = 0, header; header = results.getColumnHeaders()[i]; ++i) { 
    headerNames.push(header.getName()); 
    } 
    sheet.getRange(1, 1, 1, headerNames.length) 
     .setValues([headerNames]); 

    // Print the rows of data. 
    sheet.getRange(2, 1, results.getRows().length, headerNames.length) 
     .setValues(results.getRows()); 

    //for(var i=2; results.getRows().length; i++) 
    //{ 
    // sheet.getRange(i, 1).getNumberFormat(); 
    //} 
    //sheet.getRange(2, 1, results.getRows().length).setNumberFormat('Plain text'); 
} 

而且我把触发的功能runDemo()

谁能帮我做这个。

回答

1

鉴于提供的代码,有几个方面我会专注于您的故障排除工作。

1)定义版本的getFirstProfile()与特定物业编号

function getFirstProfile() { 

    var accounts = Analytics.Management.Accounts.list(); 

    if (accounts.getItems()) { 
     var profile = Analytics.Management.Profiles.list('XXXXXXX', 
                'UA-XXXXXXX-1'); //Google Analytics Profile ID 
    } else { 
     throw new Error('No views (profiles) found.'); 
    } 
} 

2)Define a number for your profile ID

function getReportDataForProfile(firstProfile) { 

    //var profileId = profile.getId(); 
    var tableId = 'ga:xxxxxxxx'; // digits; 

在此期间,使用的工具可用在脚本编辑器中获取附加提示o f问题领域。

screenshot

让我们知道如何去。

+0

对不起,为时已晚。但这不适合我 – 2014-11-11 12:41:06

相关问题