Skip to content

Instantly share code, notes, and snippets.

@oshimamasara
Created January 21, 2020 02:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oshimamasara/7a3d4e7059eef90cb479f38bee32e898 to your computer and use it in GitHub Desktop.
Save oshimamasara/7a3d4e7059eef90cb479f38bee32e898 to your computer and use it in GitHub Desktop.
YouTube Analytics API How to.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "YouTube Analytics API How to.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyMhMzeBJOsa7DQ6fXnlEsUu",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/oshimamasara/7a3d4e7059eef90cb479f38bee32e898/youtube-analytics-api-how-to.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "o8yQnwqd3XAb",
"colab_type": "text"
},
"source": [
"> 参考ドキュメント: [Google 公式 doc](https://developers.google.com/youtube/analytics/reference/reports/query#examples_1)"
]
},
{
"cell_type": "code",
"metadata": {
"id": "feS5pnfM1Fgn",
"colab_type": "code",
"outputId": "a2153dba-560b-47bc-cda5-8b2fddc04036",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 256
}
},
"source": [
"!pip install --upgrade google-api-python-client\n",
"!pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Requirement already up-to-date: google-api-python-client in /usr/local/lib/python3.6/dist-packages (1.7.11)\n",
"Requirement already satisfied, skipping upgrade: google-auth-httplib2>=0.0.3 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client) (0.0.3)\n",
"Requirement already satisfied, skipping upgrade: httplib2<1dev,>=0.9.2 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client) (0.11.3)\n",
"Requirement already satisfied, skipping upgrade: six<2dev,>=1.6.1 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client) (1.12.0)\n",
"Requirement already satisfied, skipping upgrade: google-auth>=1.4.1 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client) (1.10.1)\n",
"Requirement already satisfied, skipping upgrade: uritemplate<4dev,>=3.0.0 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client) (3.0.1)\n",
"Requirement already satisfied, skipping upgrade: setuptools>=40.3.0 in /usr/local/lib/python3.6/dist-packages (from google-auth>=1.4.1->google-api-python-client) (42.0.2)\n",
"Requirement already satisfied, skipping upgrade: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.6/dist-packages (from google-auth>=1.4.1->google-api-python-client) (4.0.0)\n",
"Requirement already satisfied, skipping upgrade: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.6/dist-packages (from google-auth>=1.4.1->google-api-python-client) (0.2.7)\n",
"Requirement already satisfied, skipping upgrade: rsa<4.1,>=3.1.4 in /usr/local/lib/python3.6/dist-packages (from google-auth>=1.4.1->google-api-python-client) (4.0)\n",
"Requirement already satisfied, skipping upgrade: pyasn1<0.5.0,>=0.4.6 in /usr/local/lib/python3.6/dist-packages (from pyasn1-modules>=0.2.1->google-auth>=1.4.1->google-api-python-client) (0.4.8)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Ue749UG-4tc3",
"colab_type": "code",
"outputId": "7a866501-af8f-4837-a9a0-d5b3afd5f7c0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 52
}
},
"source": [
"!ls"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"client_secret_382784964069-0u3vvubopdb8npbqegfair2fovcncnd7.apps.googleusercontent.com.json\n",
"sample_data\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "NZmiR5021dg8",
"colab_type": "code",
"colab": {}
},
"source": [
"# 公開動画の日毎累計データを取得するコード\n",
"# dimensions='day'\n",
"\n",
"# -*- coding: utf-8 -*-\n",
"\n",
"import os\n",
"import google.oauth2.credentials\n",
"import google_auth_oauthlib.flow\n",
"from googleapiclient.discovery import build\n",
"from googleapiclient.errors import HttpError\n",
"from google_auth_oauthlib.flow import InstalledAppFlow\n",
"\n",
"SCOPES = ['https://www.googleapis.com/auth/yt-analytics.readonly']\n",
"\n",
"API_SERVICE_NAME = 'youtubeAnalytics'\n",
"API_VERSION = 'v2'\n",
"CLIENT_SECRETS_FILE = 'client_secret_382784964069-0u3vvubopdb8npbqegfair2fovcncnd7.apps.googleusercontent.com.json'\n",
"def get_service():\n",
" flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)\n",
" credentials = flow.run_console()\n",
" return build(API_SERVICE_NAME, API_VERSION, credentials = credentials)\n",
"\n",
"def execute_api_request(client_library_function, **kwargs):\n",
" response = client_library_function(\n",
" **kwargs\n",
" ).execute()\n",
"\n",
" print(\"--- response ---\")\n",
" print(response)\n",
" print(\"\\n--- type(response) ---\")\n",
" print(type(response))\n",
" print(\"\\n--- response.keys() ---\")\n",
" print(response.keys())\n",
"\n",
" rows = response[u'rows']\n",
" header = response[u'columnHeaders']\n",
" print(\"\\n--- rows ---\")\n",
" print(rows)\n",
" print(len(rows))\n",
" print(\"\\n--- header ---\")\n",
" print(header)\n",
" data1 = rows[0][0]\n",
" print(\"\\n--- 1日目 ---\")\n",
" print(\"1日目の日付: \" + data1 + \", 視聴時間: \" + str(rows[0][1]) + \", View: \" + str(rows[0][2]) + \", likes: \" + str(rows[0][3]) + \", お気に入り登録数: \" + str(rows[0][4]))\n",
"\n",
"if __name__ == '__main__':\n",
" os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'\n",
"\n",
" youtubeAnalytics = get_service()\n",
" execute_api_request(\n",
" youtubeAnalytics.reports().query,\n",
" ids='channel==MINE',\n",
" startDate='2019-01-01',\n",
" endDate='2019-12-31',\n",
" metrics='estimatedMinutesWatched,views,likes,subscribersGained',\n",
" dimensions='day',\n",
" sort='day'\n",
" )"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "dB8HR_hj52AQ",
"colab_type": "code",
"outputId": "0f916e63-d8a6-41a5-f5fa-d7cd1fa716e6",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 367
}
},
"source": [
"# 自分が公開してる動画のビデオ毎のデータを収集するコード\n",
"\n",
"def execute_api_request(client_library_function, **kwargs):\n",
" response = client_library_function(\n",
" **kwargs\n",
" ).execute()\n",
"\n",
" print(\"--- response ---\")\n",
" print(response)\n",
" print(\"\\n--- type(response) ---\")\n",
" print(type(response))\n",
" print(\"\\n--- response.keys() ---\")\n",
" print(response.keys())\n",
"\n",
" rows = response[u'rows']\n",
" header = response[u'columnHeaders']\n",
" print(\"\\n--- rows ---\")\n",
" print(rows)\n",
" print(\"\\n--- header ---\")\n",
" print(header)\n",
" data1 = rows[0][0]\n",
" print(\"\\n--- data1 ---\")\n",
" print(\"1つめのvideo: \" + data1 + \", 視聴時間: \" + str(rows[0][1]) + \", View: \" + str(rows[0][2]) + \", likes: \" + str(rows[0][3]) + \", お気に入り登録数: \" + str(rows[0][4]) + \", 失ったお気に入り登録数: \" + str(rows[0][5]) )\n",
"\n",
"if __name__ == '__main__':\n",
" os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'\n",
"\n",
" youtubeAnalytics = get_service()\n",
" \n",
" execute_api_request(\n",
" youtubeAnalytics.reports().query,\n",
" ids='channel==MINE',\n",
" maxResults = '5',\n",
" startDate='2019-01-01',\n",
" endDate='2019-12-31',\n",
" metrics='estimatedMinutesWatched,views,likes,subscribersGained,subscribersLost',\n",
" dimensions='video',\n",
" sort='-estimatedMinutesWatched'\n",
" )"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=382784964069-0u3vvubopdb8npbqegfair2fovcncnd7.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics.readonly&state=A3AsAz81S3da6lYGpAIposN9Be9adW&prompt=consent&access_type=offline\n",
"Enter the authorization code: 4/vgFRgz3hKtw8U6xQKcGZSoZoVUEVQ2pbvCTq7ckz6xaoRSG5WlAGgjQ\n",
"--- response ---\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 6931, 875, 5, 1, 0], ['te_Z1B_f2R0', 5201, 6452, 5, 0, 0], ['9gTkJa7esTc', 4644, 1832, 13, 8, 0], ['DQsWSoFC5Q4', 3298, 2258, 5, 1, 0], ['uvPIvDFaS_M', 2619, 1045, 12, 6, 0]]}\n",
"\n",
"--- type(response) ---\n",
"<class 'dict'>\n",
"\n",
"--- response.keys() ---\n",
"dict_keys(['kind', 'columnHeaders', 'rows'])\n",
"\n",
"--- rows ---\n",
"[['6s8rZdeGVi4', 6931, 875, 5, 1, 0], ['te_Z1B_f2R0', 5201, 6452, 5, 0, 0], ['9gTkJa7esTc', 4644, 1832, 13, 8, 0], ['DQsWSoFC5Q4', 3298, 2258, 5, 1, 0], ['uvPIvDFaS_M', 2619, 1045, 12, 6, 0]]\n",
"\n",
"--- header ---\n",
"[{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}]\n",
"\n",
"--- data1 ---\n",
"1つめのvideo: 6s8rZdeGVi4, 視聴時間: 6931, View: 875, likes: 5, お気に入り登録数: 1, 失ったお気に入り登録数: 0\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "0c2sFotP43Yh",
"colab_type": "code",
"outputId": "dc7fdd87-9c28-4cf0-d127-a95955e9bb8d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 165
}
},
"source": [
"response"
],
"execution_count": 0,
"outputs": [
{
"output_type": "error",
"ename": "NameError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-32-ab0153f39f33>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'response' is not defined"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "g38ixRQP-0lY",
"colab_type": "code",
"colab": {}
},
"source": [
"# 変数の外部利用 global\n",
"def execute_api_request(client_library_function, **kwargs):\n",
" global response\n",
" response = client_library_function(\n",
" **kwargs\n",
" ).execute()\n",
"\n",
" print(\"--- response ---\")\n",
" print(response)\n",
" print(\"\\n--- type(response) ---\")\n",
" print(type(response))\n",
" print(\"\\n--- response.keys() ---\")\n",
" print(response.keys())\n",
"\n",
" rows = response[u'rows']\n",
" header = response[u'columnHeaders']\n",
" print(\"\\n--- rows ---\")\n",
" print(rows)\n",
" print(\"\\n--- header ---\")\n",
" print(header)\n",
" data1 = rows[0][0]\n",
" print(\"\\n--- data1 ---\")\n",
" print(\"1つめのvideo: \" + data1 + \", 視聴時間: \" + str(rows[0][1]) + \", View: \" + str(rows[0][2]) + \", likes: \" + str(rows[0][3]) + \", お気に入り登録数: \" + str(rows[0][4]) + \", 失ったお気に入り登録数: \" + str(rows[0][5]) )\n",
"\n",
"if __name__ == '__main__':\n",
" os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'\n",
"\n",
" youtubeAnalytics = get_service()\n",
" \n",
" execute_api_request(\n",
" youtubeAnalytics.reports().query,\n",
" ids='channel==MINE',\n",
" maxResults = '5',\n",
" startDate='2019-01-01',\n",
" endDate='2019-12-31',\n",
" metrics='estimatedMinutesWatched,views,likes,subscribersGained,subscribersLost',\n",
" dimensions='video',\n",
" sort='-estimatedMinutesWatched'\n",
" )\n"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "NnThOeSJMFoV",
"colab_type": "code",
"outputId": "26e11ad2-a314-4397-892b-ae708c131ccc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 295
}
},
"source": [
"response"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'columnHeaders': [{'columnType': 'DIMENSION',\n",
" 'dataType': 'STRING',\n",
" 'name': 'video'},\n",
" {'columnType': 'METRIC',\n",
" 'dataType': 'INTEGER',\n",
" 'name': 'estimatedMinutesWatched'},\n",
" {'columnType': 'METRIC', 'dataType': 'INTEGER', 'name': 'views'},\n",
" {'columnType': 'METRIC', 'dataType': 'INTEGER', 'name': 'likes'},\n",
" {'columnType': 'METRIC', 'dataType': 'INTEGER', 'name': 'subscribersGained'},\n",
" {'columnType': 'METRIC', 'dataType': 'INTEGER', 'name': 'subscribersLost'}],\n",
" 'kind': 'youtubeAnalytics#resultTable',\n",
" 'rows': [['6s8rZdeGVi4', 6931, 875, 5, 1, 0],\n",
" ['te_Z1B_f2R0', 5201, 6452, 5, 0, 0],\n",
" ['9gTkJa7esTc', 4644, 1832, 13, 8, 0],\n",
" ['DQsWSoFC5Q4', 3298, 2258, 5, 1, 0],\n",
" ['uvPIvDFaS_M', 2619, 1045, 12, 6, 0]]}"
]
},
"metadata": {
"tags": []
},
"execution_count": 35
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "27PO5EOdMMCi",
"colab_type": "code",
"outputId": "fe2c3156-e5f5-45e5-8c27-fae42dc3b35e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 765
}
},
"source": [
"# 定期的に YouTube Analytics データを取得\n",
"# 変数の外部利用 global\n",
"\n",
"import time\n",
"\n",
"def execute_api_request(client_library_function, **kwargs):\n",
" global response\n",
" response = client_library_function(\n",
" **kwargs\n",
" ).execute()\n",
"\n",
"if __name__ == '__main__':\n",
" os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'\n",
"\n",
" youtubeAnalytics = get_service()\n",
" \n",
" while True:\n",
" try:\n",
" execute_api_request(\n",
" youtubeAnalytics.reports().query,\n",
" ids='channel==MINE',\n",
" maxResults = '5',\n",
" startDate='2020-01-01',\n",
" endDate='2020-01-31',\n",
" metrics='estimatedMinutesWatched,views,likes,subscribersGained,subscribersLost',\n",
" dimensions='video',\n",
" sort='-estimatedMinutesWatched'\n",
" )\n",
"\n",
" print(response)\n",
" print(\"YoTube Analytics APIデータ取得OK!\")\n",
" time.sleep(120)\n",
"\n",
" except:\n",
" print(\"APIデータ取得エラー\")"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=382784964069-0u3vvubopdb8npbqegfair2fovcncnd7.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics.readonly&state=VNd2cZnIh51e7tt9u6ht7vP3RF8Bj1&prompt=consent&access_type=offline\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"APIデータ取得エラー\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"APIデータ取得エラー\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"APIデータ取得エラー\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n",
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n",
"YoTube Analytics APIデータ取得OK!\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "NEvgrwWTOean",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment