見出し画像

【GAS】YouTubeの視聴回数をスプレッドシートに取得しようとしたら出来なかった

■参考記事

YouTubeの視聴回数をGAS(Google Apps Script)から取得したい!
下記記事を参考にさせていただきました。
https://www.randpy.tokyo/entry/youtube_slack_gas

■スクリプト

参考記事をお手本にSlackの部分は不要なので、コメントアウト or 削除してみました。

// @ts-nocheck
var TOAL_COUNT_SHEET_NEME = "視聴回数"
var EACH_DAY_COUNT_SHEET_NEME = "日ごとの視聴回数"
var HEADER_ROW = 1
var VIDEO_NAME_COLUMN = 1
var VIDEO_ID_COLUMN = 2
// var SLACK_URL = "https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXX"
var CHANNEL_NAME = "#test"
function updateSheets(){
 var today = new Date();
 updateTotalSheet(today);
 updateEachDaySheet(today);
 // postSlack();
}
function updateTotalSheet(today){
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(TOAL_COUNT_SHEET_NEME);
 setDateToSheet(sheet, sheet.getLastColumn(), today);  
 for (var i = HEADER_ROW + 1; i <= sheet.getLastRow(); i = i + 1){
   var videoId = sheet.getRange(i, VIDEO_ID_COLUMN).getValue();
   var viewCountInfo = getViewCount(videoId);    
   sheet.getRange(i, sheet.getLastColumn()).setValue(viewCountInfo);
 }
}
function updateEachDaySheet(today){
 var sheetForCauculate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(TOAL_COUNT_SHEET_NEME);
 var sheetForEachDay = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(EACH_DAY_COUNT_SHEET_NEME);
 sheetForEachDay.getRange(1, 1, sheetForCauculate.getLastRow(), 2).setValues(sheetForCauculate.getRange(1, 1, sheetForCauculate.getLastRow(), 2).getValues());
 
 setDateLastDay(sheetForEachDay, today);  
 var sheetForCauculateLastCol = sheetForCauculate.getLastColumn();
 var sheetForEachDayLastCol = sheetForEachDay.getLastColumn();
 for (var i = HEADER_ROW + 1; i <= sheetForEachDay.getLastRow(); i = i + 1){
   var tmp = sheetForCauculate.getRange(i, sheetForCauculateLastCol - 1).getValue();
   if (isNaN(tmp) || tmp == ""){
     console.log(tmp);
     continue;
   }
   sheetForEachDay.getRange(i, sheetForEachDayLastCol).setValue(
     sheetForCauculate.getRange(i, sheetForCauculateLastCol).getValue() - tmp);
 }
}
function setDateToSheet(sheet, today){
 sheet.getRange(HEADER_ROW, sheet.getLastColumn() + 1).setValue(today);
}
function setDateLastDay(sheet, today){
 today.setDate(today.getDate() - 1);
 sheet.getRange(HEADER_ROW, sheet.getLastColumn() + 1).setValue(today);
}
function getViewCount(video) {
 var videoId = video;
 var videoInfo = {
       id: videoId,
     };
 var response = YouTube.Videos.list('statistics',videoInfo);  
 var statisticsInfo = response.items[0].statistics;
 
 return statisticsInfo.viewCount;
}

■スプレッドシートにサービスを追加する

①サービスの + をクリック

129_GAS_API追加

②「YouTube Data」をクリック後、追加をクリック

129_GAS_youtubeDATAAPI追加

③サービスの下に「YouTube」が表示

129_GAS_youtubeDATAAPI追加_追加後


■スプレッドシートを準備

下記のように準備する

・視聴回数
動画タイトル、動画IDを入力

129_GAS_API実行前

・日ごとの視聴回数
空欄でOK

■結果

129_GAS_API実行結果

なんかうまくいきませんでした。右側の数値は視聴回数よりも多く、4件の動画に対して、5件の数値が出ているので、コードの修正が必要なようですね!なんとなくイメージがついたので、次に活かします!ありがとうございます!それでは!

▼関連記事



この記事が気に入ったらサポートをしてみませんか?