TikTok Ads Creative Reporting (GSheet)

This set of automations enables you to create a beautiful Creative report in GoogleSheets, combining an export of TikTok insights (i.e. performance metrics) with a screenshot library.

Notion image

JSON Recipe

Import the automation recipe(s) into your own account. Don’t know how? Learn here.

Screenshot Library
{"name":"TikTok Screenshot Library","description":"tiktok_screenshot_library_20230130","nodes":{"fetch_integration_url_v2_1":{"type":"fetch_integration_url_v2","title":"Get Tiktok Ads","description":"Fetches a url with integration credentials and returns a sucessful json body","logging_enabled":false,"error_rules":[],"x":1032,"y":243,"group":"group_1","inputs":{"headers":{"export_enabled":true},"field":{"export_enabled":true},"all_pages":{"export_enabled":true,"data":true},"provider":{"export_enabled":true,"data":"tik_tok"}},"outputs":{"body":{"title":"ads","description":"Body that got returned"}}},"extract_1":{"type":"extract_v2","logging_enabled":false,"error_rules":[],"x":553,"y":246,"group":"group_1","inputs":{"pointer":{"export_enabled":true,"data":"/id"},"data":{"title":"ad_account_id","description":"The data from which to extract"}}},"replace_string_1":{"type":"replace_string","logging_enabled":false,"error_rules":[],"x":798,"y":243,"group":"group_1","inputs":{"regex":{"export_enabled":true,"data":"{account_id}"},"pointer":{"export_enabled":true,"data":""},"schema":{"export_enabled":true,"data":"url"},"data":{"export_enabled":true,"data":"https://business-api.tiktok.com/open_api/v1.3/ad/get/?advertiser_id={account_id}\u0026page_size=1000"}}},"input_any_1":{"type":"input_any","title":"Screenshot Params","description":"Allows to input a any type","logging_enabled":false,"error_rules":[],"x":559,"y":149,"group":"group_2","inputs":{"any":{"export_enabled":true,"data":{"selector":"div.device-video","ms_delay":700}}}},"create_screenshot_v5_1":{"type":"create_screenshot_v5","logging_enabled":false,"error_rules":[],"x":919,"y":238,"group":"group_2","outputs":{"created":{"title":"created","description":"Triggered when processing is done"}}},"extract_2":{"type":"extract_v2","logging_enabled":false,"error_rules":[],"x":42,"y":120,"group":"group_3","inputs":{"pointer":{"export_enabled":true,"data":"/ad_id"}}},"replace_string_2":{"type":"replace_string","title":"Replace String: Generate URL for ad Preview","description":"Replaces string or regex with an other string","logging_enabled":false,"error_rules":[],"x":321,"y":78,"group":"group_3","inputs":{"regex":{"export_enabled":true,"data":"{ad_id}"},"pointer":{"export_enabled":true,"data":""},"schema":{"export_enabled":true,"data":"string"},"data":{"export_enabled":true,"data":"https://business-api.tiktok.com/open_api/v1.3/creative/ads_preview/create/?advertiser_id={account_id}\u0026preview_type=AD\u0026device=[\"SAMSUNG%20Galaxy%20A10\"]\u0026ad_id={ad_id}"}}},"extract_3":{"type":"extract_v2","logging_enabled":false,"error_rules":[],"x":585,"y":376,"group":"group_3","inputs":{"pointer":{"export_enabled":true,"data":"/id"}}},"replace_string_3":{"type":"replace_string","logging_enabled":false,"error_rules":[],"x":859,"y":81,"group":"group_3","inputs":{"value":{"title":"value: ad_account","description":"Value that should replace the regex"},"regex":{"export_enabled":true,"data":"{account_id}"},"pointer":{"export_enabled":true,"data":""},"schema":{"export_enabled":true,"data":"string"}}},"start_1":{"type":"start","logging_enabled":false,"error_rules":[],"x":1,"y":355},"for_each_v2_1":{"type":"for_each_v2","logging_enabled":false,"error_rules":[],"x":190,"y":298},"stop_1":{"type":"stop","logging_enabled":false,"error_rules":[],"x":224,"y":1146,"inputs":{"stop":{"export_enabled":true}}},"for_each_v2_2":{"type":"for_each_v2","logging_enabled":false,"error_rules":[],"x":1279,"y":216},"patch_json_v2_1":{"type":"patch_json_v2","logging_enabled":false,"error_rules":[],"x":1816,"y":212,"inputs":{"patches":{"export_enabled":true,"data":[{"op":"add","path":"/url","value":"{{input.value}}"}]}}},"tik_tok_select_ad_account_ids_1":{"type":"tik_tok_select_ad_account_ids","logging_enabled":false,"error_rules":[],"x":164,"y":98,"inputs":{"ad_account_ids":{"title":"ad_account_ids","description":"Select one or more TikTok Ad Accounts"}}},"google_sheets_fetch_table_rows_v3_1":{"type":"google_sheets_fetch_table_rows_v3","title":"Fetch Google Spreadsheet Rows","description":"Fetch rows from a Google Spreadsheet","logging_enabled":false,"max_job_retries":3,"timeout":300,"error_rules":[],"x":307,"y":286,"group":"group_4","inputs":{"date_time_render_option":{"export_enabled":true,"data":"FORMATTED_STRING"},"value_render_option":{"export_enabled":true,"data":"FORMATTED_VALUE"},"dimension":{"export_enabled":true,"data":"COLUMNS"},"spreadsheet_id":{"title":" spreadsheet_id","description":"The spreadsheet to fetch from"}}},"delay_to_1":{"type":"delay_to","logging_enabled":false,"error_rules":[],"x":62,"y":793,"inputs":{"weekdays":{"export_enabled":true,"data":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]},"time":{"export_enabled":true,"data":"05:00:00+01:00"}}},"google_sheets_select_spreadsheet_id_v2_1":{"type":"google_sheets_select_spreadsheet_id_v2","logging_enabled":false,"error_rules":[],"x":413,"y":767,"inputs":{"spreadsheet_id":{"title":"spreadsheet_id","description":"The spreadsheet to fetch from"},"range":{"export_enabled":true,"data":"screenshots_import"}}},"join_data_1":{"type":"join_data","logging_enabled":false,"error_rules":[],"x":312,"y":235,"group":"group_5","inputs":{"conditions":{"export_enabled":true,"data":[{"a":"/ad_id","b":"/id"}]},"target":{"export_enabled":true,"data":""}}},"filter_v2_1":{"type":"filter_v2","logging_enabled":false,"error_rules":[],"x":884,"y":234,"group":"group_5","inputs":{"filters":{"export_enabled":true,"data":[{"operator":"=","pointer":"/provider","value":null},{"operator":"=","pointer":"/tiktok_item_id","value":null}]}},"outputs":{"items":{"title":"regular_ads","description":"The resulting items with all inputs"}}},"extract_4":{"type":"extract_v2","logging_enabled":false,"error_rules":[],"x":634,"y":349,"group":"group_4","inputs":{"pointer":{"export_enabled":true,"data":"/0/columns"}}},"parse_strings_to_ids_1":{"type":"parse_strings_to_ids","logging_enabled":false,"error_rules":[],"x":884,"y":348,"group":"group_4","inputs":{"schema":{"export_enabled":true,"data":"tik_tok_campaign_id"}}},"patch_json_list_v2_1":{"type":"patch_json_list_v2","logging_enabled":false,"error_rules":[],"x":1128,"y":345,"group":"group_4","inputs":{"patches":{"export_enabled":true,"data":[{"op":"replace","path":"/provider","value":"tiktok"}]},"value":{"export_enabled":true}}},"extract_5":{"type":"extract_v2","logging_enabled":false,"error_rules":[],"x":1516,"y":244,"group":"group_3","inputs":{"pointer":{"export_enabled":true,"data":"/data/preview_link"}}},"post_integration_url_v2_1":{"type":"post_integration_url_v2","title":"Post Integration Url: Ad Preview","description":"Posts to a json url endpoint of an integration provider and returns a sucessful json body","logging_enabled":false,"error_rules":[],"x":1166,"y":164,"group":"group_3","inputs":{"headers":{"export_enabled":true},"body":{"export_enabled":true},"provider":{"export_enabled":true,"data":"tik_tok"},"post":{"title":"post","description":"Starts the posting"}},"outputs":{"posted":{"title":"posted","description":"Triggered when posted"}}},"filter_v2_2":{"type":"filter_v2","logging_enabled":false,"error_rules":[],"x":587,"y":326,"group":"group_5","inputs":{"filters":{"export_enabled":true,"data":[{"operator":"=","pointer":"/provider","value":null},{"operator":"!=","pointer":"/tiktok_item_id","value":null}]}},"outputs":{"items":{"title":"spark_ads","description":"The resulting items with all inputs"}}},"map_any_to_table_rows_1":{"type":"map_any_to_table_rows","logging_enabled":false,"error_rules":[],"x":2317,"y":211,"inputs":{"add_header":{"export_enabled":true},"mapping":{"export_enabled":true,"data":{"A":"/ad_id","C":"/video_id","D":"/url","E":"/link_ad_manager"}},"schema":{"export_enabled":true,"data":"any"}}},"google_sheets_append_table_rows_v3_1":{"type":"google_sheets_append_table_rows_v3","logging_enabled":false,"error_rules":[],"x":2551,"y":212},"map_any_to_table_rows_2":{"type":"map_any_to_table_rows","logging_enabled":false,"error_rules":[],"x":2605,"y":235,"group":"group_6","inputs":{"add_header":{"export_enabled":true},"mapping":{"export_enabled":true,"data":{"A":"/ad_id","B":"/tiktok_item_id","D":"/screenshot","E":"/link_ad_manager"}},"schema":{"export_enabled":true,"data":"any"}}},"for_each_v2_3":{"type":"for_each_v2","logging_enabled":false,"error_rules":[],"x":1291,"y":595},"fetch_url_v5_1":{"type":"fetch_url_v5","title":"Fetch Url","description":"Fetches a url and returns a sucessful json body","logging_enabled":false,"max_job_retries":3,"timeout":180,"error_rules":[],"x":1216,"y":161,"group":"group_6","inputs":{"headers":{"export_enabled":true}}},"extract_list_1":{"type":"extract_list","logging_enabled":false,"error_rules":[],"x":1103,"y":342,"group":"group_7","inputs":{"pointer":{"export_enabled":true,"data":"/ad_data"}}},"tik_tok_fetch_reports_v2_1":{"type":"tik_tok_fetch_reports_v2","logging_enabled":false,"error_rules":[],"x":523,"y":345,"group":"group_8","inputs":{"date_range":{"export_enabled":true,"data":"last_30d"},"dimensions":{"export_enabled":true,"data":["ad_id"]},"metrics":{"export_enabled":true,"data":["spend"]},"data_level":{"export_enabled":true,"data":"AUCTION_AD"},"service_type":{"export_enabled":true,"data":"AUCTION"},"report_type":{"export_enabled":true,"data":"BASIC"}}},"filter_v2_3":{"type":"filter_v2","logging_enabled":false,"error_rules":[],"x":757,"y":346,"group":"group_8","inputs":{"filters":{"export_enabled":true,"data":[{"operator":"\u003e","pointer":"/metrics/spend","value":0}]}}},"patch_json_list_v2_2":{"type":"patch_json_list_v2","logging_enabled":false,"error_rules":[],"x":992,"y":341,"group":"group_8","inputs":{"patches":{"export_enabled":true,"data":[{"op":"cast","path":"/dimensions/ad_id","value":"string"}]},"value":{"export_enabled":true}}},"append_1":{"type":"append","logging_enabled":false,"error_rules":[],"x":229,"y":320,"group":"group_8","inputs":{"flatten":{"export_enabled":true},"schema":{"export_enabled":true,"data":"tik_tok_ad_account_id"}}},"replace_string_4":{"type":"replace_string","logging_enabled":false,"error_rules":[],"x":982,"y":156,"group":"group_6","inputs":{"regex":{"export_enabled":true,"data":"{name}"},"pointer":{"export_enabled":true,"data":""},"schema":{"export_enabled":true,"data":"url"}}},"replace_string_5":{"type":"replace_string","logging_enabled":false,"error_rules":[],"x":525,"y":157,"group":"group_6","inputs":{"regex":{"export_enabled":true,"data":"{post_id}"},"pointer":{"export_enabled":true,"data":""},"schema":{"export_enabled":true,"data":"url"},"data":{"export_enabled":true,"data":"https://shot.screenshotapi.net/screenshot?token=FQ49VC8-DHDMM17-HSATC3Q-3DA5VNY\u0026url=https%3A%2F%2Fwww.tiktok.com%2F%40{name}%2Fvideo%2F{post_id}\u0026width=414\u0026height=750\u0026fresh=true\u0026output=json\u0026file_type=png\u0026no_cookie_banners=true\u0026wait_for_event=load\u0026user_agent=User-Agent%3A%20Mozilla%2F5.0%20(Linux%3B%20Android%206.0%3B%20Nexus%205%20Build%2FMRA58N)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F108.0.0.0%20Mobile%20Safari%2F537.36\u0026css=.tt-sheet__mask%7Bdisplay%3Anone%3B%7D%0A.tt-sheet__container%7Bdisplay%3Anone%3B%7D%0A.tiktok-hpdrw7-DivTopBannerAB%7Bdisplay%3Anone%3B%7D"}}},"extract_6":{"type":"extract_v2","logging_enabled":false,"error_rules":[],"x":297,"y":156,"group":"group_6","inputs":{"pointer":{"export_enabled":true,"data":"/tiktok_item_id"}}},"join_data_2":{"type":"join_data","logging_enabled":false,"error_rules":[],"x":863,"y":339,"group":"group_7","inputs":{"conditions":{"export_enabled":true,"data":[{"b":"/ad_id","a":"/dimensions/ad_id"}]},"target":{"export_enabled":true,"data":"/ad_data"}}},"extract_7":{"type":"extract_v2","logging_enabled":false,"error_rules":[],"x":1444,"y":242,"group":"group_6","inputs":{"pointer":{"export_enabled":true,"data":"/screenshot"}}},"patch_json_v2_2":{"type":"patch_json_v2","logging_enabled":false,"error_rules":[],"x":2070,"y":210,"inputs":{"patches":{"export_enabled":true,"data":[{"op":"cast","path":"/advertiser_id","value":"string"},{"op":"add","path":"/link_ad_manager","value":"https://ads.tiktok.com/i18n/perf/creative?aadvid={{input.value/advertiser_id}}\u0026keyword={{input.value/ad_id}}"}]}}},"extract_8":{"type":"extract_v2","logging_enabled":false,"error_rules":[],"x":752,"y":157,"group":"group_6","inputs":{"pointer":{"export_enabled":true,"data":"/display_name"}}},"clone_file_v2_1":{"type":"clone_file_v2","logging_enabled":false,"error_rules":[],"x":1907,"y":240,"group":"group_6"},"google_sheets_append_table_rows_v3_2":{"type":"google_sheets_append_table_rows_v3","logging_enabled":false,"error_rules":[],"x":2839,"y":233,"group":"group_6"},"patch_json_v2_3":{"type":"patch_json_v2","logging_enabled":false,"error_rules":[],"x":2373,"y":239,"group":"group_6","inputs":{"patches":{"export_enabled":true,"data":[{"op":"cast","path":"/advertiser_id","value":"string"},{"op":"add","path":"/link_ad_manager","value":"https://ads.tiktok.com/i18n/perf/creative?aadvid={{input.value/advertiser_id}}\u0026keyword={{input.value/ad_id}}"}]}}},"patch_json_v2_4":{"type":"patch_json_v2","logging_enabled":false,"error_rules":[],"x":2137,"y":240,"group":"group_6","inputs":{"patches":{"export_enabled":true,"data":[{"op":"add","path":"/screenshot","value":"{{input.value}}"}]}}},"present_1":{"type":"present","logging_enabled":false,"error_rules":[],"x":1675,"y":239,"group":"group_6"}},"edges":[{"id":"map_any_to_table_rows_1.mapped:google_sheets_append_table_rows_v3_1.append","points":[]},{"id":"google_sheets_append_table_rows_v3_1.appended:for_each_v2_2.next","points":[]},{"id":"for_each_v2_2.item:patch_json_v2_1.data","points":[]},{"id":"google_sheets_fetch_table_rows_v3_1.rows:extract_4.data","points":[]},{"id":"google_sheets_fetch_table_rows_v3_1.fetched:extract_4.extract","points":[]},{"id":"map_any_to_table_rows_1.rows:google_sheets_append_table_rows_v3_1.rows","points":[]},{"id":"tik_tok_select_ad_account_ids_1.ad_account_ids:for_each_v2_1.items","points":[]},{"id":"for_each_v2_1.item:extract_1.data","points":[]},{"id":"extract_1.data:replace_string_1.value","points":[]},{"id":"replace_string_1.data:fetch_integration_url_v2_1.url","points":[]},{"id":"extract_1.extracted:replace_string_1.replace","points":[]},{"id":"start_1.start:for_each_v2_1.start","points":[]},{"id":"replace_string_1.replaced:fetch_integration_url_v2_1.fetch","points":[]},{"id":"google_sheets_select_spreadsheet_id_v2_1.spreadsheet_id:google_sheets_fetch_table_rows_v3_1.spreadsheet_id","points":[]},{"id":"google_sheets_select_spreadsheet_id_v2_1.spreadsheet_id:google_sheets_append_table_rows_v3_1.spreadsheet_id","points":[]},{"id":"for_each_v2_1.done:delay_to_1.start","points":[]},{"id":"delay_to_1.delayed:for_each_v2_1.start","points":[]},{"id":"post_integration_url_v2_1.body:extract_5.data","points":[]},{"id":"post_integration_url_v2_1.posted:extract_5.extract","points":[]},{"id":"extract_5.data:create_screenshot_v5_1.url","points":[]},{"id":"replace_string_2.data:replace_string_3.data","points":[]},{"id":"replace_string_3.replaced:post_integration_url_v2_1.post","points":[]},{"id":"replace_string_3.data:post_integration_url_v2_1.url","points":[]},{"id":"extract_5.extracted:create_screenshot_v5_1.create","points":[]},{"id":"input_any_1.any:create_screenshot_v5_1.params","points":[]},{"id":"for_each_v2_2.item:extract_2.data","points":[]},{"id":"extract_2.data:replace_string_2.value","points":[]},{"id":"extract_3.data:replace_string_3.value","points":[]},{"id":"for_each_v2_1.item:extract_3.data","points":[]},{"id":"for_each_v2_2.do:extract_2.extract","points":[]},{"id":"create_screenshot_v5_1.url:patch_json_v2_1.value","points":[]},{"id":"create_screenshot_v5_1.created:patch_json_v2_1.patch","points":[]},{"id":"extract_2.extracted:replace_string_2.replace","points":[]},{"id":"replace_string_2.replaced:extract_3.extract","points":[]},{"id":"extract_3.extracted:replace_string_3.replace","points":[]},{"id":"extract_4.data:parse_strings_to_ids_1.values","points":[]},{"id":"parse_strings_to_ids_1.parsed:patch_json_list_v2_1.patch","points":[]},{"id":"patch_json_list_v2_1.data_list:join_data_1.b","points":[]},{"id":"filter_v2_1.items:for_each_v2_2.items","points":[]},{"id":"extract_4.extracted:parse_strings_to_ids_1.parse","points":[]},{"id":"parse_strings_to_ids_1.result:patch_json_list_v2_1.data_list","points":[]},{"id":"patch_json_list_v2_1.patched:join_data_1.join","points":[]},{"id":"filter_v2_1.filtered:for_each_v2_2.start","points":[]},{"id":"join_data_1.items:filter_v2_2.items","points":[]},{"id":"join_data_1.items:filter_v2_1.items","points":[]},{"id":"join_data_1.joined:filter_v2_2.filter","points":[]},{"id":"filter_v2_2.filtered:filter_v2_1.filter","points":[]},{"id":"map_any_to_table_rows_2.rows:google_sheets_append_table_rows_v3_2.rows","points":[]},{"id":"map_any_to_table_rows_2.mapped:google_sheets_append_table_rows_v3_2.append","points":[]},{"id":"google_sheets_select_spreadsheet_id_v2_1.range:google_sheets_append_table_rows_v3_1.range","points":[]},{"id":"google_sheets_select_spreadsheet_id_v2_1.spreadsheet_id:google_sheets_append_table_rows_v3_2.spreadsheet_id","points":[]},{"id":"google_sheets_select_spreadsheet_id_v2_1.range:google_sheets_append_table_rows_v3_2.range","points":[]},{"id":"filter_v2_2.items:for_each_v2_3.items","points":[]},{"id":"fetch_url_v5_1.body:extract_7.data","points":[]},{"id":"extract_7.data:clone_file_v2_1.url","points":[]},{"id":"fetch_url_v5_1.fetched:extract_7.extract","points":[]},{"id":"clone_file_v2_1.cloned:patch_json_v2_4.patch","points":[]},{"id":"clone_file_v2_1.url:patch_json_v2_4.value","points":[]},{"id":"for_each_v2_3.item:patch_json_v2_4.data","points":[]},{"id":"google_sheets_append_table_rows_v3_2.appended:for_each_v2_3.next","points":[]},{"id":"extract_7.extracted:present_1.check","points":[]},{"id":"extract_7.data:present_1.data","points":[]},{"id":"present_1.true:clone_file_v2_1.clone","points":[]},{"id":"present_1.false:fetch_url_v5_1.fetch","points":[]},{"id":"for_each_v2_2.done:for_each_v2_3.start","points":[]},{"id":"for_each_v2_3.done:for_each_v2_1.next","points":[]},{"id":"tik_tok_fetch_reports_v2_1.reports:filter_v2_3.items","points":[]},{"id":"tik_tok_fetch_reports_v2_1.fetched:filter_v2_3.filter","points":[]},{"id":"filter_v2_3.filtered:patch_json_list_v2_2.patch","points":[]},{"id":"filter_v2_3.items:patch_json_list_v2_2.data_list","points":[]},{"id":"append_1.resetted:append_1.append","points":[]},{"id":"append_1.appended:tik_tok_fetch_reports_v2_1.fetch","points":[]},{"id":"append_1.list:tik_tok_fetch_reports_v2_1.ad_account_ids","points":[]},{"id":"for_each_v2_1.item:append_1.item","points":[]},{"id":"for_each_v2_1.do:append_1.reset","points":[]},{"id":"patch_json_list_v2_2.patched:extract_1.extract","points":[]},{"id":"patch_json_list_v2_2.data_list:join_data_2.a","points":[]},{"id":"join_data_2.items:extract_list_1.data_list","points":[]},{"id":"join_data_2.joined:extract_list_1.extract","points":[]},{"id":"extract_list_1.data_list:join_data_1.a","points":[]},{"id":"extract_list_1.extracted:google_sheets_fetch_table_rows_v3_1.fetch","points":[]},{"id":"replace_string_4.replaced:fetch_url_v5_1.fetch","points":[]},{"id":"replace_string_4.data:fetch_url_v5_1.url","points":[]},{"id":"replace_string_5.data:replace_string_4.data","points":[]},{"id":"for_each_v2_3.item:extract_6.data","points":[]},{"id":"for_each_v2_3.do:extract_6.extract","points":[]},{"id":"extract_6.extracted:replace_string_5.replace","points":[]},{"id":"extract_6.data:replace_string_5.value","points":[]},{"id":"replace_string_5.replaced:extract_8.extract","points":[]},{"id":"for_each_v2_3.item:extract_8.data","points":[]},{"id":"extract_8.extracted:replace_string_4.replace","points":[]},{"id":"extract_8.data:replace_string_4.value","points":[]},{"id":"patch_json_v2_1.data:patch_json_v2_2.data","points":[]},{"id":"patch_json_v2_1.data:patch_json_v2_2.value","points":[]},{"id":"patch_json_v2_1.patched:patch_json_v2_2.patch","points":[]},{"id":"patch_json_v2_2.data:map_any_to_table_rows_1.data","points":[]},{"id":"patch_json_v2_2.patched:map_any_to_table_rows_1.map","points":[]},{"id":"patch_json_v2_4.data:patch_json_v2_3.data","points":[]},{"id":"patch_json_v2_4.patched:patch_json_v2_3.patch","points":[]},{"id":"patch_json_v2_3.data:map_any_to_table_rows_2.data","points":[]},{"id":"patch_json_v2_3.patched:map_any_to_table_rows_2.map","points":[]},{"id":"fetch_integration_url_v2_1.fetched:join_data_2.join","points":[]},{"id":"fetch_integration_url_v2_1.body:join_data_2.b","points":[]}],"groups":{"group_3":{"title":"Create TikTok Screenshot","description":"","x":1564,"y":220,"inputs":["extract_2.data","extract_2.extract","extract_3.data"],"outputs":["create_screenshot_v5_1.url","create_screenshot_v5_1.created"]},"group_7":{"title":"Get TikTok Ads","description":"","x":467,"y":252,"inputs":["extract_1.data","append_1.reset","append_1.item"],"outputs":["extract_list_1.data_list","extract_list_1.extracted"]},"group_4":{"title":"Get ads with existing screenshot","description":"","x":722,"y":441,"inputs":["google_sheets_fetch_table_rows_v3_1.fetch","google_sheets_fetch_table_rows_v3_1.spreadsheet_id"],"outputs":["patch_json_list_v2_1.patched","patch_json_list_v2_1.data_list"]},"group_5":{"title":"Get ads w/o screenshot","description":"","x":997,"y":214,"inputs":["join_data_1.b","join_data_1.a","join_data_1.join"],"outputs":["filter_v2_1.items","filter_v2_1.filtered","filter_v2_2.items"]},"group_6":{"title":"Create Spark Ads Screenshot","description":"","x":1565,"y":595,"inputs":["google_sheets_append_table_rows_v3_2.range","google_sheets_append_table_rows_v3_2.spreadsheet_id","patch_json_v2_4.data","extract_6.data","extract_6.extract","extract_8.data"],"outputs":["google_sheets_append_table_rows_v3_2.appended"]},"group_2":{"title":"Create Screenshot","description":"","x":1810,"y":318,"group":"group_3","inputs":["create_screenshot_v5_1.url","create_screenshot_v5_1.create"],"outputs":["create_screenshot_v5_1.url","create_screenshot_v5_1.created"]},"group_8":{"title":"Get Ads with spend","description":"","x":372,"y":348,"group":"group_7","inputs":["append_1.item","append_1.reset"],"outputs":["patch_json_list_v2_2.data_list","patch_json_list_v2_2.patched"]},"group_1":{"title":"Get All Ads settings","description":"","x":615,"y":346,"group":"group_7","inputs":["extract_1.extract","extract_1.data"],"outputs":["fetch_integration_url_v2_1.body","fetch_integration_url_v2_1.fetched"]}},"widgets":{"widget_1":{"title":"Date Range","description":"Select a date range.","position":2,"icon":"las la-calendar","input":"tik_tok_fetch_reports_v2_1.date_range"},"widget_2":{"title":"Screenshot Tab","description":"Select the screenshots tab","position":4,"icon":"las la-table","input":"google_sheets_fetch_table_rows_v3_1.range"},"widget_3":{"title":"Screenshot Import Tab","description":"Select the tab, in which the screenshots should be added.","position":4,"icon":"las la-table","input":"google_sheets_select_spreadsheet_id_v2_1.range"},"widget_4":{"title":"Ad Account","description":"Select one or more TikTok Ad Accounts","position":1,"input":"tik_tok_select_ad_account_ids_1.ad_account_ids"},"widget_5":{"title":"Spreadsheet","description":"Select a spreadsheet","position":2,"input":"google_sheets_select_spreadsheet_id_v2_1.spreadsheet_id"},"widget_6":{"title":"Weekday","description":"Select one or more weekdays.","position":10,"icon":"las la-calendar","input":"delay_to_1.weekdays"},"widget_7":{"title":"Time","description":"Select a time and timezone.","position":10,"icon":"las la-clock","input":"delay_to_1.time"}},"variables":{},"config":{"capture_inputs_enabled":false,"caching_enabled":false},"tags":[]}
Performance Exporter - Results
{"name":"TikTok Performance Exporter - Results","description":"tiktok_performance_exporter_2023-07-12","nodes":{"stop_1":{"type":"stop","logging_enabled":false,"error_rules":[],"x":1770,"y":157,"inputs":{"stop":{"export_enabled":true}}},"tik_tok_fetch_reports_v2_1":{"type":"tik_tok_fetch_reports_v2","logging_enabled":false,"error_rules":[],"x":282,"y":361,"inputs":{"metrics":{"export_enabled":true,"data":["campaign_name","adgroup_name","campaign_id","adgroup_id","ad_name","impressions","clicks","spend","video_watched_2s","video_views_p100","video_views_p25","average_video_play_per_user","result"]},"dimensions":{"export_enabled":true,"data":["stat_time_day","ad_id"]},"data_level":{"export_enabled":true,"data":"AUCTION_AD"},"service_type":{"export_enabled":true,"data":"AUCTION"},"report_type":{"export_enabled":true,"data":"BASIC"},"date_range":{"export_enabled":true,"data":"last_90d"}}},"map_any_to_table_rows_1":{"type":"map_any_to_table_rows","logging_enabled":false,"error_rules":[],"x":513,"y":363,"inputs":{"mapping":{"export_enabled":true,"data":{"A":"/dimensions/stat_time_day","B":"/dimensions/ad_id","C":"/metrics/adgroup_id","D":"/metrics/campaign_id","E":"/metrics/ad_name","F":"/metrics/adgroup_name","G":"/metrics/campaign_name","H":"/metrics/spend","I":"/metrics/impressions","J":"/metrics/clicks","K":"/metrics/video_watched_2s","L":"/metrics/result"}},"add_header":{"export_enabled":true,"data":true},"schema":{"export_enabled":true,"data":"any_list"}}},"google_sheets_append_table_rows_v3_1":{"type":"google_sheets_append_table_rows_v3","logging_enabled":false,"error_rules":[],"x":979,"y":364},"google_sheets_clear_table_rows_v3_1":{"type":"google_sheets_clear_table_rows_v3","logging_enabled":false,"error_rules":[],"x":744,"y":365},"google_sheets_select_spreadsheet_id_v2_1":{"type":"google_sheets_select_spreadsheet_id_v2","logging_enabled":false,"error_rules":[],"x":970,"y":99,"inputs":{"spreadsheet_id":{"title":"spreadsheet_id","description":"The spreadsheet to fetch from"},"range":{"export_enabled":true,"data":"import"}}},"tik_tok_select_ad_account_ids_1":{"type":"tik_tok_select_ad_account_ids","logging_enabled":false,"error_rules":[],"x":280,"y":130,"inputs":{"ad_account_ids":{"title":"ad_account_ids","description":"Select one or more TikTok Ad Accounts"}}},"start_1":{"type":"start","logging_enabled":false,"error_rules":[],"x":34,"y":364},"delay_to_1":{"type":"delay_to","logging_enabled":false,"error_rules":[],"x":32,"y":127,"inputs":{"weekdays":{"export_enabled":true,"data":["Monday","Tuesday","Thursday","Wednesday","Sunday","Friday","Saturday"]},"time":{"export_enabled":true,"data":"05:14:00+01:00"}}}},"edges":[{"id":"google_sheets_append_table_rows_v3_1.appended:delay_to_1.start","points":[]},{"id":"start_1.start:delay_to_1.start","points":[]},{"id":"delay_to_1.delayed:tik_tok_fetch_reports_v2_1.fetch","points":[]},{"id":"map_any_to_table_rows_1.rows:google_sheets_append_table_rows_v3_1.rows","points":[]},{"id":"map_any_to_table_rows_1.mapped:google_sheets_clear_table_rows_v3_1.clear","points":[]},{"id":"google_sheets_clear_table_rows_v3_1.cleared:google_sheets_append_table_rows_v3_1.append","points":[]},{"id":"google_sheets_select_spreadsheet_id_v2_1.spreadsheet_id:google_sheets_append_table_rows_v3_1.spreadsheet_id","points":[]},{"id":"google_sheets_select_spreadsheet_id_v2_1.spreadsheet_id:google_sheets_clear_table_rows_v3_1.spreadsheet_id","points":[]},{"id":"google_sheets_select_spreadsheet_id_v2_1.range:google_sheets_append_table_rows_v3_1.range","points":[]},{"id":"google_sheets_select_spreadsheet_id_v2_1.range:google_sheets_clear_table_rows_v3_1.range","points":[]},{"id":"tik_tok_select_ad_account_ids_1.ad_account_ids:tik_tok_fetch_reports_v2_1.ad_account_ids","points":[]},{"id":"tik_tok_fetch_reports_v2_1.fetched:map_any_to_table_rows_1.map","points":[]},{"id":"tik_tok_fetch_reports_v2_1.reports:map_any_to_table_rows_1.data","points":[]}],"groups":{},"widgets":{"widget_1":{"title":"Spreadsheet","description":"Select a spreadsheet.","position":1,"input":"google_sheets_select_spreadsheet_id_v2_1.spreadsheet_id"},"widget_2":{"title":"Ad Account","description":"Select a TikTok Ad Account.","position":0,"input":"tik_tok_select_ad_account_ids_1.ad_account_ids"},"widget_3":{"title":"Time of Day","description":"Select a time.","position":4,"icon":"las la-clock","input":"delay_to_1.time"},"widget_4":{"title":"Weekday","description":"Select one or more days.","position":3,"icon":"las la-calendar","input":"delay_to_1.weekdays"}},"variables":{},"config":{"capture_inputs_enabled":false,"caching_enabled":false},"tags":[]}

