KazooTTT

KazooTTT

twitter
github
email
bilibili

Googleシート + APIを使用してYouTubeの再生回数を定期的に取得する

きっかけは、milklove の二搭劇 Whale Store xoxo の YouTube 予告編の再生回数を記録したいと思ったからです。คุณวาฬร้านชำ (Whale Store xoxo) | GMMTV 2025 - YouTube

まず、直接使用できるオープンソースプロジェクトや API がないか調べました。そして、批量統計 YouTube 動画再生回数方法 - 杨哥の出海マーケティングノートという記事で、Google Sheets の Apps Script を使用して YouTube の再生回数を直接取得できることを知りました。

しかし、この記事のスクリプトは現在の再生回数を取得することに重点を置いており、定期的に取得するものではありませんでした。そこで、このスクリプトを基にいくつかの修正を加え、定期的に再生回数を取得し、時間と対応する再生回数の情報をシートに保存することにしました。

最終的な結果は以下の通りです。雑貨屋の再生回数記録 - Google Sheets

CleanShot 2024-12-15 at 21.38.06@2x.png

操作手順#

第一歩、シートの元のテンプレートは以下のようになります:

リンク動画 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 をクリックして、スクリプト設定画面に移動します。

CleanShot 2024-12-15 at 21.40.14@2x.png

左側の services のプラスボタンをクリックして、YouTube Data API v3 を追加します。識別子とバージョンはそのままで大丈夫です。

CleanShot 2024-12-15 at 21.44.17@2x.png

第三歩、コードを 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()); // エラー情報を設定
  }
}

CleanShot 2024-12-15 at 21.41.33@2x.png

その後、正しく動作するか確認するために、recordYouTubeViewCount を選択し、run ボタンをクリックします。問題がなければ、シートに新しい行が追加されます。

CleanShot 2024-12-15 at 21.42.08@2x.png

第四歩、最後のステップとして、トリガーを設定して再生回数を定期的に取得し、シートに書き込むようにします。左側のサイドバーのトリガーメニューをクリックし、右下の add trigger をクリックします。

CleanShot 2024-12-15 at 21.47.04@2x.png

以下のように設定し、設定が完了したら save ボタンをクリックします。

image.png

クリック後、認証ポップアップが表示される場合があります。自分の Google アカウントを選択し、go to xxx project (unsave) をクリックし、allow をクリックして認証を行います。(ここではスクリーンショットはありませんが、概ね理解できると思います。)

これで全ての設定が完了しました。1 時間後に正常に動作するか確認してください。

参考と感謝#

このスクリプトは、批量統計 YouTube 動画再生回数方法 - 杨哥の出海マーケティングノートのスクリプトを基に改良したもので、詳細なチュートリアルとコードを提供してくれた作者に感謝します。

また、Google が提供する API にも感謝します。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。