Я был совершенно ошеломлен всем этим, так как я совершенно новичок в работе с API. Я хотел бы заполнить Google Sheet видеороликами канала, чтобы всегда иметь возможность обновлять их статистику в любое время, когда мне нужно добавить (или заменить самые старые) новые видео в список. Я попробовал следовать видеоинструкции и чувствую, что я рядом, но у меня проблемы.
ПРИМЕЧАНИЕ. Список воспроизведения, который я использовал ниже, предназначен для канала разработчиков Google.
Видео, которое я посмотрел, показало пример, когда видео, по которым вы просматривали видео, были лучшими в результатах поиска по определенному ключевому слову. Вместо этого я хотел бы получить последние 50 видео с определенного канала.
В исходном коде была строка:
var sr = YouTube.Search.list("snippet,id", { q: "guitars", maxResults: 50});
Я изменил это на:
var sr = YouTube.PlaylistItems.list("snippet,id", { playlistId: "UU_x5XG1OV2P6uZZ5FSM9Ttw", maxResults: 50});
Кажется, проблема в этой строке:
var srVidsOnly = sr.items.filter(function(res){ return res.resourceId.kind === "youtube#playlistItems"});
Я пытался пройти через это и после многих попыток проб и ошибок сдался. Я не уверен, как должна выглядеть эта линия.
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
var sr = YouTube.PlaylistItems.list("snippet,id", { playlistId: "UU_x5XG1OV2P6uZZ5FSM9Ttw", maxResults: 50});
var srVidsOnly = sr.items.filter(function(res){ return res.resourceId.kind === "youtube#playlistItems"});
var modRes = srVidsOnly.map(function(v){ return [v.resourceId.videoId,v.snippet.title]; });
var ids = modRes.map(function(res){return res[0]; }).join(",");
var stats = YouTube.Videos.list("statistics", {id: ids});
var vidStats = stats.items.map(function(res){return [res.statistics.viewCount, res.statistics.likeCount]; });
activeSheet.getRange(2, 1, modRes.length, modRes[0].length).setValues(modRes);
activeSheet.getRange(2, 3, vidStats.length, vidStats[0].length).setValues(vidStats);
}
Ошибка:
TypeError: Cannot read property "kind" from undefined. (line 6, file "Code")
Удаление вида из пятой строки, например:
var srVidsOnly = sr.items.filter(function(res){ return res.resourceId === "youtube#playlistItems"});
выдает ошибку:
TypeError: Cannot read property "length" from undefined. (line 12, file "Code")
Следуя исходному видео, руководство точно сработало (видео из результатов поиска). Лист был отформатирован так, как я этого хотел. Мне просто нужны видео с определенного канала, а не результаты поиска.
Спасибо