• Home
  • WINDOWS
  • OFFICE
  • EXCEL
  • WORD
  • POWERPOINT
  • OUTLOOK
  • TEAMS
  • AZURE
What's Hot

「利用可能になったらすぐに最新の更新プログラムを入手する」はオンにすべき?

2023年6月3日

企業IT ウイングアーク1st、Excelデータを収集して分析精度を高める新機能 2023/05/30 16:00

2023年6月3日

企業IT ExcelでChatGPTを使う – ChatGPT for Excel活用術 第3回 ChatGPT for Excelの基本機能の使い方 2023/06/01 07:00 連載

2023年6月2日
Facebook Twitter Instagram
Facebook Twitter Instagram Vimeo
PC MEDIA
Subscribe Login
  • Home
  • WINDOWS
  • OFFICE
  • EXCEL
  • WORD
  • POWERPOINT
  • OUTLOOK
  • TEAMS
  • AZURE
PC MEDIA
ホーム » YouTube動画を検索してみよう【YouTube Data API】後編
EXCEL

YouTube動画を検索してみよう【YouTube Data API】後編

TanakaBy Tanaka2022年8月27日コメントはまだありません1 Min Read
Facebook Twitter Pinterest LinkedIn Tumblr WhatsApp VKontakte Email
Share
Facebook Twitter LinkedIn Pinterest Email
Google Ads
Ad 4
Ad 3

目次

  • 連載第11回の目的
  • ワークシートの準備
    • コントロールを配置する
    • キーワードと検索結果を収納する表
  • ライブラリ等を準備する
    • VBA-JSON
    • Selenium Type Library
  • スクリプトを書いていく
    • エンドポイントURLやAPIキーの定数を定義するスクリプト
    • APIにアクセスするスクリプト
    • キーワードから動画名とIDを取得するスクリプト

連載第11回の目的

連載第11回では、前回の続きとしてExcel VBAにおけるYouTube APIの活用について紹介します。前回で、APIの概要を紹介し、APIキーの取得やAPI呼び出しをテストしました。今回はワークシートを準備してスクリプトを作成し、サンプルを完成させます(図1)。

    図1:完成サンプル

    図1:完成サンプル

▼完成サンプルのExcelファイル
https://github.com/wateryinhare62/mynavi_excelvba_webservice

なお、本連載では動作確認をWindows 10 Pro(64bit)、Microsoft 365(Excel 16.0、VBA 7.1)で行っています。旧バージョンや単体のExcelで試す場合にはご注意ください。今回はWebブラウザも使用しますが、Google Chromeに限定しています。他のWebブラウザは考慮していませんのでご注意ください。

ワークシートの準備

APIが使えることを確認できたら、ワークシートを用意し、基本的なデザインを行っていきましょう。配置および書き込むものは、以下の通りです。

  • アプリケーションのタイトル(セルのテキスト)
  • 「キーワード検索する」ボタン(SearchCommandButton)
  • 「動画を再生する」ボタン(PlayCommandButton)
  • キーワードと検索結果を収納する表(セルのテキスト)

上記のテキストおよびコントロールを、図2を参考に書き込み、配置してください。具体的な手順は、第6回などを参考にしてください。

    図2:ワークシートが準備された状態

    図2:ワークシートが準備された状態

コントロールを配置する

2つのコントロール(コマンドボタン×2)をワークシート上部に配置して、プロパティを設定します。これらのプロパティの内容は、表1のとおりです。

表1:各コントロールに設定するプロパティ

コントロール プロパティ 値
「キーワード検索する」ボタン Name SearchCommandButton
Caption キーワード検索する
「動画を再生する」ボタン Name PlayCommandButton
Caption 動画を再生する

キーワードと検索結果を収納する表

表は、以下の構成とします。とりあえず、10個のキーワードを登録することにします。

  • 「No」(番号、プログラム上は意味はありません)
  • 「キーワード」(検索する動画のキーワード)
  • 「タイトル」(検索で取得した動画のタイトル)
  • 「ID」(検索で取得した動画のID)

