Как получить больше результатов, чем 50, установленных maxResults? - PullRequest
1 голос
/ 02 июля 2019

Этот исходный код работает хорошо.Значение maxResults не может быть установлено с номером 50.

Не удалось вызвать API-вызов youtube.search.list: недопустимое значение «150».Значения должны находиться в диапазоне: [0, 50] (строка 32, файл «Код»)

Как получить больше результатов?

function Search_YouTube_videos_ByChannel() {
  var results = YouTube.Search.list('id,snippet', {
    channelId:'UCZFUrFoqvqlN8seaAeEwjlw',
    maxResults: 50
  });
    var title = "";
    var id = "";
    var last_row = 0;
    var spread_active = SpreadsheetApp.getActiveSpreadsheet();
    var sheet1 = spread_active.getSheetByName("Sheet1");
    for (var i = 0; i < results.items.length; i++) {
        var item = results.items[i];
        title = item.snippet.title;
        id = item.id.videoId;
        last_row = sheet1.getLastRow() + 1;
        sheet1.getRange(last_row, 1).setValue(title);
        sheet1.getRange(last_row, 2).setValue(id);
        last_row++;
    }
}

1 Ответ

2 голосов
/ 02 июля 2019
  • Вы хотите получить все элементы из channelId.
  • Вы хотите поместить title и videoId из найденных элементов в столбцы "A" и "B" of "Sheet1 ".

Если мое понимание верно, как насчет этой модификации?Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Точки модификации:

  • Если вы хотите получить предметы более 50, используйте nextPageToken.
  • В вашем скрипте setValue() используется в цикле for.В этом случае стоимость процесса станет высокой.Таким образом, в вашем случае вы можете использовать setValues().

Когда указанные выше точки отражаются в вашем скрипте, это выглядит следующим образом.

Модифицированный скрипт:

Когда вы используете это, включите API данных YouTube в Advanced Google Services.

function Search_YouTube_videos_ByChannel() {
  var items = [];
  var pageToken = "";
  do {
    var temp = YouTube.Search.list('id,snippet', {
      channelId:'UCZFUrFoqvqlN8seaAeEwjlw',
      maxResults: 50,
      pageToken: pageToken,
    });
    Array.prototype.push.apply(items, temp.items);
    pageToken = temp.nextPageToken || "";
  } while (pageToken);
  var spread_active = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = spread_active.getSheetByName("Sheet1");
  var values = items.map(function(e) {return [e.snippet.title, e.id.videoId]});
  sheet1.getRange(sheet1.getLastRow() + 1, 1, values.length, values[0].length).setValues(values);
}

Примечание:

  • Когда этот скрипт запущен, получается 410 элементов.

Ссылки:

Если я неправильно понял ваш вопрос, и это был не тот результат, который вам нужен, прошу прощения.

...