![見出し画像](https://assets.st-note.com/production/uploads/images/60487110/rectangle_large_type_2_5f4503188196a50b90ff7837cf3e3bff.jpg?width=1200)
【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;
}
■スプレッドシートにサービスを追加する
①サービスの + をクリック
②「YouTube Data」をクリック後、追加をクリック
③サービスの下に「YouTube」が表示
■スプレッドシートを準備
下記のように準備する
・視聴回数
動画タイトル、動画IDを入力
・日ごとの視聴回数
空欄でOK
■結果
なんかうまくいきませんでした。右側の数値は視聴回数よりも多く、4件の動画に対して、5件の数値が出ているので、コードの修正が必要なようですね!なんとなくイメージがついたので、次に活かします!ありがとうございます!それでは!
▼関連記事
この記事が気に入ったらサポートをしてみませんか?