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

如何用Google Apps Script检测网站更新并将Xbox游戏剪辑存至Google Drive?

嘿,我来帮你梳理这两个需求的实现思路,尤其是Xbox游戏剪辑同步到Google Drive的部分,我之前研究过类似的方案,分享给你:

一、网站更新检测功能(Google Apps Script实现)

这个需求用GAS的原生服务就能轻松搞定,核心思路是定期抓取网页内容,和之前存储的内容对比,有变化就触发通知:

  • 用UrlFetchApp.fetch()获取目标网页的HTML内容
  • 把网页的哈希值(或者关键区域的内容)存在PropertiesService.getScriptProperties()里,作为基准值
  • 设置时间驱动触发器,比如每天/每小时执行一次检测脚本
  • 对比新抓取的内容和基准值,若不一致,就用MailApp.sendEmail()发邮件通知,或者集成Slack机器人推送提醒

给你个简单的示例代码片段:

function checkWebsiteUpdate() {
  const targetUrl = "https://你的目标网站地址";
  const scriptProps = PropertiesService.getScriptProperties();
  
  // 获取当前网页内容并计算哈希
  const currentContent = UrlFetchApp.fetch(targetUrl).getContentText();
  const currentHash = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, currentContent);
  const currentHashStr = currentHash.map(byte => byte.toString(16).padStart(2, '0')).join('');
  
  // 获取存储的基准哈希
  const savedHash = scriptProps.getProperty('websiteHash');
  
  if (!savedHash) {
    // 第一次运行,存储哈希
    scriptProps.setProperty('websiteHash', currentHashStr);
    Logger.log("首次检测,已存储基准内容");
    return;
  }
  
  // 对比哈希,判断是否更新
  if (currentHashStr !== savedHash) {
    MailApp.sendEmail("你的邮箱地址", "网站更新提醒", "目标网站已更新,快去看看!");
    scriptProps.setProperty('websiteHash', currentHashStr); // 更新基准哈希
  } else {
    Logger.log("网站未更新");
  }
}

如果需要更精准的检测(比如只监控某个特定板块),可以用GAS的XmlService解析HTML,或者添加Cheerio库(脚本ID:1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0)来用CSS选择器提取关键内容。

二、Xbox游戏剪辑自动同步到Google Drive

这个需求的核心难点是Xbox API的身份验证,因为Google Apps Script没有内置Xbox的OAuth支持,不过咱们可以用第三方的OAuth解决方案来搞定:

核心方案说明

Xbox的/v2/{xuid}/game-clips接口确实能获取用户的游戏剪辑列表(包含下载链接),但需要通过OAuth2身份验证才能调用。这里推荐使用OAuth1 for Apps Script库来实现授权流程,具体步骤如下:

  1. 注册Xbox开发者应用
    先去Xbox开发者平台创建一个应用,获取客户端ID和客户端密钥,记得把GAS的部署URL配置为应用的回调URL(GAS部署时选择“Web应用”,复制生成的URL即可)。

  2. 在GAS中添加OAuth1库
    打开你的GAS项目,点击“资源”→“库”,输入OAuth1库的脚本ID:1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF,选择最新版本,点击添加。

  3. 编写授权与API调用代码
    先初始化OAuth客户端,获取访问令牌,然后调用Xbox API获取游戏剪辑,最后下载并保存到Google Drive:

// 初始化OAuth客户端
function getXboxOAuthClient() {
  const clientId = "你的Xbox应用客户端ID";
  const clientSecret = "你的Xbox应用客户端密钥";
  
  return OAuth1.createService('Xbox')
    .setAccessTokenUrl('https://login.live.com/oauth20_token.srf')
    .setRequestTokenUrl('https://login.live.com/oauth20_token.srf')
    .setAuthorizationUrl('https://login.live.com/oauth20_authorize.srf?scope=XboxLive.signin%20XboxLive.offline_access')
    .setConsumerKey(clientId)
    .setConsumerSecret(clientSecret)
    .setCallbackFunction('authCallback');
}

// 授权回调函数
function authCallback(request) {
  const service = getXboxOAuthClient();
  const isAuthorized = service.handleCallback(request);
  return HtmlService.createHtmlOutput(isAuthorized ? "授权成功!可以关闭此页面了。" : "授权失败,请重试。");
}

// 获取Xbox游戏剪辑并保存到Drive
function syncXboxClipsToDrive() {
  const service = getXboxOAuthClient();
  if (!service.hasAccess()) {
    const authorizationUrl = service.authorize();
    Logger.log("请访问以下链接授权:" + authorizationUrl);
    return;
  }
  
  const xuid = "你的Xbox用户XUID"; // 可以通过Xbox API获取自己的XUID
  const apiUrl = `https://xboxapi.com/v2/${xuid}/game-clips`;
  
  // 调用Xbox API获取剪辑列表
  const response = UrlFetchApp.fetch(apiUrl, {
    headers: {
      'Authorization': 'Bearer ' + service.getAccessToken()
    }
  });
  const clips = JSON.parse(response.getContentText());
  
  // 选择要保存的Drive文件夹
  const driveFolder = DriveApp.getFolderById("你的Drive文件夹ID");
  
  // 遍历剪辑列表,下载并保存
  clips.forEach(clip => {
    const clipUrl = clip.downloadUrl;
    const clipName = clip.name + ".mp4";
    
    // 检查Drive中是否已存在该剪辑
    const existingFiles = driveFolder.getFilesByName(clipName);
    if (existingFiles.hasNext()) {
      Logger.log(`剪辑${clipName}已存在,跳过`);
      return;
    }
    
    // 下载剪辑并保存到Drive
    const clipBlob = UrlFetchApp.fetch(clipUrl).getBlob();
    driveFolder.createFile(clipBlob.setName(clipName));
    Logger.log(`已保存剪辑:${clipName}`);
  });
}

补充说明

  • 首次运行syncXboxClipsToDrive()时,会生成一个授权链接,复制到浏览器打开完成授权即可
  • 可以给这个函数设置时间触发器,定期自动同步新的游戏剪辑
  • 如果需要获取自己的XUID,可以调用Xbox的/v2/account/profile接口(同样需要授权)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:28:24