2023年1月15日日曜日

GAS(Google Apps Script)でYouTubeのデータ取得

こんばんは。ざわです。

今回はGAS(Google Apps Script)を使って YouTube のデータ取得をしてみようと思います。


作業の流れ

  1. GASのプロジェクト作成
  2. プロジェクトにYouTube Data API のサービス追加
  3. YouTube Data API を利用して個別動画の情報を取得

GASのプロジェクト作成

 GASを使うのは今回が初めてなので、プロジェクトの作成方法から書いていこうと思います。
 YouTubeから取得したデータは最終的にGoogleスプレッドシートに表示しますので、
 GoogleスプレッドシートにGASを紐づけて使用する方法(コンテナバインド型)で作成していきます。

 1.Chromeで自身のGoogleアカウントでログインし、Googleドライブを開く。


 2.マイドライブで右クリックし、[Googleスプレッドシート]>[空白のスプレッドシート]を選択。




 3.スプレッドシートで[拡張機能]>[Apps Script]を選択し、GASの画面を表示する。





プロジェクトにYouTube Data API のサービス追加

 1.サービスの「+」ボタンをクリックし、「YouTube Data API v3」を選択してサービスを追加する。



YouTube Data API を利用して個別動画の情報を取得

 ・今回は弊社の AIMEKチャンネルの「特急「しまかぜ」個室で行く伊勢志摩【社員旅行2022】」の動画情報を取得してみます。
 ・個別動画の情報を取得するので Videos リソースを使用します。
 ・取得する情報は以下とします。取得情報のプロパティはAPIリファレンスを参考に。
   ・タイトル
   ・再生回数
   ・いいね数
   ・コメント数
   ・投稿日時
   ・概要

function myFunction() {
  // 動画のURL
  const url = "https://www.youtube.com/watch?v=UdNCHGaWcb4"

  const sheet = SpreadsheetApp.getActiveSheet();
 
  // スプレッドシートにヘッダ行をセット
  sheet.getRange(1, 1).setValue("タイトル");
  sheet.getRange(1, 2).setValue("再生回数");
  sheet.getRange(1, 3).setValue("いいね数");
  sheet.getRange(1, 4).setValue("コメント数");
  sheet.getRange(1, 5).setValue("投稿日時");
  sheet.getRange(1, 6).setValue("概要");

  // 情報取得
  const {
    title,
    publishedAt,
    description,
    viewCount,
    likeCount,
    commentCount
  } = getVideoData(url)

  // 取得値をスプレッドシートに出力
  sheet.getRange(2, 1).setValue(title);
  sheet.getRange(2, 2).setValue(viewCount);
  sheet.getRange(2, 3).setValue(likeCount);
  sheet.getRange(2, 4).setValue(commentCount);
  sheet.getRange(2, 5).setValue(publishedAt);
  sheet.getRange(2, 6).setValue(description);
}

function getVideoData(url) {
// URLからビデオIDを取得
const urlArray = url.split('?v=')
const videoId = urlArray[urlArray.length - 1]

// YouTube Data APIにて情報を取得
const results = YouTube.Videos.list('snippet,statistics', { id: videoId });
const { items } = results
const { statistics, snippet } = items[0]
const { title, publishedAt, description } = snippet
const { viewCount, likeCount, commentCount } = statistics

return { title, publishedAt, description, viewCount, likeCount, commentCount }
}

 上記を実行した結果のスプレッドシートがこちらになります。




今回は1つの動画の情報だけを取得しましたが、
次はチャンネル内の複数の動画の一覧を取得をしてみたいと思います。
それではまた。

0 件のコメント:

コメントを投稿