Я написал небольшой скрипт на Python usind facebook_business
, чтобы добавить users
к custom audience
.Мои данные включают EXTERN_ID
.Мне интересно: как я могу убедиться, что Facebook обновляет данные для пользователя, а не просто добавляет его снова?
Справочная информация: Я хотел бы автоматизировать обновление пользовательской аудитории каждую ночь на основе данных CRM.Изменяются некоторые данные, особенно данные LOOKALIKE_VALUE
.Поэтому я хочу перезаписывать старые данные в пользовательской аудитории, а не добавлять новых пользователей каждую ночь.
Это просто работает или я могу как-то это проверить?В библиотеке ресурсов / истории аудитории он показывает Added n rows
всякий раз, когда я запускаю свой сценарий - также смотрите прикрепленный скриншот: всякий раз, когда я запускаю свой сценарий, он говорит, что добавил n строк
Даже если я добавилпользователь с EXTERN_ID
, который я добавил ранее.
Вот анонимная и сокращенная версия моего скрипта:
from facebook_business import FacebookAdsApi
from facebook_business.adobjects.adaccount import AdAccount
import hashlib
import six
import re
... getting access data here
fapi = FacebookAdsApi.init(appid, appsecret, pageaccesstoken)
myaccount = AdAccount('act_'+str(myaccountid))
audiences = myaccount.get_custom_audiences(fields=['name'])
my_aud=audiences[id]
Schema = ['FN', 'LN', 'EMAIL', 'COUNTRY', 'PHONE', 'PHONE', 'PHONE','EXTERN_ID', 'LOOKALIKE_VALUE']
users = [...user data list of lists...]
... hashing user data EXCEPT extern_id and lookalike_value here
payload = {
'schema': Schema,
'is_raw': True,
'data': hashed_users,
}
params = {'payload':payload}
my_aud.get_api_assured().call(
'POST',
(my_aud.get_id_assured(), 'users'),
params=params,
)
Это работает, поскольку приложенный снимок экрана показывает, что он работаетв загрузке данных.Теперь возникает вопрос: как я могу узнать, обновляет ли он данные для существующих пользователей, которые были добавлены ранее, по сравнению с добавлением нового пользователя при появлении новой записи?
PS: я не использую my_aud.add_users()
, потому чтофункция еще не работает с пользовательской аудиторией на основе значений, поэтому я пошел в код SDK и скопировал / соединил соответствующие части кода вместе в своем сценарии ...