きっかけは、milklove の二搭劇 Whale Store xoxo の YouTube 予告編の再生回数を記録したいと思ったからです。คุณวาฬร้านชำ (Whale Store xoxo) | GMMTV 2025 - YouTube
まず、直接使用できるオープンソースプロジェクトや API がないか調べました。そして、批量統計 YouTube 動画再生回数方法 - 杨哥の出海マーケティングノートという記事で、Google Sheets の Apps Script を使用して YouTube の再生回数を直接取得できることを知りました。
しかし、この記事のスクリプトは現在の再生回数を取得することに重点を置いており、定期的に取得するものではありませんでした。そこで、このスクリプトを基にいくつかの修正を加え、定期的に再生回数を取得し、時間と対応する再生回数の情報をシートに保存することにしました。
最終的な結果は以下の通りです。雑貨屋の再生回数記録 - Google Sheets
操作手順#
第一歩、シートの元のテンプレートは以下のようになります:
リンク | 動画 ID | 時間 | 再生回数 |
---|---|---|---|
https://www.youtube.com/watch?v=Eia_Sh_ZTyQ | =MID(A2, FIND("v=", A2) + 2, LEN(A2) - FIND("v=", A2) - 1) |
第一列に監視したい YouTube のリンクを記入し、動画 ID は数式で直接計算します。
第二歩、extensions - apps script をクリックして、スクリプト設定画面に移動します。
左側の services のプラスボタンをクリックして、YouTube Data API v3 を追加します。識別子とバージョンはそのままで大丈夫です。
第三歩、コードを Code.gs にコピーします。結果は以下の通りです:
function onOpenFunc() {
PropertiesService.getScriptProperties().setProperty("accessToken", ScriptApp.getOAuthToken());
}
function getVideoViews(videoid) {
var accessToken = PropertiesService.getScriptProperties().getProperty('accessToken');
// アクセストークンが存在するか確認
if (!accessToken) {
Logger.log('アクセストークンが見つかりません。');
return 'エラー: アクセストークンがありません';
}
try {
var videoStatsResponse = YouTube.Videos.list('statistics', {
'id': videoid,
'access_token': accessToken
});
// レスポンスに期待されるデータが含まれているか確認
if (videoStatsResponse.items && videoStatsResponse.items[0] && videoStatsResponse.items[0].statistics) {
return videoStatsResponse.items[0].statistics.viewCount;
} else {
Logger.log('動画ID: ' + videoid + ' の統計が見つかりませんでした。');
return 'エラー: 統計がありません';
}
} catch (error) {
Logger.log('動画ID ' + videoid + ' の統計取得中にエラーが発生しました: ' + error.toString());
return 'エラー: ' + error.toString();
}
}
function recordYouTubeViewCount() {
// アクティブなシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 2行目のIDを取得
var videoId = sheet.getRange(2, 2).getValue();
// 現在の時間を取得
var currentTime = new Date();
try {
// 再生回数を取得
var viewCount = getVideoViews(videoId);
// 現在のシートの最後の行を取得
var lastRow = sheet.getLastRow();
// 最後の行の後に新しい行を挿入し、時間と再生回数を記入
sheet.insertRowAfter(lastRow);
sheet.getRange(lastRow + 1, 3).setValue(currentTime); // 時間を設定
sheet.getRange(lastRow + 1, 4).setValue(viewCount); // 再生回数を設定
} catch (error) {
// エラーハンドリング
Logger.log('動画 ' + videoId + ' の処理中にエラーが発生しました: ' + error.toString());
// エラーが発生した場合、エラー情報を記録
var lastRow = sheet.getLastRow();
sheet.insertRowAfter(lastRow);
sheet.getRange(lastRow + 1, 3).setValue(currentTime); // 時間を設定
sheet.getRange(lastRow + 1, 4).setValue('エラー: ' + error.toString()); // エラー情報を設定
}
}
その後、正しく動作するか確認するために、recordYouTubeViewCount を選択し、run ボタンをクリックします。問題がなければ、シートに新しい行が追加されます。
第四歩、最後のステップとして、トリガーを設定して再生回数を定期的に取得し、シートに書き込むようにします。左側のサイドバーのトリガーメニューをクリックし、右下の add trigger をクリックします。
以下のように設定し、設定が完了したら save ボタンをクリックします。
クリック後、認証ポップアップが表示される場合があります。自分の Google アカウントを選択し、go to xxx project (unsave) をクリックし、allow をクリックして認証を行います。(ここではスクリーンショットはありませんが、概ね理解できると思います。)
これで全ての設定が完了しました。1 時間後に正常に動作するか確認してください。
参考と感謝#
このスクリプトは、批量統計 YouTube 動画再生回数方法 - 杨哥の出海マーケティングノートのスクリプトを基に改良したもので、詳細なチュートリアルとコードを提供してくれた作者に感謝します。
また、Google が提供する API にも感謝します。