如何获取 mailchimp API v3.0 上的所有列表?
How to get all lists on mailchimp API v3.0?
此时一个请求returns10个列表对象。那么我怎样才能从 API v3.0 中获取所有列表或者它甚至可能?我在 API.
的回复中没有看到 cursor_next 或类似的内容
我说的是这个端点:http://kb.mailchimp.com/api/resources/lists/lists-collection
不知道这怎么会这么难,但我没有从 MailChimp API v3.0 中找到此信息。相反,github 中的某个项目建议我该怎么做..
所以答案:APIv3.0 中的分页总是使用计数和偏移量
我遇到了同样的问题,但为了更具体一点,我使用的是:
client.list.all(fields="lists.name,lists.id",)
这只返回了 10 个列表。要获得所有可用的列表,需要将其更改为您拥有的列表数或更大的数字,在本例中我随机选择了 100:
client.list.all(fields="lists.name,lists.id", count=100, offset=0)
您可以发送额外的请求 return 仅列出计数
/3.0/lists?fields=total_items
然后将这个值用于下一个请求
/3.0/lists?count={totalItems}
与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;
}
感谢我们的帮助,我有一些定制工作,并且在您的帮助下工作。
我有一个代码可以帮助将来遇到同样问题的开发人员。
if ( !empty( $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;
}
}
}
此时一个请求returns10个列表对象。那么我怎样才能从 API v3.0 中获取所有列表或者它甚至可能?我在 API.
的回复中没有看到 cursor_next 或类似的内容我说的是这个端点:http://kb.mailchimp.com/api/resources/lists/lists-collection
不知道这怎么会这么难,但我没有从 MailChimp API v3.0 中找到此信息。相反,github 中的某个项目建议我该怎么做..
所以答案:APIv3.0 中的分页总是使用计数和偏移量
我遇到了同样的问题,但为了更具体一点,我使用的是:
client.list.all(fields="lists.name,lists.id",)
这只返回了 10 个列表。要获得所有可用的列表,需要将其更改为您拥有的列表数或更大的数字,在本例中我随机选择了 100:
client.list.all(fields="lists.name,lists.id", count=100, offset=0)
您可以发送额外的请求 return 仅列出计数 /3.0/lists?fields=total_items
然后将这个值用于下一个请求 /3.0/lists?count={totalItems}
与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;
}
感谢我们的帮助,我有一些定制工作,并且在您的帮助下工作。
我有一个代码可以帮助将来遇到同样问题的开发人员。
if ( !empty( $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;
}
}
}