🛠️ 工具概览
功能: 输入播放列表链接,自动在表格中生成:播放列表名称、视频标题、视频单独链接。适用于为notebooklm批量导入油管视频链接。

📖 操作步骤

1. 准备工作

  • 拥有一个 Google 帐号。

  • 获取 YouTube 播放列表链接(支持浏览器地址栏链接或分享链接)。

  • 注意:确保播放列表状态为 “公开” 或 “不公开”(私有列表 API 无法读取)。

2. 环境配置

  1. 在Google云端硬盘新建一个 Google 表格 (Google Sheets)。
  2. 点击菜单栏:扩展程序 (Extensions) -> Apps Script。
  3. 添加服务(关键步骤):
    • 在左侧侧边栏点击 服务 (Services) 旁的 + 号。
    • 选择 YouTube Data API v3。
    • 点击 添加 (Add)。

3. 部署代码

将编辑器中的原有代码清空,粘贴下方脚本。

4. 运行与授权

  1. 点击工具栏的 保存 (Save) 图标。
  2. 在下拉菜单选择 getYouTubePlaylistLinks 函数。
  3. 点击 运行 (Run)。
  4. 首次授权:点击“查看权限” -> 选择账号 -> 点击“高级 (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 提取器,可以给提取出来的视频标题自动加上中文翻译。

📍效果展示

image