此源代码运行良好。 maxResults的数量不能超过50。
对youtube.search.list的API调用失败,并出现以下错误:无效值“ 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++;
}
}
答案 0 :(得分:2)
channelId
中检索所有项目。title
和videoId
放入“ Sheet1”的“ A”和“ B”列。如果我的理解是正确的,那么该修改如何?请认为这只是几个答案之一。
nextPageToken
。setValue()
用于for循环。在这种情况下,处理成本将变高。因此,您可以使用setValues()
。当以上几点反映到您的脚本中时,它如下所示。
使用此功能时,请在高级Google服务中启用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);
}
如果我误解了您的问题,而这不是您想要的结果,我深表歉意。