Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function getAPIKey() {
  2.   return 'YOUT API KEY'
  3. }
  4.  
  5. function fetchConversionsWithPage(payload, page, pageSize) {
  6.   var options = {
  7.     method: 'post',
  8.     headers: {
  9.       'X-Eflow-API-Key': getAPIKey(),
  10.     },
  11.     contentType: 'application/json',
  12.     payload: JSON.stringify(payload),
  13.   };
  14.  
  15.   var response = UrlFetchApp.fetch('https://api.eflow.team/v1/networks/reporting/conversions?page=' + page + '?page_size=' + pageSize, options);
  16.   return JSON.parse(response.getContentText());
  17. }
  18.  
  19. function onImportConversionFormSubmit(form) {
  20.   if(!getAPIKey()) {
  21.     alert('Missing API key');
  22.     return;
  23.   }
  24.  
  25.   var payload = {
  26.     from: form.from,
  27.     to: form.to,
  28.     timezone_id: parseInt(form.timezone, 10),
  29.     format: 'json',
  30.     currency_id: 'USD',
  31.     show_conversions: true,
  32.   };
  33.  
  34.   var page = 1;
  35.   var pageSize = 500;
  36.   var total_count = -1;
  37.  
  38.   var conversions = [];
  39.  
  40.   do{
  41.     var response = fetchConversionsWithPage(payload, page, pageSize);
  42.     total_count = response.paging.total_count;
  43.    
  44.     conversions.push.apply(conversions, response.conversions);
  45.    
  46.   } while((page++ * pageSize) < total_count)
  47.  
  48.    
  49.   var sheet = SpreadsheetApp.getActive()
  50.   .insertSheet('EverflowConversions_'+form.from+'_'+form.to+'_'+Math.floor((Math.random() * 1000000) + 10000))
  51.   .activate();
  52.  
  53.   var header = [
  54.     'conversion_id',
  55.     'transaction_id',
  56.     'conversion_unix_timestamp',
  57.     'click_unix_timestamp',
  58.     'relationship.affiliate.network_affiliate_id',
  59.     'relationship.affiliate.name',
  60.     'relationship.offer.network_offer_id',
  61.     'relationship.offer.name',
  62.     {label: 'affiliate_manager_id', path:'relationship.affiliate_manager.network_employee_id'},
  63.     'relationship.affiliate_manager.full_name',
  64.     'relationship.advertiser.network_advertiser_id',
  65.     'relationship.advertiser.name',
  66.     {label: 'account_manager_id', path:'relationship.account_manager.network_employee_id'},
  67.     'relationship.account_manager.full_name',
  68.     'source_id',
  69.     'sub1',
  70.     'sub2',
  71.     'sub3',
  72.     'sub4',
  73.     'sub5',
  74.     'adv1',
  75.     'adv2',
  76.     'adv3',
  77.     'adv4',
  78.     'adv5',
  79.     'session_user_ip',
  80.     'conversion_user_ip',
  81.     'http_user_agent',
  82.     'project_id',
  83.     'payout_type',
  84.     'revenue_type',
  85.     'country',
  86.     'region',
  87.     'city',
  88.     'dma',
  89.     'carrier',
  90.     'platform',
  91.     'os_version',
  92.     'device_type',
  93.     'brand',
  94.     'browser',
  95.     'language',
  96.     'payout',
  97.     'revenue',
  98.     'notes',
  99.     'is_scrub',
  100.     'is_view_through',
  101.     'coupon_code',
  102.     'order_id',
  103.     'error_code',
  104.     'sale_amount',
  105.     'isp',
  106.     'referer',
  107.     'app_id',
  108.     'idfa',
  109.     'idfa_md5',
  110.     'idfa_sha1',
  111.     'google_ad_id',
  112.     'google_ad_id_md5',
  113.     'google_ad_id_sha1',
  114.     'android_id',
  115.     'android_id_md5',
  116.     'android_id_sha1',
  117.     'currency_id',
  118.     'email',
  119.   ];
  120.  
  121.   var pHeader = [];
  122.   for(var i = 0; i < header.length; i++) {
  123.     if(typeof header[i] === 'object') {
  124.       pHeader[i] = header[i].label;
  125.     } else {
  126.       var split = header[i].split('.');
  127.       pHeader[i] = split.length > 1 && split[split.length -1].indexOf('name') > -1 ? split[split.length -2] + '_' + split[split.length -1] : split[split.length -1];
  128.     }
  129.   }
  130.   sheet.appendRow(pHeader);
  131.  
  132.   for(var i = 0; i < conversions.length; i++) {
  133.     var row = [];
  134.     for(var hi = 0; hi < header.length; hi++) {
  135.       if(typeof header[hi] === 'object') {
  136.         row[hi] = deepValue(conversions[i], header[hi].path);
  137.       } else {
  138.         row[hi] = deepValue(conversions[i], header[hi]);
  139.       }
  140.     }
  141.     sheet.appendRow(row);
  142.   }
  143. }
  144.  
  145. /**
  146.         Meta
  147. */
  148.  
  149. function getTimezones() {
  150.   var response = UrlFetchApp.fetch('https://static.everflowclient.io/timezone_en-US.json')
  151.   var timezones = JSON.parse(response.getContentText());
  152.  
  153.   return timezones;
  154. }
  155.  
  156. /**
  157.         Utils
  158. */
  159.  
  160. function include(filename) {
  161.   return HtmlService.createHtmlOutputFromFile(filename)
  162.       .getContent();
  163. }
  164.  
  165. function deepValue(obj, path){
  166.   try {
  167.     for (var i=0, path=path.split('.'), len=path.length; i<len; i++){
  168.         obj = obj[path[i]];
  169.     };
  170.     return obj;
  171.   } catch(ex) {
  172.     console.log(ex, obj, path);
  173.   }
  174. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement