起因是想要記錄一下 milklove 的二搭劇 Whale Store xoxo 在油管上的預告片的播放量的 คุณวาฬร้านชำ (Whale Store xoxo) | GMMTV 2025 - YouTube
於是先搜了一下有沒有可以直接使用的開源項目或者接口,然後在 批量統計 YouTube 視頻播放量方法 - 楊哥的出海營銷筆記 這篇文章中了解到了可以使用 google sheet 的 apps 腳本 直接獲取油管的播放量。
不過這篇文章中的腳本更多的獲取當前的播放量,而不是定時獲取,因此我在這個腳本的基礎上進行了一些修改,來實現定時獲取播放量,然後把時間和對應的播放量的信息存到 sheet 中。
最終的效果如圖所示。雜貨鋪播放量記錄 - Google 表格
操作教程#
第一步,在 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 這裡,跳轉到腳本配置界面。
點擊左側的 services 的加號,添加 YouTube Data API v3,標識符、版本直接默認就可以了。
第三步,把代碼複製到 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()); // 設置錯誤信息
}
}
然後如果要驗證是否正確,選擇 recordYouTubeViewCount,然後點擊 run 按鈕。不出意外的話會在 sheet 中新增一行記錄。
第四步,也是最後一步,我們要設置一下 trigger, 來實現定時地查詢播放量並且寫入到 sheet 中。點擊左邊側邊欄的 trigger 菜單,再點擊右下角的 add trigger.
設置如下,配置完成後點擊 save 按鈕。
點擊完之後,可能出現一個驗證彈窗,需要你選擇自己的 google 帳號,然後點擊 go to xxx project (unsave),點擊 allow 進行授權。(這裡沒有保留截圖,但或許大概應該能直接看懂?)
然後我們就完成了所有的配置,等待一小時後看是否運行正常即可。
參考和鳴謝#
這個腳本是在 批量統計 YouTube 視頻播放量方法 - 楊哥的出海營銷筆記 的腳本的基礎上改的,感謝作者提供了很詳細的教程和代碼。
同時也要感謝 google 提供的 api.