首页 > 解决方案 > 使用 mailchimp-api-v3 批量调用不超过 10 个分段成员

问题描述

我已经使用mailchimp-api-v3node js一段时间了,我认为它是一个很棒的包,而且很容易使用。但是,最近我需要使用它的方法GET对几个细分市场的成员进行细分。.batch()

不幸的是,即使有超过 10 个成员并且count在调用中指定了超过 10 的查询参数值,每个段也仅返回 10 个成员。和

const mc  = require('./mc-config');
const Mailchimp = require('mailchimp-api-v3');
const mailchimp = new Mailchimp(mc.apiKey);
const list_id   = mc.list_id;

正如预期的那样,以下每个都返回超过 10 个成员:

mailchimp.request({method:'GET',path:`/list/${list_id}/segments/${segment_id}/members`, query: {count: 1000}})....;
//or
mailchimp.get(`/lists/${list_id}/segments/${segment_id}/members?count=1000`)....;

但是,以下每个段最多只返回 10 个段成员:

mailchimp.batch([
    {method:'GET',path:`/lists/${list_id}/segments/${segment_id_1}/members`, query: {count:1000}},
    {method:'GET',path:`/lists/${list_id}/segments/${segment_id_2}/members`, query: {count:1000}},
    {method:'GET',path:`/lists/${list_id}/segments/${segment_id_3}/members`, query: {count:1000}},
    {method:'GET',path:`/lists/${list_id}/segments/${segment_id_4}/members`, query: {count:1000}},
    {method:'GET',path:`/lists/${list_id}/segments/${segment_id_5}/members`, query: {count:1000}}
])....;

我认为可能query完全忽略了参数,但是当我添加以下参数时,我为少于 10 个成员的段返回了更多成员:

.... include_cleaned:true, include_unsubscribed:true ....

有没有其他人遇到过这个问题?有什么我想念的吗?

标签: node.jsnpmmailchimp-api-v3.0mailchimp-api-v3

解决方案


使用Promise.all()似乎工作得很好,可惜我可以使用.batch()

(async () => {
    try {
        const segments = [segment_id1, segment_id2, segment_id3, segment_id4];
        const members = await Promise.all(
            segments.map(tag => mailchimp.get(`/lists/${list_id}/segments/${tag}/members?count=1000`))
        );
        //see how many members are returned
        console.log( members.map(m => m.members.length) );
    } catch( err ) {
        console.log( err );
    } finally {
        console.log( 'All done' );
    }
})();

对于具有超过 10 个成员的每个段/标签,返回所有成员(最多 1000 个)。


推荐阅读