如何获得MaxResults设置的50多个结果



此源代码运行良好。无法在数字50上设置MaxResult。

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++;
    }
}
  • 您想从channelId中检索所有项目。
  • 您想将titlevideoId从检索的项目中放入" Sheep1"的" A"one_answers" B"列。

如果我的理解是正确的,那么这种修改怎么样?请将其视为几个答案之一。

修改点:

  • 当您想检索50多个物品时,请使用nextPageToken
  • 在您的脚本中,setValue()在for循环中使用。在这种情况下,过程成本将变得很高。因此,就您而言,您可以使用setValues()

当以上点反映到您的脚本时,如下。

修改后的脚本:

当您使用此信息时,请在高级Google Services上启用YouTube数据API。

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个项目。

参考:

  • 高级Google Services
  • 搜索:列表
  • setValue(value(
  • setValues(values(

如果我误解了您的问题,这不是您想要的结果,我深表歉意。

相关内容

  • 没有找到相关文章

最新更新