How To

Step 1

After importing the automations into your account, create a copy of the spreadsheet template.

Step 2 - Screenshot Library

Choose an ad account, and the previously created spreadsheet. Select the screenshot library “screenshots” and the “screenshots_import” tab. Both of these are necessary.

Notion image

Every time the automation runs it will check whether an ad (identified by its id) has already an existing screenshot in the spreadsheet. If so, it will be skipped.

Now you can run the automation. It will immediately start creating screenshots for any ads that had delivery in the specified date range, adding about 5 screenshots per minute to the sheet. Once all ads have been screenshotted, the automation will go idle and wait until the following morning to check for any new ads that may have been started today and weren’t previously screenshotted.

 

Step 3 - Performance Export

In order to get relevant data into our report, we will need to pull TikTok performance data on ad level into the report.

Choose an ad account and the previously created spreadsheet and the “import” tab. With the default settings, it will be updated every morning. Per default, the report will show data for the last 90 days broken down by day.

Notion image
 

As you can see above, no metrics are selected in this view as we are using the default settings to output: spend, impressions, clicks, 2s video views, results as well as the calculated metrics CPM, CPC, CTR, Thumbstop Ratio, Cost / Result and Click-To-Result-CVR.

Run the automation.

 

Step 4 - Working with the report

Notion image