ここで、ブックを保存します。ブック名は何でもよいですが、形式を「Excel マクロ有効ブック (*.xlsm)」にしてください。マクロを有効にしておかないと、VBAのスクリプトを実行できないからです。このあとも、適当なタイミングでブックを保存してください。

ライブラリ等を準備する

スクリプトを書き始める前に、必要なライブラリ等の準備をしておきます。

VBA-JSON

Data APIは、基本的に結果をJSONデータで返します。このようにVBAからJSONデータを使いますので、そのために必要なライブラリを準備します。第3回などと同様に、「VBA-JSON」というサードパーティのライブラリを使用します。第3回の記事を参照して、「Microsoft Scripting Runtime」への参照設定を有効にすることを含めて、VBA-JSONを準備してください。

Selenium Type Library

VBAから、第10回でインストールしたSelenium Basicを利用するために、タイプライブラリである「Selenium Type Library」への参照を有効にしておきます。参照設定の方法は上記の「Microsoft Scripting Runtime」と同様です。以下の画面を参考に、有効にしてください。

    図3:参照設定(Selenium Type Library)

[NOTE]オートメーションエラーが発生する場合
——————————————————————————–
Seleniumの呼び出しで、「オートメーションエラー」が発生することがあります。これは、.NET Framework 3.5がインストールされていないことが原因です。Windows 10では、.NET Framework 3.5が有効になっていないことがありますので、エラーが発生する場合には有効化してください。具体的には、スタートメニューから「設定」(歯車アイコン)を開き、[アプリ]から[プログラムと機能]をクリックします。ここから[Windowsの機能の有効化または無効化]をクリックして表示される画面で、「.NET Framework 3.5(.NET 2.0および3.0を含む)」にチェックを入れて[OK]をクリックします。これで.NET Framework 3.5が有効になります。
——————————————————————————–

スクリプトを書いていく

ここから、Visual Basic Editorを使って、以下の順番でスクリプトを書いていきます。左ペインの「Microsoft Excel Objects」の「Sheet1 (Sheet1)」をダブルクリックして開くファイルに、以下のスクリプトを記述していきます。

  • エンドポイントURLやAPIキーの定数を定義するスクリプト
  • APIにアクセスするスクリプト
  • キーワードから動画名とIDを取得するスクリプト
  • IDから動画を再生するスクリプト

エンドポイントURLやAPIキーの定数を定義するスクリプト

エンドポイントURLやAPIキーといった、アプリケーションの実行中に変化しない文字列は、定数として定義しておきます。なお、定数の定義とは直接の関係はないですが、安全のために冒頭でOption Explicit文によって未定義の変数を使えないようにしています(リスト1)。ApiKeyには、おのおの取得したAPIキーを設定してください。

[リスト1]エンドポイントURLやAPIキーの定数を定義

' 未定義の変数を使えないようにする
Option Explicit

' エンドポイントURLを定数で共有
Const EndPoint = "https://www.googleapis.com/youtube/v3/"
' APIキーを定数で共有
Const ApiKey = "AIzaS…"
' 作成するHTMLファイルのベース名
Const VideoFilenameBase = "video$$$.html"

APIにアクセスするスクリプト

続けて、APIにアクセスするスクリプトを書いていきます。拡張性を考慮して、APIへのアクセスは関数として独立させます。APIを呼び出すスクリプトは、KickWebServiceという関数にします。KickWebServiceは、引数にパス(APIの種類を表すエンドポイントの一部)とクエリパラメータを受け取って、結果としてのJSON文字列を返す関数です(リスト2)。

[リスト2]KickWebService関数

' APIを呼び出す(引数はAPIの種類とパラメータ、戻り値はJSON文字列)
Private Function KickWebService(ByVal Path As String, _
    ByVal Param As String)
    ' URLを作成する
    Dim Url As String
    Url = EndPoint & Path & Param & "&key=" & ApiKey    '(1)
    ' リクエストを送信する
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")   '(2)
    With http
        .Open "GET", Url, False    '(3)
        .send
        ' リクエスト結果を取得する
        KickWebService = .responseText  '(4)
    End With
End Function

