Я учусь использовать API данных YouTube с помощью скрипта приложений.Сейчас я пытаюсь изменить приведенный здесь пример https://developers.google.com/youtube/v3/quickstart/apps-script, чтобы проверить, существует ли идентификатор.
Я немного изменил его, чтобы посмотреть на идентификаторы видео, поскольку это более распространенный вариант.
С помощью @Tanaike, основанного на моем последнем вопросе, Tanaike помог мне создать цикл, позволяющий сценарию добавлять идентификаторы через запятую.Сейчас я пытаюсь добавить проверку.
function channelsListByVideoid(part,params){
var response = YouTube.Videos.list(part,params);
var video = response.items[0];
var dataRow = [video.id,video.status.uploadStatus, video.snippet.title, response.pageInfo.totalResults, video.snippet.channelId, video.snippet.channelTitle];
SpreadsheetApp.getActiveSheet();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName().appendRow(dataRow);
function getvideo() {
var ui = SpreadsheetApp.getUi();
var videoId = ui.prompt("Enter the YouTube Video ID: ").getResponseText();
var values = videoId.split(",");
for (var i = 0; i < values.length; i++) {
channelsListByVideoid('snippet,status,contentDetails,statistics', {'id': values[i].trim()});
Иногда идентификатор видео, например https://www.youtube.com/watch?v=--fPZOu_H8g, недоступен.Запуск этого идентификатора в примере приложения-скрипта приведет к ошибке TypeError: Cannot read property 'id' of undefined
, которая остановит запуск скрипта.
Я думал о том, как использовать свойство video.list.response:
{
"kind": "youtube#videoListResponse",
"etag": etag,
"nextPageToken": string,
"prevPageToken": string,
"pageInfo": {
"totalResults": integer,
"resultsPerPage": integer
},
"items": [
video Resource
]
}
totalResults и resultsPerPage будут отображаться как 1, если видео допустимо, и 0, если недействительно:
"pageInfo": {
"totalResults": 0,
"resultsPerPage": 0
, что можно проверить с помощью проводника API (https://developers.google.com/youtube/v3/docs/videos/list?apix_params=%7B%22part%22%3A%22snippet%2CcontentDetails%2Cstatistics%22%2C%22id%22%3A%22--fPZOu_H8g%22%7D)
Iдобавлено `` `` response.pageInfo.totalResults,
Logically to me, I need to add a
````var response````
to my getvideo() and add the validation check within the loop.
I'm not clear if you can write it as simply as
, если response.pageinfo.totalResults = 1, тогда "valid" ELSE "Invalid"
and then how to allow the code to skip the error that is generated.
Thank you!