Set Up Recurring Report for Manual Mapping and Cost Data Import

30/11/2019
  1. Go to Google Ads.
  2. From the navigation menu at the top right, click Tools.
  3. Under Bulk Actions, click Scripts.
  4. Click + to create a new script. Enter a name for the script.
  5. In the field that opens, paste the Facebook-provided script.
  6. In the second line of the script, replace RECIPIENT EMAIL with the email address where you'd like to receive the report. Be sure to leave the single quotation marks around the email address exactly as they appear in the script.
    • Google Ads Manager Account (MCC)
      // Comma-separated list of recipients. Comment out to not send any emails.
      var RECIPIENT_EMAIL = '[RECIPIENT EMAIL]';
      
      function main() {
        var accountSelector = MccApp.accounts();
        accountSelector.executeInParallel("processIndividualAccount");
      }
      
      function processIndividualAccount() { 
        Logger.log('Starting report generation for account - ' + AdWordsApp.currentAccount().getName());
        var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
      
        //Get headers
        var csv = 'Date, Campaign ID, Campaign, Impressions, Clicks, Cost, Timezone';
      
        // Generate report
        var report = AdWordsApp.report(
          'SELECT CampaignId, CampaignName, CampaignStatus, Impressions, Clicks, AverageCpc ' +
          'FROM CAMPAIGN_PERFORMANCE_REPORT ' +
          'WHERE CampaignStatus=ENABLED ' +
          'DURING YESTERDAY');
        var display_campaigns = AdWordsApp.campaigns().withCondition("AdvertisingChannelType = DISPLAY").get();
        var display_campaign_ids = {};
      while (display_campaigns.hasNext()) {
        var display_campaign = display_campaigns.next();
        display_campaign_ids[display_campaign.getName()] = display_campaign.getId();
        }
      
        var rows = report.rows();
        var now = new Date();
        var timeZone = AdWordsApp.currentAccount().getTimeZone();
        var yesterday = Utilities.formatDate(new Date(now.getTime() - MILLIS_PER_DAY), timeZone, 'MM/dd/yyyy');
        var hasValidRows = false;
        while (rows.hasNext()) {
          var row = rows.next();
          var campaignName = row['CampaignName'];
          campaignName = campaignName.replace(/,/g,'');
          var campaignId = row['CampaignId'];
          if (display_campaign_ids[campaignName] == undefined) {
            continue; 
          }
          var clicks = row['Clicks'];
          var impressions = row['Impressions'];
          var cpc = row['AverageCpc'];
          cpc = cpc.replace(/,/g,'');
          var cost = cpc * clicks;
          var result = [yesterday, campaignId, campaignName, impressions, clicks, cost, timeZone];
          hasValidRows = true;
            csv += '
      ' + result.join(','); } if(RECIPIENT_EMAIL && hasValidRows == true) { var reportName = 'adwords_report_' + AdWordsApp.currentAccount().getCustomerId(); var compressedCSV = Utilities.zip([Utilities.newBlob(csv,'application/octet-stream').setName(reportName + '.csv')], reportName +'.zip'); MailApp.sendEmail( RECIPIENT_EMAIL, 'Adwords display campaign performance report', '', {attachments:compressedCSV} ); } }
    • Google Ads Account
      // Comma-separated list of recipients. Comment out to not send any emails.
      var RECIPIENT_EMAIL = '[RECIPIENT EMAIL]';
      
      function main() {
        Logger.log('Starting report generation');
        //Get headers
        var csv = 'Date, Campaign ID, Campaign, Impressions, Clicks, Cost, Timezone';
      
        // Generate report
        var report = AdWordsApp.report(
          'SELECT CampaignId, CampaignName, CampaignStatus, Impressions, Clicks, Cost ' +
          'FROM CAMPAIGN_PERFORMANCE_REPORT ' +
          'WHERE CampaignStatus=ENABLED ' +
          'DURING YESTERDAY');
        var display_campaigns = AdWordsApp.campaigns().withCondition("AdvertisingChannelType = DISPLAY").get();
        var display_campaign_ids = {};
        while (display_campaigns.hasNext()) {
          var display_campaign = display_campaigns.next();
          display_campaign_ids[display_campaign.getName()] = display_campaign.getId();
        }
      
        var rows = report.rows();
        var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
        var now = new Date();
        var timeZone = AdWordsApp.currentAccount().getTimeZone();
        var yesterday = Utilities.formatDate(new Date(now.getTime() - MILLIS_PER_DAY), timeZone, 'MM/dd/yyyy');
        var hasValidRows = false;
        while (rows.hasNext()) {
          var row = rows.next();
          var campaignName = row['CampaignName'];
          campaignName = campaignName.replace(/,/g,'');
          var campaignId = row['CampaignId'];
          if (display_campaign_ids[campaignName] == undefined) {
            continue; 
          }
          var clicks = row['Clicks'];
          var impressions = row['Impressions'];
          var cost = row['Cost'];
          cost = cost.replace(/,/g,'');
          var result = [yesterday, campaignId, campaignName, impressions, clicks, cost, timeZone];
          hasValidRows = true;
          csv += '
      ' + result.join(','); } if(RECIPIENT_EMAIL && hasValidRows == true) { var reportName = 'adwords_report_' + AdWordsApp.currentAccount().getCustomerId(); var compressedCSV = Utilities.zip([Utilities.newBlob(csv,'application/octet-stream').setName(reportName + '.csv')], reportName +'.zip'); MailApp.sendEmail( RECIPIENT_EMAIL, 'Adwords display campaign performance report', '', {attachments:compressedCSV} ); } }
  7. Click Preview to verify that the script is valid. If you're prompted for permission to run the script, click Authorize Now.
  8. Click Save, then click Close.
  9. Hover over the Frequency column to the right of the script you created to edit the frequency.
  10. Select Daily and 6:00 AM local time. Click Save.

* Nguồn: Facebook