Google скрипт для обновления информации об участнике mailchimp получает хороший ответ от API, но информация не обновляется - PullRequest
0 голосов
/ 11 ноября 2018

Цель состоит в том, чтобы обновлять информацию об участнике в mailchimp, когда что-либо обновляется здесь. У меня уже работает функция onEdit. Mailchimp API Result в порядке, в нем написано «throttled = no» и response = n / a. Ответ консоли Google тоже хорошо, поэтому я схожу с ума от этого кода:

    function sendToMailChimp(id_customer,id_shop,id_gender,fn,ln,em,optin,date_add,last_order,num_pedidos,aov,good_experience){
  var API_KEY = 'xxxxxxxx-us10';
  var mc_base_url = 'https://us10.api.mailchimp.com/3.0';
  var mc_list_id = 'xxxxxxxxxxxx';

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('');
    //Header of PUT request
    var headers = {
     'Authorization': 'Basic ' + Utilities.base64Encode('username' + ':' + API_KEY, Utilities.Charset.UTF_8),

    };

    //MailChimp API requires MD5 hash of email to identify a subscriber
    function md5(str) {
        return Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, str).reduce(function(str,chr){
        chr = (chr < 0 ? chr + 256 : chr).toString(16);
        return str + (chr.length==1?'0':'') + chr;
        },'');
    }
    var emHash = md5(em.toString().toLowerCase());

    //Body of PUT request
    var payload =  JSON.stringify({ 
      "status_if_new": "subscribed", 
      "email_address": em,
      "merge_fields": {
        "id_customer": id_customer,
        "id_shop": id_shop,
        "id_gender": id_gender,
        "optin": optin,
        "date_add": date_add,
        "last_order": last_order,
        "num_pedidos": num_pedidos,
        "aov": aov,
        "firstname": fn, 
        "lastname": ln,
        "good_experience": good_experience
      }
    });

  //put the above variables together into 'options'
  var options = {
    "headers" : headers,
    "payload": payload,
    "method" : "put",
    "muteHttpExceptions" : true
  };
  //PUT request to specific subscriber in Mailchimp
  var response = UrlFetchApp.fetch(mc_base_url + '/lists/' + mc_list_id + '/members/' + emHash,options);
  if( response.getResponseCode() == 200 ) {
    console.info( "SUCCESS to PROD for " + em + payload);
  } else {
    console.log(response);
  }
}
...