Mailchimp url 使用电源查询
Mailchimp url using power query
我不是程序员,因此我正在尝试使用 Power 查询从 Mailchimp 中提取数据,Power 查询允许我编写 url link 并获取表格中的数据 (XMK/Json)。
这是我的 URL **http://us5.api.mailchimp.com/3.0/reports?apikey=(secret)
我只收到 10 份报告,而不是 100 份。
我做错了什么吗?
提前致谢
是的。 mailchimp 文档中没有任何记录,但默认情况下,当您查询 mailchimp 3.0 API 时,您只会获得前十条记录。为了获取更多的记录,您必须使用 &offset
和 &count
查询字符串参数。在我最近的一个 python 项目中,我按如下方式实现了它以在每个请求中获取 1000 条记录的 blocks/pages。也许,您可以将其转换为 power-query:
campaigns = []
baseurl = "https://" + dc + ".api.mailchimp.com/3.0/"
psize, i = 1000, 0 #page size
while(True):
turl = baseurl + "reports"
turl += "?since_send_time=" + camp_since_send_time
turl += '&offset=' + str(psize * i) + '&count=' + str(psize)
request = urllib2.Request(turl)
base64string = base64.encodestring('%s:%s' % (username, key)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)
try:
output = urllib2.urlopen(request).read()
data = json.loads(output)
except:
print "Error occurred. Make sure you entered the correct api key"
exit()
MailChimpExpress.createfile("allcampaigns.json", output)
cnt = len(data['reports'])
print str(cnt) + " campaigns retrieved"
for report in data['reports']:
lst = [report["id"], report["campaign_title"], report["type"], report["emails_sent"]]
campaigns.append(lst)
if cnt<psize: break #cnt could also be zero if no records are returned
i += 1
编辑
根据这个 technet link,看起来您确实可以使用 power query 连续调用 url。您可以使用其中一个答案中提到的类似这样的模式:
let
Source = Table.FromColumns({{"firstURL", "secondURL", "etc."}}, {"URLS"}),
InsertedCustom = Table.AddColumn(Source, "Custom", each Web.Page(Web.Contents([URLS])))
in
InsertedCustom
我不是程序员,因此我正在尝试使用 Power 查询从 Mailchimp 中提取数据,Power 查询允许我编写 url link 并获取表格中的数据 (XMK/Json)。 这是我的 URL **http://us5.api.mailchimp.com/3.0/reports?apikey=(secret) 我只收到 10 份报告,而不是 100 份。 我做错了什么吗?
提前致谢
是的。 mailchimp 文档中没有任何记录,但默认情况下,当您查询 mailchimp 3.0 API 时,您只会获得前十条记录。为了获取更多的记录,您必须使用 &offset
和 &count
查询字符串参数。在我最近的一个 python 项目中,我按如下方式实现了它以在每个请求中获取 1000 条记录的 blocks/pages。也许,您可以将其转换为 power-query:
campaigns = []
baseurl = "https://" + dc + ".api.mailchimp.com/3.0/"
psize, i = 1000, 0 #page size
while(True):
turl = baseurl + "reports"
turl += "?since_send_time=" + camp_since_send_time
turl += '&offset=' + str(psize * i) + '&count=' + str(psize)
request = urllib2.Request(turl)
base64string = base64.encodestring('%s:%s' % (username, key)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)
try:
output = urllib2.urlopen(request).read()
data = json.loads(output)
except:
print "Error occurred. Make sure you entered the correct api key"
exit()
MailChimpExpress.createfile("allcampaigns.json", output)
cnt = len(data['reports'])
print str(cnt) + " campaigns retrieved"
for report in data['reports']:
lst = [report["id"], report["campaign_title"], report["type"], report["emails_sent"]]
campaigns.append(lst)
if cnt<psize: break #cnt could also be zero if no records are returned
i += 1
编辑
根据这个 technet link,看起来您确实可以使用 power query 连续调用 url。您可以使用其中一个答案中提到的类似这样的模式:
let
Source = Table.FromColumns({{"firstURL", "secondURL", "etc."}}, {"URLS"}),
InsertedCustom = Table.AddColumn(Source, "Custom", each Web.Page(Web.Contents([URLS])))
in
InsertedCustom