どーも!marusukeです!
YouTube Data APIを使用して、指定したYouTubeチャンネルの人気動画情報(動画名、URL、サムネイルURLなど)を取得し、それをGoogleスプレッドシートに転記するGASコードを紹介します!
必要な準備
YouTube Data APIの有効化
- Google Cloud Consoleにアクセスして、新しいプロジェクトを作成します
- YouTube Data APIを有効化します
- APIキーを作成してコピーします
詳しくは以下の記事をご覧ください
スプレッドシートの準備
スプレッドシートを作成し、必要に応じてシート名を指定します(今回は YouTube Videosと指定しました)
以下のような列を用意します
A列: 動画名
B列: 動画URL
C列: サムネイルURL
D列: 視聴回数
スクリプトエディタのコードの貼り付け
- コードをスクリプトエディタに貼り付けて保存します
- コード内の”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);
}
詳細な説明
- YouTube Data API リクエスト:
https://www.googleapis.com/youtube/v3/search
を使って、指定チャンネルの人気動画を取得します- パラメータとして、
channelId
(チャンネルID)、order=viewCount
(視聴回数で並び替え)、type=video
(動画のみ)を指定しています
- 動画情報の取得:
- 動画名、動画URL、サムネイルURLを取得します
- さらに、
https://www.googleapis.com/youtube/v3/videos
を使って、動画の視聴回数の多い順で(viewCount
)を取得します
- スプレッドシートへの転記:
- ヘッダー行を書き込んだ後、取得した動画データを2行目以降に書き込みます
- カスタマイズポイント:
maxResults
を変更すると、取得する動画数を増やせます(最大50)- スプレッドシート名(
YouTube Videos
)は任意に変更可能です
実行手順
- スプレッドシートを作成し、シート名を指定します(今回は
YouTube Videos
に変更しました) - スクリプトエディタで上記コードを貼り付け、
getPopularVideos
関数を実行します - 最初の実行時にスクリプトの権限を許可します
- 実行後、スプレッドシートに動画情報が記載されます
注意点
- APIキーの制限: YouTube Data APIには1日のリクエスト制限があるため、必要に応じて制限に注意してください
- チャンネルID: YouTubeチャンネルのURLからIDを取得できます(例:
https://www.youtube.com/channel/UCxxxx
のUCxxxx
部分) - 結果の並び順: デフォルトでは視聴回数の多い順です。別の基準で取得したい場合は
order
パラメータを変更してください(例:order=date
で最新順)
必要に応じてコードをカスタマイズしてください!
あくまでも個人利用でお願いします。そしてこのコードを使用しても責任は負いかねますのでご了承くださいm(_ _)m
以上です!
ここまで読んでいただきありがとうございます!
その他にも、youtube動画からの文字起こし機能なども実装が可能です!
お気軽にご連絡ください!
コメント