変数Urlに、エンドポイント、パス、クエリパラメータ、そしてAPIキーをセットします(1)。HTTPアクセスに必要なMSXML2.XMLHTTPモジュールのオブジェクトを作成後(2)、HTTPメソッドとURLを指定してOpenメソッドを呼び出し、必要なリクエストパラメータを設定した後、sendメソッドで実際に呼び出します(3)。呼び出した結果はResponseTextプロパティで取得できます(4)。これが空なら何らかのエラーが発生していますが、これをそのまま関数の戻り値として返します。

キーワードから動画名とIDを取得するスクリプト

次に、キーワードから動画名とIDを取得するスクリプトを書いていきましょう。このスクリプトは、「キーワード検索する」ボタンをクリックした際に呼び出されるイベントハンドラとして記述します。コンボボックスにイベントハンドラを追加した要領で、イベントハンドラSearchCommandButton_Clickを作成してください(リスト3)。以下のような流れで、キーワードを検索して結果をセルに書き込んでいます。

①アクティブなセルからキーワードを取り出して空でないか判定する
③キーワードを指定してAPIを呼び出す
③結果がJSONか判定する
④JSONをディクショナリに変換する
⑤ディクショナリから必要な情報を取り出してセルに書き込む

[リスト3]キーワードから動画名とIDを取得するスクリプト

この記事は
Members+会員限定記事です。

ログイン/会員登録する

Google Ads
Ad 1
API後編 Data YouTube動画を検索してみようYouTube
Share. Facebook Twitter Pinterest LinkedIn Tumblr WhatsApp Email
Previous ArticleWSLで使える、マウスポインターの行方を「目」が追うアプリ
Next Article 「スタートアップアプリの通知」を有効にする
Tanaka
  • Website

Related Posts

企業IT ウイングアーク1st、Excelデータを収集して分析精度を高める新機能 2023/05/30 16:00

2023年6月3日

企業IT ExcelでChatGPTを使う – ChatGPT for Excel活用術 第3回 ChatGPT for Excelの基本機能の使い方 2023/06/01 07:00 連載

2023年6月2日

企業IT 定時で上がろう! Excel関数の底力 第28回 ローンの返済額や返済期間をExcelでシミュレーション 2023/05/29 11:00 連載

2023年5月30日

パソコン 窓辺の小石 第115回 工学者の食卓 22時間前 連載

2023年5月27日

Leave A Reply Cancel Reply

人気記事

「利用可能になったらすぐに最新の更新プログラムを入手する」はオンにすべき?

2023年6月3日

企業IT ウイングアーク1st、Excelデータを収集して分析精度を高める新機能 2023/05/30 16:00

2023年6月3日

企業IT ExcelでChatGPTを使う – ChatGPT for Excel活用術 第3回 ChatGPT for Excelの基本機能の使い方 2023/06/01 07:00 連載

2023年6月2日

企業IT Microsoft Teamsで変わる教育現場 第2回 Teamsは単なるビデオ会議システムではない(後編) 39分前 連載

2023年5月31日

企業IT 定時で上がろう! Excel関数の底力 第28回 ローンの返済額や返済期間をExcelでシミュレーション 2023/05/29 11:00 連載

2023年5月30日

「スマートフォン連携」でiPhoneとPCをペアリングする

2023年5月27日

パソコン 窓辺の小石 第115回 工学者の食卓 22時間前 連載

2023年5月27日

コンシューマー向け「Microsoft 365」がついに値上げ – 阿久津良和のWindows Weekly Report

2023年5月22日

企業IT 定時で上がろう! Excel関数の底力 第27回 「空白セル」を0(ゼロ)と表示しない5つのテクニック 2時間前 連載

2023年5月22日

使わないPowerToysのユーティリティーを無効にする

2023年5月20日
About Us
About Us
Our Picks
Facebook Twitter Instagram Pinterest
  • Home
  • WINDOWS
  • OFFICE
  • EXCEL
  • WORD
  • POWERPOINT
  • OUTLOOK
  • TEAMS
  • AZURE
Copyright © PC-MEDIA.JP All rights reserved.

Type above and press Enter to search. Press Esc to cancel.

Sign In or Register

Welcome Back!

Login to your account below.

Lost password?