├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── admin-chat-app ├── .gcloudignore ├── README.md ├── classes │ ├── __init__.py │ ├── __init___test.py │ ├── decorators.py │ ├── decorators_test.py │ ├── message_generator.py │ └── report2bq.py ├── dynamic_commands │ ├── hello_world.py │ ├── list.py │ ├── members.py │ └── setup.py ├── install.sh ├── logos │ ├── GMP_Logo_Analytics300ppi.png │ ├── GMP_Logo_Display_Ads_360_Tile300ppi.png │ ├── GMP_Logo_Search_Ads_360300ppi.png │ └── logo_campaign_manager_color_1x_web_96dp.png ├── main.py └── requirements.txt ├── application ├── .gcloudignore ├── GA360-MANAGER.md ├── POSTPROCESSOR.md ├── README.md ├── SA360-MANAGER.md ├── SETUP.md ├── __init__.py ├── classes │ ├── __init__.py │ ├── __init___test.py │ ├── adh.py │ ├── api_checker.py │ ├── cloud_storage.py │ ├── csv_helpers.py │ ├── csv_helpers_test.py │ ├── dbm.py │ ├── dbm_report_runner.py │ ├── dcm.py │ ├── dcm_report_runner.py │ ├── decorators.py │ ├── decorators_test.py │ ├── exceptions.py │ ├── fetcher_factory.py │ ├── firestore.py │ ├── ga360_report.py │ ├── ga360_report_manager.py │ ├── ga360_report_manager_test.py │ ├── ga360_report_response.py │ ├── ga360_report_response_test.py │ ├── ga360_report_runner.py │ ├── ga360_report_test.py │ ├── gcs_streaming.py │ ├── gmail.py │ ├── postprocessor │ │ └── __init__.py │ ├── query │ │ ├── __init__.py │ │ ├── query.py │ │ └── report_manager.py │ ├── report2bq.py │ ├── report_config.py │ ├── report_manager.py │ ├── report_manager_test.py │ ├── report_type.py │ ├── report_type_test.py │ ├── sa360_dynamic.py │ ├── sa360_job.py │ ├── sa360_report_manager.py │ ├── sa360_report_runner.py │ ├── sa360_report_validation │ │ ├── __init__.py │ │ ├── account.py │ │ ├── ad.py │ │ ├── ad_group.py │ │ ├── ad_group_target.py │ │ ├── advertiser.py │ │ ├── bid_strategy.py │ │ ├── campaign.py │ │ ├── campaign_target.py │ │ ├── conversion.py │ │ ├── feed_item.py │ │ ├── floodlight_activity.py │ │ ├── keyword.py │ │ ├── negative_ad_group_keyword.py │ │ ├── negative_ad_group_target.py │ │ ├── negative_campaign_keyword.py │ │ ├── negative_campaign_target.py │ │ ├── paid_and_organic.py │ │ ├── product_advertised.py │ │ ├── product_group.py │ │ ├── product_lead_and_cross_sell.py │ │ ├── product_target.py │ │ ├── report_template.py │ │ ├── sa360_field_validator.py │ │ ├── sa360_field_validator_test.py │ │ ├── sa360_validator_factory.py │ │ └── visit.py │ ├── sa360_reports.py │ ├── sa360_web.py │ └── scheduler.py ├── cli │ ├── CLI-AUTH.md │ ├── __init__.py │ ├── bq_sa360_installer.py │ ├── create_token.py │ ├── csv_loader.py │ ├── key_upload.py │ ├── key_upload_test.py │ ├── launch.json │ ├── manage_reports.py │ ├── postprocessor.py │ ├── report2bq.py │ └── report_manager.py ├── cloud_functions │ ├── __init__.py │ ├── job_monitor.py │ ├── report_loader.py │ └── run_monitor.py ├── create_fetcher.sh ├── install.sh ├── main.py ├── migrate-jobs.sh ├── postprocessors │ ├── postprocessor_template.py │ └── report2bq_unknown.py ├── requirements.txt ├── screenshots │ ├── 1-project_id.png │ ├── 2-OAuth_consent.png │ ├── 3-API_Key.png │ ├── 3a-CreateAPIKey.png │ ├── 4-OAuthClientId.png │ ├── 5-OAuth_client.png │ ├── 6-RedirectURI.png │ ├── 6-Rename_secret.png │ ├── 7-OAuthRedirectURI.png │ ├── 8-OAuthClientAndSecret.png │ ├── SETUP-oauth_request.jpg │ ├── SETUP_allow.jpeg │ ├── SETUP_unsafe.jpeg │ ├── SETUP_unverified.jpg │ ├── appengine-signin.png │ ├── firestore-to-native-mode-0.png │ ├── firestore-to-native-mode-1.png │ └── firestore-to-native-mode-2.png └── test_harness │ ├── SchedulerTest.py │ ├── check_gcsfs.py │ ├── check_services.py │ ├── job_monitor.py │ └── run_monitor.py └── auth-appengine ├── .gcloudignore ├── README.md ├── app.yaml ├── classes ├── __init__.py ├── auth_helper.py ├── decorators.py ├── exceptions.py ├── firestore.py ├── gmail.py ├── oauth.py ├── report_type.py └── scheduler.py ├── index.html ├── main.py ├── requirements.txt ├── screenshots ├── 1_IAP-enable.png ├── 2_IAP-configure.png ├── app-yaml.png └── credentials-edit_oauth_client_id.png ├── static ├── css │ └── main.css ├── img │ └── favicon.ico └── js │ └── index.js └── templates ├── authenticate.html └── index.html /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/.gitignore -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/README.md -------------------------------------------------------------------------------- /admin-chat-app/.gcloudignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/.gcloudignore -------------------------------------------------------------------------------- /admin-chat-app/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /admin-chat-app/classes/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/classes/__init__.py -------------------------------------------------------------------------------- /admin-chat-app/classes/__init___test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/classes/__init___test.py -------------------------------------------------------------------------------- /admin-chat-app/classes/decorators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/classes/decorators.py -------------------------------------------------------------------------------- /admin-chat-app/classes/decorators_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/classes/decorators_test.py -------------------------------------------------------------------------------- /admin-chat-app/classes/message_generator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/classes/message_generator.py -------------------------------------------------------------------------------- /admin-chat-app/classes/report2bq.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/classes/report2bq.py -------------------------------------------------------------------------------- /admin-chat-app/dynamic_commands/hello_world.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/dynamic_commands/hello_world.py -------------------------------------------------------------------------------- /admin-chat-app/dynamic_commands/list.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/dynamic_commands/list.py -------------------------------------------------------------------------------- /admin-chat-app/dynamic_commands/members.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/dynamic_commands/members.py -------------------------------------------------------------------------------- /admin-chat-app/dynamic_commands/setup.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/dynamic_commands/setup.py -------------------------------------------------------------------------------- /admin-chat-app/install.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/install.sh -------------------------------------------------------------------------------- /admin-chat-app/logos/GMP_Logo_Analytics300ppi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/logos/GMP_Logo_Analytics300ppi.png -------------------------------------------------------------------------------- /admin-chat-app/logos/GMP_Logo_Display_Ads_360_Tile300ppi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/logos/GMP_Logo_Display_Ads_360_Tile300ppi.png -------------------------------------------------------------------------------- /admin-chat-app/logos/GMP_Logo_Search_Ads_360300ppi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/logos/GMP_Logo_Search_Ads_360300ppi.png -------------------------------------------------------------------------------- /admin-chat-app/logos/logo_campaign_manager_color_1x_web_96dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/logos/logo_campaign_manager_color_1x_web_96dp.png -------------------------------------------------------------------------------- /admin-chat-app/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/main.py -------------------------------------------------------------------------------- /admin-chat-app/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/admin-chat-app/requirements.txt -------------------------------------------------------------------------------- /application/.gcloudignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/.gcloudignore -------------------------------------------------------------------------------- /application/GA360-MANAGER.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/GA360-MANAGER.md -------------------------------------------------------------------------------- /application/POSTPROCESSOR.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/POSTPROCESSOR.md -------------------------------------------------------------------------------- /application/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/README.md -------------------------------------------------------------------------------- /application/SA360-MANAGER.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/SA360-MANAGER.md -------------------------------------------------------------------------------- /application/SETUP.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/SETUP.md -------------------------------------------------------------------------------- /application/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/__init__.py -------------------------------------------------------------------------------- /application/classes/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/__init__.py -------------------------------------------------------------------------------- /application/classes/__init___test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/__init___test.py -------------------------------------------------------------------------------- /application/classes/adh.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/adh.py -------------------------------------------------------------------------------- /application/classes/api_checker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/api_checker.py -------------------------------------------------------------------------------- /application/classes/cloud_storage.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/cloud_storage.py -------------------------------------------------------------------------------- /application/classes/csv_helpers.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/csv_helpers.py -------------------------------------------------------------------------------- /application/classes/csv_helpers_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/csv_helpers_test.py -------------------------------------------------------------------------------- /application/classes/dbm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/dbm.py -------------------------------------------------------------------------------- /application/classes/dbm_report_runner.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/dbm_report_runner.py -------------------------------------------------------------------------------- /application/classes/dcm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/dcm.py -------------------------------------------------------------------------------- /application/classes/dcm_report_runner.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/dcm_report_runner.py -------------------------------------------------------------------------------- /application/classes/decorators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/decorators.py -------------------------------------------------------------------------------- /application/classes/decorators_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/decorators_test.py -------------------------------------------------------------------------------- /application/classes/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/exceptions.py -------------------------------------------------------------------------------- /application/classes/fetcher_factory.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/fetcher_factory.py -------------------------------------------------------------------------------- /application/classes/firestore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/firestore.py -------------------------------------------------------------------------------- /application/classes/ga360_report.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/ga360_report.py -------------------------------------------------------------------------------- /application/classes/ga360_report_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/ga360_report_manager.py -------------------------------------------------------------------------------- /application/classes/ga360_report_manager_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/ga360_report_manager_test.py -------------------------------------------------------------------------------- /application/classes/ga360_report_response.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/ga360_report_response.py -------------------------------------------------------------------------------- /application/classes/ga360_report_response_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/ga360_report_response_test.py -------------------------------------------------------------------------------- /application/classes/ga360_report_runner.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/ga360_report_runner.py -------------------------------------------------------------------------------- /application/classes/ga360_report_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/ga360_report_test.py -------------------------------------------------------------------------------- /application/classes/gcs_streaming.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/gcs_streaming.py -------------------------------------------------------------------------------- /application/classes/gmail.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/gmail.py -------------------------------------------------------------------------------- /application/classes/postprocessor/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/postprocessor/__init__.py -------------------------------------------------------------------------------- /application/classes/query/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/query/__init__.py -------------------------------------------------------------------------------- /application/classes/query/query.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/query/query.py -------------------------------------------------------------------------------- /application/classes/query/report_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/query/report_manager.py -------------------------------------------------------------------------------- /application/classes/report2bq.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/report2bq.py -------------------------------------------------------------------------------- /application/classes/report_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/report_config.py -------------------------------------------------------------------------------- /application/classes/report_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/report_manager.py -------------------------------------------------------------------------------- /application/classes/report_manager_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/report_manager_test.py -------------------------------------------------------------------------------- /application/classes/report_type.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/report_type.py -------------------------------------------------------------------------------- /application/classes/report_type_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/report_type_test.py -------------------------------------------------------------------------------- /application/classes/sa360_dynamic.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_dynamic.py -------------------------------------------------------------------------------- /application/classes/sa360_job.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_job.py -------------------------------------------------------------------------------- /application/classes/sa360_report_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_manager.py -------------------------------------------------------------------------------- /application/classes/sa360_report_runner.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_runner.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/account.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/account.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/ad.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/ad.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/ad_group.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/ad_group.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/ad_group_target.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/ad_group_target.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/advertiser.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/advertiser.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/bid_strategy.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/bid_strategy.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/campaign.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/campaign.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/campaign_target.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/campaign_target.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/conversion.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/conversion.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/feed_item.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/feed_item.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/floodlight_activity.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/floodlight_activity.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/keyword.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/keyword.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/negative_ad_group_keyword.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/negative_ad_group_keyword.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/negative_ad_group_target.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/negative_ad_group_target.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/negative_campaign_keyword.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/negative_campaign_keyword.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/negative_campaign_target.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/negative_campaign_target.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/paid_and_organic.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/paid_and_organic.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/product_advertised.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/product_advertised.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/product_group.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/product_group.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/product_lead_and_cross_sell.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/product_lead_and_cross_sell.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/product_target.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/product_target.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/report_template.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/report_template.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/sa360_field_validator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/sa360_field_validator.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/sa360_field_validator_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/sa360_field_validator_test.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/sa360_validator_factory.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/sa360_validator_factory.py -------------------------------------------------------------------------------- /application/classes/sa360_report_validation/visit.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_report_validation/visit.py -------------------------------------------------------------------------------- /application/classes/sa360_reports.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_reports.py -------------------------------------------------------------------------------- /application/classes/sa360_web.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/sa360_web.py -------------------------------------------------------------------------------- /application/classes/scheduler.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/classes/scheduler.py -------------------------------------------------------------------------------- /application/cli/CLI-AUTH.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/CLI-AUTH.md -------------------------------------------------------------------------------- /application/cli/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/__init__.py -------------------------------------------------------------------------------- /application/cli/bq_sa360_installer.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/bq_sa360_installer.py -------------------------------------------------------------------------------- /application/cli/create_token.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/create_token.py -------------------------------------------------------------------------------- /application/cli/csv_loader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/csv_loader.py -------------------------------------------------------------------------------- /application/cli/key_upload.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/key_upload.py -------------------------------------------------------------------------------- /application/cli/key_upload_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/key_upload_test.py -------------------------------------------------------------------------------- /application/cli/launch.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/launch.json -------------------------------------------------------------------------------- /application/cli/manage_reports.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/manage_reports.py -------------------------------------------------------------------------------- /application/cli/postprocessor.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/postprocessor.py -------------------------------------------------------------------------------- /application/cli/report2bq.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/report2bq.py -------------------------------------------------------------------------------- /application/cli/report_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cli/report_manager.py -------------------------------------------------------------------------------- /application/cloud_functions/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /application/cloud_functions/job_monitor.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cloud_functions/job_monitor.py -------------------------------------------------------------------------------- /application/cloud_functions/report_loader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cloud_functions/report_loader.py -------------------------------------------------------------------------------- /application/cloud_functions/run_monitor.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/cloud_functions/run_monitor.py -------------------------------------------------------------------------------- /application/create_fetcher.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/create_fetcher.sh -------------------------------------------------------------------------------- /application/install.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/install.sh -------------------------------------------------------------------------------- /application/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/main.py -------------------------------------------------------------------------------- /application/migrate-jobs.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/migrate-jobs.sh -------------------------------------------------------------------------------- /application/postprocessors/postprocessor_template.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/postprocessors/postprocessor_template.py -------------------------------------------------------------------------------- /application/postprocessors/report2bq_unknown.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/postprocessors/report2bq_unknown.py -------------------------------------------------------------------------------- /application/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/requirements.txt -------------------------------------------------------------------------------- /application/screenshots/1-project_id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/1-project_id.png -------------------------------------------------------------------------------- /application/screenshots/2-OAuth_consent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/2-OAuth_consent.png -------------------------------------------------------------------------------- /application/screenshots/3-API_Key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/3-API_Key.png -------------------------------------------------------------------------------- /application/screenshots/3a-CreateAPIKey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/3a-CreateAPIKey.png -------------------------------------------------------------------------------- /application/screenshots/4-OAuthClientId.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/4-OAuthClientId.png -------------------------------------------------------------------------------- /application/screenshots/5-OAuth_client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/5-OAuth_client.png -------------------------------------------------------------------------------- /application/screenshots/6-RedirectURI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/6-RedirectURI.png -------------------------------------------------------------------------------- /application/screenshots/6-Rename_secret.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/6-Rename_secret.png -------------------------------------------------------------------------------- /application/screenshots/7-OAuthRedirectURI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/7-OAuthRedirectURI.png -------------------------------------------------------------------------------- /application/screenshots/8-OAuthClientAndSecret.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/8-OAuthClientAndSecret.png -------------------------------------------------------------------------------- /application/screenshots/SETUP-oauth_request.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/SETUP-oauth_request.jpg -------------------------------------------------------------------------------- /application/screenshots/SETUP_allow.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/SETUP_allow.jpeg -------------------------------------------------------------------------------- /application/screenshots/SETUP_unsafe.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/SETUP_unsafe.jpeg -------------------------------------------------------------------------------- /application/screenshots/SETUP_unverified.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/SETUP_unverified.jpg -------------------------------------------------------------------------------- /application/screenshots/appengine-signin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/appengine-signin.png -------------------------------------------------------------------------------- /application/screenshots/firestore-to-native-mode-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/firestore-to-native-mode-0.png -------------------------------------------------------------------------------- /application/screenshots/firestore-to-native-mode-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/firestore-to-native-mode-1.png -------------------------------------------------------------------------------- /application/screenshots/firestore-to-native-mode-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/screenshots/firestore-to-native-mode-2.png -------------------------------------------------------------------------------- /application/test_harness/SchedulerTest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/test_harness/SchedulerTest.py -------------------------------------------------------------------------------- /application/test_harness/check_gcsfs.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/test_harness/check_gcsfs.py -------------------------------------------------------------------------------- /application/test_harness/check_services.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/test_harness/check_services.py -------------------------------------------------------------------------------- /application/test_harness/job_monitor.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/test_harness/job_monitor.py -------------------------------------------------------------------------------- /application/test_harness/run_monitor.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/application/test_harness/run_monitor.py -------------------------------------------------------------------------------- /auth-appengine/.gcloudignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/.gcloudignore -------------------------------------------------------------------------------- /auth-appengine/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/README.md -------------------------------------------------------------------------------- /auth-appengine/app.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/app.yaml -------------------------------------------------------------------------------- /auth-appengine/classes/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/classes/__init__.py -------------------------------------------------------------------------------- /auth-appengine/classes/auth_helper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/classes/auth_helper.py -------------------------------------------------------------------------------- /auth-appengine/classes/decorators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/classes/decorators.py -------------------------------------------------------------------------------- /auth-appengine/classes/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/classes/exceptions.py -------------------------------------------------------------------------------- /auth-appengine/classes/firestore.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/classes/firestore.py -------------------------------------------------------------------------------- /auth-appengine/classes/gmail.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/classes/gmail.py -------------------------------------------------------------------------------- /auth-appengine/classes/oauth.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/classes/oauth.py -------------------------------------------------------------------------------- /auth-appengine/classes/report_type.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/classes/report_type.py -------------------------------------------------------------------------------- /auth-appengine/classes/scheduler.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/classes/scheduler.py -------------------------------------------------------------------------------- /auth-appengine/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/index.html -------------------------------------------------------------------------------- /auth-appengine/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/main.py -------------------------------------------------------------------------------- /auth-appengine/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/requirements.txt -------------------------------------------------------------------------------- /auth-appengine/screenshots/1_IAP-enable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/screenshots/1_IAP-enable.png -------------------------------------------------------------------------------- /auth-appengine/screenshots/2_IAP-configure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/screenshots/2_IAP-configure.png -------------------------------------------------------------------------------- /auth-appengine/screenshots/app-yaml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/screenshots/app-yaml.png -------------------------------------------------------------------------------- /auth-appengine/screenshots/credentials-edit_oauth_client_id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/screenshots/credentials-edit_oauth_client_id.png -------------------------------------------------------------------------------- /auth-appengine/static/css/main.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/static/css/main.css -------------------------------------------------------------------------------- /auth-appengine/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/static/img/favicon.ico -------------------------------------------------------------------------------- /auth-appengine/static/js/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/static/js/index.js -------------------------------------------------------------------------------- /auth-appengine/templates/authenticate.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/templates/authenticate.html -------------------------------------------------------------------------------- /auth-appengine/templates/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/report2bq/HEAD/auth-appengine/templates/index.html --------------------------------------------------------------------------------