🛠️ 工具概览
功能: 输入播放列表链接,自动在表格中生成:播放列表名称、视频标题、视频单独链接。适用于为notebooklm批量导入油管视频链接。
📖 操作步骤
1. 准备工作
-
拥有一个 Google 帐号。
-
获取 YouTube 播放列表链接(支持浏览器地址栏链接或分享链接)。
-
注意:确保播放列表状态为 “
公开” 或 “不公开”(私有列表 API 无法读取)。
2. 环境配置
- 在
Google云端硬盘新建一个Google 表格 (Google Sheets)。 - 点击菜单栏:
扩展程序 (Extensions)->Apps Script。 - 添加服务(关键步骤):
- 在左侧侧边栏点击
服务 (Services)旁的+号。 - 选择
YouTube Data API v3。 - 点击
添加 (Add)。
- 在左侧侧边栏点击
3. 部署代码
将编辑器中的原有代码清空,粘贴下方脚本。
4. 运行与授权
- 点击工具栏的
保存 (Save)图标。 - 在下拉菜单选择
getYouTubePlaylistLinks函数。 - 点击
运行 (Run)。 - 首次授权:点击“查看权限” -> 选择账号 -> 点击“高级 (Advanced)” -> 点击“转到…(不安全)” -> 点击“允许”。
💻 自动化脚本 (Apps Script)
传送门🔗 YouTube 播放列表批量提取 - Google 表格
可直接创建副本保存也可打开该连接,点击扩展程序 (Extensions) -> Apps 脚本可见源代码
JavaScript
function getYouTubePlaylistLinks() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
// --- 在这里粘贴你的链接支持浏览器地址栏链接或分享链接 ---
var input = 'https://www.youtube.com/playlist?list=PLn8PRpmsu08pQBgjxYFXSsODEF3Jqmm-y';
// -----------------------
var playlistId = extractId(input);
if (!playlistId) {
SpreadsheetApp.getUi().alert('无法识别播放列表ID');
return;
}
var videoList = [];
var nextPageToken = '';
var playlistName = '';
try {
// 获取播放列表标题
var playlistResponse = YouTube.Playlists.list('snippet', { id: playlistId });
playlistName = playlistResponse.items.length > 0 ? playlistResponse.items[0].snippet.title : '未知播放列表';
// 获取所有视频
do {
var response = YouTube.PlaylistItems.list('snippet', {
playlistId: playlistId,
maxResults: 50,
pageToken: nextPageToken
});
for (var i = 0; i < response.items.length; i++) {
var item = response.items[i];
videoList.push([item.snippet.title, 'https://www.youtube.com/watch?v=' + item.snippet.resourceId.videoId]);
}
nextPageToken = response.nextPageToken;
} while (nextPageToken);
// --- 写入表格部分(已修复范围匹配问题) ---
sheet.clear();
// 1. 写入列表名称
sheet.getRange(1, 1).setValue("播放列表名称:");
sheet.getRange(1, 2).setValue(playlistName).setFontWeight("bold");
// 2. 写入表头 (修复点:添加了 1, 2 参数确保选中两列)
sheet.getRange(2, 1, 1, 2).setValues([["视频标题", "视频链接"]]).setFontWeight("bold");
// 3. 写入视频内容
if (videoList.length > 0) {
sheet.getRange(3, 1, videoList.length, 2).setValues(videoList);
}
SpreadsheetApp.getUi().alert('成功!已提取 ' + videoList.length + ' 个视频。');
} catch (e) {
SpreadsheetApp.getUi().alert('错误:' + e.message);
}
}
function extractId(str) {
str = str.trim();
if (str.indexOf('list=') > -1) return str.split('list=')[1].split('&')[0];
return str.split('&')[0];
}
⚠️ 常见问题排查 (Troubleshooting)
| 错误信息 | 原因 | 解决方法 |
|---|---|---|
Invalid Value |
播放列表 ID 提取失败或带有多余参数 | 使用上面的 extractId 函数可自动过滤 &si= 等参数。 |
Data has 2 but range has 1 |
getRange 范围与数据列数不匹配 |
确保 getRange 的第四个参数设定为 2。 |
YouTube is not defined |
未添加 YouTube 服务 | 点击 Apps Script 左侧 服务 + 重新添加 YouTube API。 |
Permission denied |
列表为“私有 (Private)” | 在 YouTube 将列表权限改为“不公开 (Unlisted)”。 |
💡拓展功能:一键翻译英文标题
- 函数:
=GOOGLETRANSLATE(A2, "en", "zh-CN") - 操作:把英文标题放在 A 列,B 列下拉公式,瞬间完成批量翻译。
- 进阶:结合之前的 YouTube 提取器,可以给提取出来的视频标题自动加上中文翻译。
📍效果展示

Comments & Reactions