问题描述
我有以下代码,可以使用视频ID将视频从Google表格添加到播放列表中。
function updateYTPlaylist() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1');
const yt_video_ids = sh.getRange('A2:A'+sh.getLastRow()).getValues().flat([1]);
const playlistId = "PL7Ias5xZGXQ9o60ezsHZhl8NkoSm7Tdvj";
yt_video_ids.forEach( vid =>
YouTube.PlaylistItems.insert({
snippet: {
playlistId: playlistId,resourceId: {
kind: "youtube#video",videoId: vid
}
}
},"snippet"));
Utilities.sleep(2000);
}
在添加新视频之前,我还想删除前一天存在的视频,但是不确定如何处理。
解决方法
Here是从播放列表中删除项目的官方文档。不幸的是,此http请求只能从播放列表中删除一个视频,因此您将不得不循环浏览播放列表中所有视频的ID,一次删除一个。
,YouTube API不提供有关何时将特定视频添加到播放列表的信息。因此,我们不能只删除前一天的视频。我建议创建一个新的播放列表,并每天运行一个功能(通过时间触发),以删除当前的视频(在前一天添加的视频),然后添加新的视频。因此,脚本的第一部分将清除您的播放列表,第二部分将添加新视频。
清除播放列表:
我在您的代码中添加了以下代码段,该代码段从播放列表中删除了每个视频;或换句话说,它会清除您的播放列表:
const playlistResponse = YouTube.PlaylistItems.list('snippet',{playlistId: playlistId});
const playlistItem = playlistResponse.items;
playlistItem.forEach(dvid =>
{YouTube.PlaylistItems.remove(dvid.id);
Utilities.sleep(2000);}
);
清除播放列表并添加新视频:
因此,根据 Sheet1 的 A 列,清除一个播放列表,然后添加个youtube视频的完整代码。 >如下:
function updateYTPlaylist() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1');
const yt_video_ids = sh.getRange('A2:A'+sh.getLastRow()).getValues().flat([1]);
const playlistId = "PL7Ias5xZGXQ9o60ezsHZhl8NkoSm7Tdvj";
const playlistResponse = YouTube.PlaylistItems.list('snippet',{playlistId: playlistId});
const playlistItem = playlistResponse.items;
playlistItem.forEach(dvid =>
{YouTube.PlaylistItems.remove(dvid.id);
Utilities.sleep(2000);}
);
yt_video_ids.forEach( avid =>
YouTube.PlaylistItems.insert({
snippet: {
playlistId: playlistId,resourceId: {
kind: "youtube#video",videoId: avid
}
}
},"snippet"));
Utilities.sleep(2000);
}
资源:
在Google脚本编辑器中,您需要点击资源 => 高级Google服务,然后启用 YouTube Data API v3 (自现在是最新版本。