You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script获取YouTube订阅新视频邮件报错求助

问题排查与修复方案

1. 语法错误直接解决

你代码第一行的module { }是Node.js的模块语法,但Google Apps Script不支持这种写法,这就是导致SyntaxError: Unexpected token '{'的直接原因——直接删除这行和对应的闭合}即可解决语法问题。

2. 功能层面的关键修复

除了语法错误,你的代码还有几个会导致功能失效的问题,一并修正:

(1)获取订阅列表必须加mine: true

调用YouTube.subscriptions.list时,必须指定mine: true才能获取当前授权用户的订阅列表,否则会返回空结果:

var subscriptions = YouTube.subscriptions.list("snippet", {
  mine: true
});

(2)频道ID取值错误

subscription.id是订阅项的ID,不是频道ID,正确的频道ID应该从subscription.snippet.resourceId.channelId获取:

var channelId = subscription.snippet.resourceId.channelId;

(3)当日视频时间范围逻辑错误

new Date().toISOString()取的是当前时间,会漏掉当日凌晨到现在的视频,应该重置到当日零点:

var startOfDay = new Date();
startOfDay.setHours(0, 0, 0, 0); // 定位到当日0点0分0秒

(4)邮件需启用HTML渲染

你用HTML标签构建了邮件内容,但MailApp.sendEmail的body参数是纯文本,必须改用htmlBody才能正确渲染格式:

MailApp.sendEmail({
  to: "your@email.com",
  subject: "你的每日YouTube更新",
  htmlBody: body
});

修复后的完整代码

function sendDailyEmail() {
  // 设定当日零点,用于筛选当日发布的视频
  var startOfDay = new Date();
  startOfDay.setHours(0, 0, 0, 0);

  // 获取当前用户的YouTube订阅列表
  var subscriptions = YouTube.subscriptions.list("snippet", {
    mine: true
  });

  // 收集所有订阅频道的当日新视频
  var newVideos = [];
  for (var i = 0; i < subscriptions.items.length; i++) {
    var subscription = subscriptions.items[i];
    var channelId = subscription.snippet.resourceId.channelId;
    
    var newVideosForSubscription = YouTube.videos.list("snippet", {
      part: "snippet",
      channelId: channelId,
      publishedAfter: startOfDay.toISOString(),
      order: "date" // 按发布时间排序,确保优先显示最新视频
    });
    
    newVideosForSubscription.items.forEach(function(video) {
      newVideos.push(video);
    });
  }

  // 构建HTML格式的邮件内容
  var body = "";
  if (newVideos.length === 0) {
    body = "<p>今日没有订阅频道发布新视频哦~</p>";
  } else {
    newVideos.forEach(function(video) {
      body += `<h3>${video.snippet.title}</h3>`;
      body += `<p>${video.snippet.description}</p>`;
      body += `<img src="${video.snippet.thumbnails.medium.url}" alt="视频缩略图"><br><br>`;
    });
  }

  // 发送邮件
  MailApp.sendEmail({
    to: "your@email.com",
    subject: "你的每日YouTube更新",
    htmlBody: body
  });
}

额外注意事项

  • 必须在Google Apps Script编辑器中启用YouTube Data API v3:点击左侧「服务」→ 添加服务 → 选择YouTube Data API v3。
  • 首次运行脚本时需要完成权限授权,按照页面提示操作即可。

内容的提问来源于stack exchange,提问作者HenriDo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:22:54