此源代码运行良好。无法在数字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
中检索所有项目。 - 您想将
title
和videoId
从检索的项目中放入" 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(
如果我误解了您的问题,这不是您想要的结果,我深表歉意。