Besides the absolute values exported, a few key metrics will also be automatically calculated:

  • CTR: outbound clicks / impressions
  • CPC: spend / outbound clicks
  • CAC: spend / purchases
  • CVR: spend / outbound clicks
  • Thumbstop Ratio: 2s video views / impressions
 

All data will always be aggregated by ad name!

In the spreadsheet, there are two import tabs (import and screenshots_import) where data gets pushed into. You generally won’t ever have to work in these.

There are also 2 data manipulation sheets and one helper lookup sheet to make the multi-level dropdown work.

Notion image

As seen above all tabs other than “Report” are hidden but can be made visible and customized (more below).

 

In the report tab, you will find the 8 editable fields marked with a light yellow.

While you can choose a campaign, an adset belonging to said campaign and a specific timeframe, you can also leave any or all of them empty, which will aggregate the ad level data across the entire account.

Notion image

So e.g. leaving the month empty will simply aggregate all data across the entire selected timeframe.

The ad filter allows you to search for ads containing a specific text.

Additionally, you can choose how many ads should be visible and can sort by all metrics

💡
Any cells with formulas inside the spreadsheet are marked purple and are generally hidden. E.g. in the Report tab, all formulas are array formulas and work across the entire width of the spreadsheet but all live in column C.
Notion image
 

