Google Sheets - Mailchimp API - Создать шаблон - PullRequest
0 голосов
/ 05 ноября 2018

Что я пытаюсь сделать:

Я пытаюсь создать шаблон (пользовательский HTML) с использованием Mailchimp API в соответствии с этой документацией .

Что я пробовал так далеко:

  • Взял сырой HTML шаблона, который я создал с помощью перетаскивания. Протестировал его используя 'code-your-own'. Сохранено в переменной в скрипте приложения. Используется для следующего кода с данными, установленными в качестве этой переменной. Я получил следующую ошибку

{instance = 2fb8b5eb-f11c-4260-a958-f16e5bc7c98b, detail = Отправленный ресурс не может быть проверен. Подробности по конкретным полям см. В массиве 'errors'., Type = http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/, title = Недопустимый ресурс, errors = [{field =, message = Схема описывает объект, вместо этого найдено NULL}], status = 400}

  • Затем я установил данные в более простой HTML, как показано ниже. Я получил ту же ошибку.
  • Я попытался использовать уже созданный шаблон (доступ через TEMPLATE_ID) и попытался отредактировать его (только имя шаблона). Я получил ту же ошибку, хотя я могу получить доступ к шаблону. Внесенные мной изменения:

    var TEMPLATE_ID = 'MY_TEMPLATE_ID';
    var endpoint = 'templates/' + TEMPLATE_ID;
    var data = {
               'name': 'new test name'
               }
    

    В параметрах

    'method': 'PATCH'
    
  • Я также пытался методом GET видеть шаблоны, кампании, списки. Я успешно могу это сделать.

  • Я посмотрел различные ответы на SO, один из них предложил использовать mergefields, я тоже попробовал с той же ошибкой.

     var data = {
           'name': 'Test Template',
           'html': '<html><head></head><body><p>TEST</p><body></html>',
           'mergefields': {}
         };
    

MWE:

    function mailchimpCampaign(){

    // URL and params for the Mailchimp API
    var root = 'https://us19.api.mailchimp.com/3.0/';
    var endpoint = 'templates';

    var data = {
                'name': 'Test Template',
                'html': '<html><head></head><body><p>TEST</p><body></html>'
                };
    var payload = JSON.stringify(data);

    // parameters for url fetch
    var params = {
        'method': 'POST',
        'muteHttpExceptions': true,
        'headers': {
        'Authorization': 'apikey ' + API_KEY,
        'content-type': 'application/json'
        },
        'data': payload
    };

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

        Logger.log(json);   
    }
    catch (error) {
        // deal with any errors
        Logger.log(error);
    };
    }

Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 05 ноября 2018

Это для будущих читателей.

Итак, пока я бился головой об этой ошибке. Я попытался использовать UrlFetchApp.getRequest(), и оно показало, что payload пусто.

Проблема была в том, что мне пришлось payload вместо data, который я использовал.

Обновлен рабочий код:

 var params = {
    'method': 'POST',
    'muteHttpExceptions': true,
    'headers': {
    'Authorization': 'apikey ' + API_KEY,
    'content-type': 'application/json'
    },
    'payload': payload
};
...