KazooTTT

KazooTTT

twitter
github
email
bilibili

使用 Google Sheet + API 定時獲取油管播放量

起因是想要記錄一下 milklove 的二搭劇 Whale Store xoxo 在油管上的預告片的播放量的 คุณวาฬร้านชำ (Whale Store xoxo) | GMMTV 2025 - YouTube

於是先搜了一下有沒有可以直接使用的開源項目或者接口,然後在 批量統計 YouTube 視頻播放量方法 - 楊哥的出海營銷筆記 這篇文章中了解到了可以使用 google sheet 的 apps 腳本 直接獲取油管的播放量。

不過這篇文章中的腳本更多的獲取當前的播放量,而不是定時獲取,因此我在這個腳本的基礎上進行了一些修改,來實現定時獲取播放量,然後把時間和對應的播放量的信息存到 sheet 中。

最終的效果如圖所示。雜貨鋪播放量記錄 - Google 表格

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

操作教程#

第一步,在 sheet 中的原始模板是這樣的:

鏈接視頻 id時間播放量
https://www.youtube.com/watch?v=Eia_Sh_ZTyQ=MID(A2, FIND("v=", A2) + 2, LEN(A2) - FIND("v=", A2) - 1)

在第一列寫上要監聽的油管的鏈接,然後視頻的 id 通過公式直接計算出來。

第二步,點擊 extentions - 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');
  
  // Check if the access token exists
  if (!accessToken) {
    Logger.log('No access token found.');
    return 'Error: No access token';
  }
  
  try {
    var videoStatsResponse = YouTube.Videos.list('statistics', {
      'id': videoid, 
      'access_token': accessToken
    });
    
    // Check if the response contains the expected data
    if (videoStatsResponse.items && videoStatsResponse.items[0] && videoStatsResponse.items[0].statistics) {
      return videoStatsResponse.items[0].statistics.viewCount;
    } else {
      Logger.log('No statistics found for video ID: ' + videoid);
      return 'Error: No statistics';
    }
  } catch (error) {
    Logger.log('Error fetching statistics for video ID ' + videoid + ': ' + error.toString());
    return 'Error: ' + error.toString();
  }
}

function recordYouTubeViewCount() {
  // 獲取活動表格
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // 獲取第二行的 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('Error processing video ' + videoId + ': ' + error.toString());
    
    // 如果發生錯誤,記錄錯誤信息
    var lastRow = sheet.getLastRow();
    sheet.insertRowAfter(lastRow);
    sheet.getRange(lastRow + 1, 3).setValue(currentTime); // 設置時間
    sheet.getRange(lastRow + 1, 4).setValue('Error: ' + error.toString()); // 設置錯誤信息
  }
}

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

然後如果要驗證是否正確,選擇 recordYouTubeViewCount,然後點擊 run 按鈕。不出意外的話會在 sheet 中新增一行記錄。

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

第四步,也是最後一步,我們要設置一下 trigger, 來實現定時地查詢播放量並且寫入到 sheet 中。點擊左邊側邊欄的 trigger 菜單,再點擊右下角的 add trigger.

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

設置如下,配置完成後點擊 save 按鈕。

image.png

點擊完之後,可能出現一個驗證彈窗,需要你選擇自己的 google 帳號,然後點擊 go to xxx project (unsave),點擊 allow 進行授權。(這裡沒有保留截圖,但或許大概應該能直接看懂?)

然後我們就完成了所有的配置,等待一小時後看是否運行正常即可。

參考和鳴謝#

這個腳本是在 批量統計 YouTube 視頻播放量方法 - 楊哥的出海營銷筆記 的腳本的基礎上改的,感謝作者提供了很詳細的教程和代碼。

同時也要感謝 google 提供的 api.

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。