実現したいこと
プログラミング初学者です。
youtube apiを利用して、YouTubeの検索ワードから関連動画情報をスプレッドシートに出力したいです。
理解が乏しいため、ネットからコードをコピペして実行してみたのですが、下記のようなエラーが出てしまいました。
発生している問題・分からないこと
以下がエラーメッセージです。
Exception: Request failed for https://www.googleapis.com returned code 400. Truncated server response: {
"error": {
"code": 400,
"message": "Invalid value at 'max_results' (TYPE_UINT32), "youtube"",
"errors": [
{
"messag... (use muteHttpExceptions option to examine full response)
searchAndDisplayVideosInSpreadsheet @ 無題.gs:26
該当のソースコード
GAS
1function searchAndDisplayVideosInSpreadsheet() { 2 var API_KEY = 'YOUR_YOUTUBE_API_KEY'; // Replace with your YouTube API Key 3 var SPREADSHEET_ID = 'YOUR_SPREADSHEET_ID'; // Replace with your Spreadsheet ID 4 var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getActiveSheet(); 5 var searchQuery = sheet.getRange("A1").getValue(); 6 var maxResults = sheet.getRange("B1").getValue(); 7 var baseUrl = 'https://www.googleapis.com/youtube/v3/search'; 8 var options = { 9 key: API_KEY, 10 part: 'snippet', 11 q: searchQuery, 12 type: 'video', 13 maxResults: maxResults, 14 order: 'relevance', 15 }; 16 var query = '?key=' + options.key + 17 '&part=' + options.part + 18 '&q=' + options.q + 19 '&type=' + options.type + 20 '&maxResults=' + options.maxResults + 21 '&order=' + options.order; 22 var response = UrlFetchApp.fetch(baseUrl + query); 23 var data = JSON.parse(response.getContentText()); 24 if (data.items.length > 0) { 25 data.items.forEach(function(item, index) { 26 var videoId = item.id.videoId; 27 var videoResponse = UrlFetchApp.fetch('https://www.googleapis.com/youtube/v3/videos?key=' + API_KEY + '&id=' + videoId + '&part=statistics,snippet'); 28 var videoData = JSON.parse(videoResponse.getContentText()); 29 var title = item.snippet.title; 30 var channelTitle = item.snippet.channelTitle; 31 var description = item.snippet.description; // Overview of the video 32 var viewCount = videoData.items[0].statistics.viewCount; 33 var likeCount = videoData.items[0].statistics.likeCount; 34 var commentCount = videoData.items[0].statistics.commentCount; 35 var videoUrl = 'https://www.youtube.com/watch?v=' + videoId; 36 sheet.getRange(index + 4, 1).setValue(title); 37 sheet.getRange(index + 4, 2).setValue(channelTitle); 38 sheet.getRange(index + 4, 3).setValue(description); 39 sheet.getRange(index + 4, 4).setValue(viewCount); 40 sheet.getRange(index + 4, 5).setValue(likeCount); 41 sheet.getRange(index + 4, 6).setValue(commentCount); 42 sheet.getRange(index + 4, 7).setValue(videoUrl); 43 }); 44 sheet.getRange(3, 1).setValue("タイトル"); 45 sheet.getRange(3, 2).setValue("チャンネル名"); 46 sheet.getRange(3, 3).setValue("概要"); 47 sheet.getRange(3, 4).setValue("再生回数"); 48 sheet.getRange(3, 5).setValue("いいね数"); 49 sheet.getRange(3, 6).setValue("コメント数"); 50 sheet.getRange(3, 7).setValue("動画URL"); 51 } else { 52 Logger.log('No videos found.'); 53 } 54}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
エラー文をコピペしたりして色々調べてみましたが、よくわかりませんでした。
また、他にもyoutube apiを使って、取得したyoutubeの動画のIDから再生数を表示するプログラムも作ったのですが、そちらは問題なく動きました。
補足
ソースコードの2行目の 'YOUR_YOUTUBE_API_KEY' と3行目の 'YOUR_SPREADSHEET_ID' は実際には自分のYoutube API KeyとスプレッドシートのIDに差し替えてますが、ここではそのままにしています。

回答2件
あなたの回答
tips
プレビュー