Set Up Recurring Report for Automated Mapping Data Import Only

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.
    • Google Ads Manager Account (MCC)
      // Comma-separated list of recipients. Comment out to not send any emails.
      var RECIPIENT_EMAIL = 'mapping++@atlas.facebook.com';
      
      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, Timezone';
      
        // Generate report
        var report = AdWordsApp.report(
          'SELECT CampaignId, CampaignName, CampaignStatus, Impressions, Clicks ' +
          '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 result = [yesterday, campaignId, campaignName, impressions, clicks, 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 = 'mapping++@atlas.facebook.com';
      
      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 ' +
          '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 result = [yesterday, campaignId, campaignName, impressions, clicks, 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} ); } }
  6. Click Preview to verify that the script is valid. If you're prompted for permission to run the script, click Authorize Now.
  7. Click Save, then click Close.
  8. Hover over the Frequency column to the right of the script you created to edit the frequency.
  9. Select Daily and 6:00 AM local time. Click Save.

* Nguồn: Facebook