【GAS】YouTubeの動画情報をスプレッドシートへ転記する

Google Apps Script

どーも!marusukeです!

YouTube Data APIを使用して、指定したYouTubeチャンネルの人気動画情報(動画名、URL、サムネイルURLなど)を取得し、それをGoogleスプレッドシートに転記するGASコードを紹介します!

必要な準備

YouTube Data APIの有効化

  1. Google Cloud Consoleにアクセスして、新しいプロジェクトを作成します
  2. YouTube Data APIを有効化します
  3. APIキーを作成してコピーします

詳しくは以下の記事をご覧ください

スプレッドシートの準備

スプレッドシートを作成し、必要に応じてシート名を指定します(今回は YouTube Videosと指定しました)

以下のような列を用意します

A列: 動画名

B列: 動画URL

C列: サムネイルURL

D列: 視聴回数

スクリプトエディタのコードの貼り付け

  1. コードをスクリプトエディタに貼り付けて保存します
  2. コード内の”YOUR_API_KEY”と”YOUR_CHANNEL_ID”を書き換えます

スクリプトコード

function getPopularVideos() {
  const apiKey = "YOUR_API_KEY"; // ここにYouTube Data APIキーを入力
  const channelId = "YOUR_CHANNEL_ID"; // ここに取得したいチャンネルIDを入力
  const maxResults = 10; // 取得する動画の数

  const url = `https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=${channelId}&maxResults=${maxResults}&order=viewCount&type=video&key=${apiKey}`;
  
  // APIリクエストを実行
  const response = UrlFetchApp.fetch(url);
  const data = JSON.parse(response.getContentText());
  
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("YouTube Videos"); // シート名を指定
  sheet.clear(); // 既存のデータをクリア
  sheet.appendRow(["動画名", "動画URL", "サムネイルURL", "視聴回数"]); // ヘッダー行を追加

  const videoDetails = [];

  // 動画データを処理
  data.items.forEach((item) => {
    const videoId = item.id.videoId;
    const videoTitle = item.snippet.title;
    const videoUrl = `https://www.youtube.com/watch?v=${videoId}`;
    const thumbnailUrl = item.snippet.thumbnails.high.url;

    // 動画の詳細を取得
    const videoDetailsUrl = `https://www.googleapis.com/youtube/v3/videos?part=statistics&id=${videoId}&key=${apiKey}`;
    const videoDetailsResponse = UrlFetchApp.fetch(videoDetailsUrl);
    const videoDetailsData = JSON.parse(videoDetailsResponse.getContentText());
    const viewCount = videoDetailsData.items[0].statistics.viewCount;

    // データを配列に追加
    videoDetails.push([videoTitle, videoUrl, thumbnailUrl, viewCount]);
  });

  // シートにデータを書き込む
  sheet.getRange(2, 1, videoDetails.length, 4).setValues(videoDetails);
}

詳細な説明

  1. YouTube Data API リクエスト:
    • https://www.googleapis.com/youtube/v3/search を使って、指定チャンネルの人気動画を取得します
    • パラメータとして、channelId(チャンネルID)、order=viewCount(視聴回数で並び替え)、type=video(動画のみ)を指定しています
  2. 動画情報の取得:
    • 動画名、動画URL、サムネイルURLを取得します
    • さらに、https://www.googleapis.com/youtube/v3/videos を使って、動画の視聴回数の多い順で(viewCount)を取得します
  3. スプレッドシートへの転記:
    • ヘッダー行を書き込んだ後、取得した動画データを2行目以降に書き込みます
  4. カスタマイズポイント:
    • maxResults を変更すると、取得する動画数を増やせます(最大50)
    • スプレッドシート名(YouTube Videos)は任意に変更可能です

実行手順

  1. スプレッドシートを作成し、シート名を指定します(今回はYouTube Videosに変更しました)
  2. スクリプトエディタで上記コードを貼り付け、getPopularVideos 関数を実行します
  3. 最初の実行時にスクリプトの権限を許可します
  4. 実行後、スプレッドシートに動画情報が記載されます

注意点

  • APIキーの制限: YouTube Data APIには1日のリクエスト制限があるため、必要に応じて制限に注意してください
  • チャンネルID: YouTubeチャンネルのURLからIDを取得できます(例: https://www.youtube.com/channel/UCxxxxUCxxxx 部分)
  • 結果の並び順: デフォルトでは視聴回数の多い順です。別の基準で取得したい場合は order パラメータを変更してください(例: order=date で最新順)

必要に応じてコードをカスタマイズしてください!

あくまでも個人利用でお願いします。そしてこのコードを使用しても責任は負いかねますのでご了承くださいm(_ _)m

以上です!

ここまで読んでいただきありがとうございます!

その他にも、youtube動画からの文字起こし機能なども実装が可能です!

お気軽にご連絡ください!

コメント

タイトルとURLをコピーしました