Как я могу отсортировать по определенному значению в массиве, возвращаемом API Mailchimp? - PullRequest
0 голосов
/ 10 октября 2019

Я только изучаю JavaScript, поэтому, пожалуйста, потерпите меня. Я пытаюсь вернуть данные в массиве, созданном ниже, вызывая API Mailchimp для результатов автоматизации и каждой кампании в этой автоматизации. Я сделал это успешно, но кампании не в нужном порядке. Я знаю, что могу использовать «положение», чтобы упорядочить их должным образом, но я не могу понять, как отсортировать массив по этой позиции и вывести их правильно. Кто-нибудь может помочь?

var API_KEY = 'API KEY';
var dc = API_KEY.split('-')[1];
var workarr = [ ['automationID1'], ['automationID2'], ['automationID3'];
var sheet = SpreadsheetApp.getActiveSpreadsheet();


function mailchimpAutoCampaign() {

 for (var j = 0; j < workarr.length; j++) {

  // URL and params for the Mailchimp API Automation
  var root = 'https://'+dc+'.api.mailchimp.com/3.0/automations/'+ workarr[j];
   var endpoint = '/emails?count=19;'

  // parameters for url fetch
  var params = {
    'method': 'GET',
    'muteHttpExceptions': true,
    'headers': {
    'Authorization': 'apikey ' + API_KEY
    }
  };


  try {

    // call the Mailchimp API
    var response = UrlFetchApp.fetch(root+endpoint, params);
    var data = response.getContentText();
    var json = JSON.parse(data);
    var d = new Date();

    // get just automation campaign data
    var campaigns = json['emails'];


    // blank array to hold the automation campaign data for Sheet
    var campaignData = [];


    // Add the campaign data to the array
    for (var i = 0; i < campaigns.length; i++) {

      var c=campaigns[i];

      // put the automation campaign data into a double array for Google Sheets

        campaignData.push([
          //i,
          d,
          campaigns[i]["id"],
          campaigns[i]["settings"]["title"],
          campaigns[i]["position"],
          campaigns[i]["emails_sent"],
          (campaigns[i]["report_summary"]) ? campaigns[i]["report_summary"]["opens"] : 0,
          (campaigns[i]["report_summary"]) ? campaigns[i]["report_summary"]["unique_opens"] : 0,
          (campaigns[i]["report_summary"]) ? campaigns[i]["report_summary"]["open_rate"] : 0,
          (campaigns[i]["report_summary"]) ? campaigns[i]["report_summary"]["clicks"] : 0,
          (campaigns[i]["report_summary"]) ? campaigns[i]["report_summary"]["subscriber_clicks"] : 0,
          (campaigns[i]["report_summary"]) ? campaigns[i]["report_summary"]["click_rate"] : 0
        ]);
    }



    // Log the campaignData array
    Logger.log(campaignData);


    var text = String(campaignData);
    Logger.log(text);
    var camps = text.split(",");
    Logger.log(camps);


    // output the numbers to the sheet

    sheet.appendRow(camps);

  }
  catch (error) {
    // arrays errors
    Logger.log(error);
  };
 }

}
...