質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2878閲覧

Youtube APIとajaxを使用し、チャンネルの最新動画を所得するjsを作るも失敗してしまう

GoMaSio

総合スコア10

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/01/08 15:55

▽参考URL
https://qiita.com/norizou4/items/04142dec0cf088887366

掲題の通り、Youtubeにて特定のチャンネルの最新動画を表示するようなサイトを作りたく、
参考URLに載っているコードを使用させていただくも、思うようにいかず困っています。
解決法があれば是非お教え願いたく質問させていただきます。ご教授よろしくお願い致します。

html

1<!doctype html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>index</title> 6<link rel="stylesheet" href="css/reset.css"> 7<link rel="stylesheet" href="css/style.css"> 8<script src="js/jquery-3.4.1.min.js"></script> 9<script src="js/script.js"></script> 10</head> 11<body> 12 <div id="yt-list"></div> 13</body> 14</html>

js

1 function ajaxDataYoutube(){ 2 return $.ajax({ 3 type: 'GET', 4 url: 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=3&playlistId=[チャンネルID]&key=[アクセスキー]', 5 dataType: 'json', 6 error: function() { 7 //error func 8 $('#yt-list').append('<li>Youtubeのデータが取得できませんでした。</li>'); 9 } 10 }) 11 } 12 ajaxDataYoutube().done(function(jsondataYt){ 13 var ytID = jsondataYt.items[0].snippet.resourceId.videoId 14 var ytTitle = jsondataYt.items[0].snippet.title 15 var YtHtml = '<iframe width="369" height="207" src="https://www.youtube.com/embed/'+ ytID +'?controls=0&amp;showinfo=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><h4>'+ ytTitle +'</h4>' 16 $('#yt-list').append(YtHtml); 17 });

アクセスキーについては[https://qiita.com/chieeeeno/items/ba0d2fb0a45db786746f]を
参考に所得しています。
またエラーには以下表記されていました。

jquery-3.4.1.min.js:2 GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=3&playlistId=[チャンネルID]&key=[アクセスキー] 404

申し訳ございませんが、よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GoMaSio

2020/01/09 15:07

{ "error": { "errors": [ { "domain": "youtube.playlistItem", "reason": "playlistNotFound", "message": "The playlist identified with the requests \u003ccode\u003eplaylistId\u003c/code\u003e parameter cannot be found.", "locationType": "parameter", "location": "playlistId" } ], "code": 404, "message": "The playlist identified with the requests \u003ccode\u003eplaylistId\u003c/code\u003e parameter cannot be found." } } との記載がありました。 よろしくお願いします。
guest

回答1

0

ベストアンサー

元の記事の通り私も作ってみましたが動きませんでした。
使用されているAPIであるplaylistItemsはあくまでプレイリストIDを元に動画一覧を取得するものであってチャンネルIDでは指定できないのではないかと思います。

提案

使用するAPIをsearchに変更してみたらどうでしょうか
こちらであればチャンネルIDの指定と最新順にとってくる指定が可能です
API DOCS

function ajaxDataYoutube() { return $.ajax({ type: 'GET', url: 'https://www.googleapis.com/youtube/v3/search', data: { part: "snippet", maxResults: "3", channelId: "[CHANNELID]", key: "[APIKEY]", //最新順に取得する order: "date", //ビデオのみ type: "video" }, dataType: 'json', error: function() { //error func $('#yt-list').append('<li>Youtubeのデータが取得できませんでした。</li>'); } }) } ajaxDataYoutube().done(function(jsondataYt) { var ytID = jsondataYt.items[0].id.videoId var ytTitle = jsondataYt.items[0].snippet.title var YtHtml = '<iframe width="369" height="207" src="https://www.youtube.com/embed/' + ytID + '?controls=0&amp;showinfo=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><h4>' + ytTitle + '</h4>' $('#yt-list').append(YtHtml); });

投稿2020/01/09 11:42

編集2020/01/09 11:47
CaptainRTA

総合スコア136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GoMaSio

2020/01/12 15:13

回答ありがとうございます! 上記コードを実行してみたところ、無事表示されました! 困っていたのでとても助かりました、ありがとうございます! 余談なのですが、上記コードでは動画が1つだけ表示されているので3つ表示したいのですが 可能でしょうか?もしお暇であれば回答いただけると嬉しいです・・・!
CaptainRTA

2020/01/14 10:32

jsondataYt.itemsをforかeachで回してあげれば複数表示できます jsondataYtがAPIからのレスポンスなのでChromeのdevtoolかなんかで変数の中身を見てみればわかると思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問