Advanced (1): Customizing dropdowns

These advanced concepts are shown using the Facebook Creative Reports but apply also to the TikTok ones.

The default dropdowns allow you to filter your ad performance by Campaign and Adset names. It is absolutely possible to change this to support something like Geo and Campaign instead.

Notion image

But any other breakdowns are also possible - it just depends on the ability to read out the information from the existing campaign or adset names.

 

In order to do this, we will add a column to the “prepare” tab, change the QUERY() formula in the “aggregate” tab and lastly, re-name the field in our “Report” tab.

 

First, unhide the “aggregate” and “prepare” tabs.

Notion image

The “prepare” tab combines the data export and some of the screenshot information and makes sure all metrics are correctly idenified as such (and not as text).

i) Adding a new column with extra information, e.g. Geo

Extracting text with the MID() formula

In this Demo spreadsheet I show how we can extract the GEO information with a simple MID() formula by reading out 2 characters, starting at the 6th from the adset name.

=MID(F2,6,2)

Note that we are using an Arrayformula that can take a range (in this case a whole column) instead of individual cells as reference. So the actual formula in cell O2 is:

=ArrayFormula(MID(F2:F,6,2))

This generates the output on the right.

So when should you use this? Generally, the MID() formula makes sense when we know at what character position the first character lives (in our case 6) and how long the text element is (in our case 2 characters long).

