Выдаются рандомные строки из рекламного кабинета ВК по API, а надо все
Я обращаюсь через API в рекламный кабинет ВК, чтобы автоматизировать автоотправку отчётов в Telegram-бот. Но он выдаёт рандомные строки из всей статистики, а нужны все данные.
Как решить эту проблему?
import oauth2client
import pandas as pd
import requests
import gspread
import time
import telegram
import io
def telegram_report(chat=None):
chat_id = chat or 726885196
bot = telegram.Bot(token='передаю токен бота')
token = 'передаю токен рекламного кабинета'
version = 5.103
id_rk = 1606907256
campaign_ids = []
ads_ids = []
r = requests.get('https://api.vk.com/method/ads.getAds', params={
'access_token': token,
'v': version,
'account_id': id_rk
})
data = r.json()['response']
ad_campaign_dict = {}
for i in range(len(data)):
ad_campaign_dict[data[i]['id']] = data[i]['campaign_id']
ads_campaign_list = []
ads_id_list = []
ads_impressions_list = []
ads_clicks_list = []
ads_spent_list = []
ads_day_start_list = []
ads_day_end_list = []
for ad_id in ad_campaign_dict:
r = requests.get('https://api.vk.com/method/ads.getStatistics', params={
'access_token': token,
'v': version,
'account_id': id_rk,
'ids_type': 'ad',
'ids': ad_id,
'period': 'overall',
'date_from': '0',
'date_to': '0'
})
try:
data_stats = r.json()['response']
for i in range(len(data_stats)):
for j in range(len(data_stats[i]['stats'])):
ads_impressions_list.append(data_stats[i]['stats'][j]['impressions'])
ads_clicks_list.append(data_stats[i]['stats'][j]['clicks'])
ads_spent_list.append(data_stats[i]['stats'][j]['spent'])
ads_day_start_list.append(data_stats[i]['stats'][j]['day_from'])
ads_day_end_list.append(data_stats[i]['stats'][j]['day_to'])
ads_id_list.append(data_stats[i]['id'])
ads_campaign_list.append(ad_campaign_dict[ad_id])
except KeyError:
continue
df = pd.DataFrame()
df['campaign_id'] = ads_campaign_list
df['ad_id'] = ads_id_list
df['impressions'] = ads_impressions_list
df['clicks'] = ads_clicks_list
df['spent'] = ads_spent_list
df['day_start'] = ads_day_start_list
df['day_end'] = ads_day_end_list
file_object = io.BytesIO()
df.to_excel(file_object)
file_object.name = 'test_file.xlsx'
file_object.seek(0)
bot.sendDocument(chat_id=chat_id , document = file_object)
try:
telegram_report()
except Exception as e:
print(e)