前提
スプレッドシートで複数人のYouTubeアカウントの登録者数などをリアルタイムで反映させたくて、ネットで見つけたコードを実際に使ってみたのですが、数年前の記事だったからかどうしてもエラーをはいてしまいます。
実現したいこと
・スプレッドシートの任意のシートにYouTubeアカウントの登録者数、チャンネル名、更新した日付を表示させる
発生している問題・エラーメッセージ
TypeError: Cannot read property '0' of undefined
該当のソースコード
ソースコード
function getSubscriberCount() {
//APIキー
var key = "ご自分のAPIキーを入力してください";
//反映させるシート 月ごとにシートを変えたい場合などに変更してください
var sheetName = "シート1"
var ss = SpreadsheetApp.getActiveSpreadsheet()
var srcSheet = ss.getSheetByName(sheetName);
var rowTitle = 1;
var rowURL = 2;
var rowEnd = srcSheet.getDataRange().getLastRow();
var rowToday = rowEnd + 1;
var colDate = 1;
var colStart = 2;
var colEnd = srcSheet.getDataRange().getLastColumn();
var formatDate = Utilities.formatDate(new Date(),"JST","yy/MM/dd");
srcSheet.getRange(rowToday,1).setValue(formatDate);
for (i=colStart; i<=colEnd; i++) {
var channelURL = srcSheet.getRange(rowURL,i).getValue();
var channelID = channelURL.slice(32);
//登録者数を取得
var dataURL = "https://www.googleapis.com/youtube/v3/channels?part=statistics&id=" + channelID +"&key=" + key;
var response = UrlFetchApp.fetch(dataURL)
var subscribe = JSON.parse(response.getContentText()).items[0].statistics.subscriberCount;
//チャンネルタイトルを取得
var dataURL = "https://www.googleapis.com/youtube/v3/channels?part=snippet&id=" + channelID +"&key=" + key ;
var response = UrlFetchApp.fetch(dataURL)
var channnelTitle = JSON.parse(response.getContentText()).items[0].snippet.title;
//登録者数をシートに挿入
srcSheet.getRange(rowToday,i).setValue(subscribe);
//チャンネルタイトルをシートに挿入
srcSheet.getRange(rowTitle,i).setValue(channnelTitle);
}
};
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [
{
name : "Youtubeチャンネル登録者数取得",
functionName : "getSubscriberCount"
}
];
sheet.addMenu("スクリプト実行", entries);
};
試したこと
TypeError: Cannot read property '0' of undefined
getSubscriberCount @ コード.gs:31
と表示されていたので、その部分を消してみたりしました。
その後もエラーの表示される部分をとりあえず消去してエラーはでなくなったものの、日付以外も何も出ないまま完了してしまいました。
補足情報(FW/ツールのバージョンなど)
https://note.com/nakashio_note/n/n28c1979224a1
参考にしたのはこの記事で、2019年のものなので色々変わっているのかもしれないと思いましたが、何をどう変更すればよいのかわからず困っております。
回答1件
あなたの回答
tips
プレビュー