It is possible to use dynamic references by using the FIND() formula to specify the starting position. See the actual formula from cell P2 below. If you want to learn more, take a look at this Youtube tutorial.

=ArrayFormula(MID(F2:F,FIND(" - ",F2:F)+3,2))
 

Extracting text with the REGEXEXTRACT() formula

A more advanced and powerful way to do the same is the REGEXEXTRACT() formula. It allows you to dynamically extract exactly the element you are looking for and in itself allows you to do so in various ways. For more information, check out cells Q2 and R2 or this Youtube tutorial.

 

ii) Making the column available as a dropdown

Now that we have added an extra column, we need to make sure that we can use it in out report. In order to to that we need to edit the QUERY() formula in cell A1 of the “aggregate” tab.

=QUERY(prepare!A:X,"select A, E, G, F, sum(H), sum(I), sum(J), sum(K), sum(L), sum(M) group by A, E, G, F")

The QUERY() formula works a bit like SQL and is Googlesheet’s way of dynamically accessing a table’s (i.e. tab’s) data and manipulating it on the fly before returning a new table.

As you can see we are selecting the columns we want to use from the “prepare” tab. We only need to focus on the third and fourth column, which represent the top and middle dropdown in our “Report” tab.

Notion image

As you can see above selecting column “G” returns the campaign name and “F” returns the adset name.

So if we want to have “Geo” and “Campaign” instead of “Campaign” and “Adset” as our dropdowns, we simply need to change the formula to access our Geo information from the newly created column O.

=QUERY(prepare!A:X,"select A, E, O, G, sum(H), sum(I), sum(J), sum(K), sum(L), sum(M) group by A, E, O, G")

Note that we also need to “group by” the same columns towards the end of the formula.

 

iii) Change the field names

And this is it. Change the field names to “Geo” and “Campaign” and validate that everything works as expected.

Notion image
 

Anvanced (2): Replacing the main conversion metric

 
Did this answer your question?
😞
😐
🤩

Last updated on July 12, 2023