①はじめに
好きなYoutuberのすべての動画を再生リストに入れて、流しっぱなしにして見ていました。
そのYoutuberは毎日更新をしているので毎日再生リストに追加するのがめんどくさかったので自動で追加できるプログラムを作成しました。
今回は、google gasで実装しました。
②環境
- Google App Script
- Youtube API v3
- Windows 10
③仕様
- 再生リストに毎日20:00~21:00にその日にアップロードされた動画を追加する
- 重複削除処理はなし(今後追加予定)
- 追加できなかった場合は、メールで通知が届く
④流れ
- Youtube API の認証を通す
- コード内の「⑤値の入れ替え」を行う
- コード実行後、「Gmail のすべてのメールの閲覧、作成、送信、完全な削除」の認証を通す
- トリガの設定
⑤値の入れ替え
[⑥コード]内に記載しているidやメールアドレスは自身のものに変えて実行する
-
[⑥コード]7行目の「'追加したいyoutuberのchannelIdを記載する'」は以下idを入れる
- 追加したいyoutuberの画面のurlに記載しているid
-
[⑥コード]31行目の「'追加したい再生リストのid'」は以下idを入れる
- youtube再生リスト画面のurlに記載しているid
-
[⑥コード]47行目の「'sample@example.com'」
- エラー通知を受け取るメールアドレスを入れる
⑥コード
sampleCode
/* youtube 再生リストに自動追加
* 最新動画1件のみ
*/
function addmovieplaylist() {
try{
const results = YouTube.Search.list('snippet', {
channelId: '追加したいyoutuberのchannelIdを記載する',
order: "date",
maxResults: 5
});
var today = new Date();
var todayStr = Utilities.formatDate(today, 'JST', 'yyyy-MM-dd');
// 取得した動画idを設定
for(let i = 0; i < results.items.length; i++){
var resvideodate = results.items[i].snippet.publishTime
var videodate = resvideodate.slice(0,10)
if(videodate == todayStr){
Logger.log('再生リストに追加するの動画→→' + results.items[i].snippet.title)
Logger.log('再生リストに追加するの動画id→→' + results.items[i].id.videoId)
var videoId = results.items[i].id.videoId
}
}
// 自分の再生リストを取得
const channel = YouTube.Channels.list(["snippet"], {
"mine": true
})["items"][0];
const playlists = YouTube.Playlists.list(["snippet"], {
"mine": true
});
for(let i = 0; i < playlists.items.length; i++){
if(playlists.items[i].id == '追加したい再生リストのid'){
var playlistId = playlists.items[i].id;
}
}
const requestData = {
"snippet": {
"playlistId": playlistId,
"resourceId": {
"kind": "youtube#video",
"videoId": videoId
}
}
};
//再生リストに追加する処理
const response = YouTube.PlaylistItems.insert(requestData, ["snippet"]);
}catch{
const address = 'sample@example.com'; // エラー通知を受け取るメールアドレス
const subject = '再生リストエラー通知'; // メールの件名
const body = '本日アップロードされた○○の動画が再生リストに追加できませんでした。';
GmailApp.sendEmail(address, subject, body);
}
}