2

此时一个请求返回 10 个列表对象。那么我怎样才能从 API v3.0 中获取所有列表,甚至有可能吗?在我从 API 得到的响应中,我没有看到 cursor_next 或类似的东西。

我说的是这个端点: http: //kb.mailchimp.com/api/resources/lists/lists-collection

4

5 回答 5

3

您可以发送仅返回列表计数 /3.0/lists?fields=total_items 的附加请求

然后将此值用于下一个请求 /3.0/lists?count={totalItems}

于 2016-10-28T10:48:13.013 回答
1

不知道这怎么会这么难,但我没有从 MailChimp API v3.0 中找到这些信息。相反,github中的一些项目建议我该怎么做..

所以答案是:API v3.0 中的分页总是使用计数和偏移量完成

于 2015-09-28T17:33:51.407 回答
1

使用 MailChimp.Net。这是一个带有 while 循环和偏移值的示例。

List<List> lists = new List<List>();
IMailChimpManager manager = new MailChimpManager(MailChimpApiKey);
bool moreAvailable = true;
int offset = 0;
while (moreAvailable)
{
    var membersRequest = manager.Lists.GetAllAsync( new ListRequest
    {
        FieldsToInclude = "fieldSample1",
        Limit = 10,
        Offset = offset
    }).ConfigureAwait(false);

    var allList = membersRequest.GetAwaiter().GetResult();
    foreach (List list in allList)
    {
        lists.Add(list);
    }
    if (allList.Count() >= 10)
        offset += 10;
    else
        moreAvailable = false;
}
于 2018-06-13T11:03:08.060 回答
0

感谢我们的帮助,我有一些定制工作,并在您的帮助下工作。

我有一个代码可以帮助将来面临同样问题的开发人员。

如果(!空($mailchimp_api_key)){

            $mailchimp_lists = get_transient( 'tbz_affwp_edd_mailchimp_lists' );

            if ( false === $mailchimp_lists ) {

                if ( ! class_exists( 'TbzAffWPMailChimp' ) ) {
                    require_once plugin_dir_path( __FILE__ ) . 'classes/api/MailChimp.php';
                }

                $Mailchimp = new TbzAffWPMailChimp( $mailchimp_api_key );
                $lists = $Mailchimp->get('lists?count=100');


                $lists_count = $lists['total_items'];

                if ( $lists_count >= 20 ) {

                    foreach ( $lists['lists'] as $list ) {
                        $mailchimp_lists[ $list ['id'] ] = $list['name'];
                    }

                    set_transient( 'tbz_affwp_edd_mailchimp_lists', $mailchimp_lists, 5 * MINUTE_IN_SECONDS );

                }

                return false;

            }

            return $mailchimp_lists;
        }

        return false;

    }

}

}

于 2020-04-22T08:45:34.917 回答
-1

我遇到了同样的问题,但更具体地说,我使用的是:

client.list.all(fields="lists.name,lists.id",)

这仅返回 10 个列表。要获得所有可用的列表,需要将其更改为您拥有的列表数量或更高的数量,在这种情况下,我随机选择了 100:

client.list.all(fields="lists.name,lists.id", count=100, offset=0)
于 2016-09-26T18:57:35.453 回答