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

Google Sheets自定义函数调用YouTube API获取频道名称的API密钥问题

解决Google Sheets自定义函数调用YouTube API的密钥问题

问题根源

在Apps Script编辑器里直接运行函数时,会自动使用你的Google账号权限(OAuth)访问YouTube Data API,所以无需额外密钥。但自定义函数在Sheets单元格中调用时,会以受限模式运行,无法自动触发OAuth授权流程,导致API请求缺少有效凭据,从而抛出密钥缺失的错误。

两种解决办法

办法1:使用你自己的API密钥并隐藏

适合希望所有表格用户无需额外授权,直接获取数据的场景。

步骤:

  • 前往Google Cloud Console创建YouTube Data API v3的API密钥(需先启用该API服务)。
  • 在Apps Script中把密钥存储到脚本属性中,避免硬编码泄露:
    打开编辑器→点击「项目设置」→勾选「显示“脚本属性”」→添加键值对,比如键为YOUTUBE_API_KEY,值为你的API密钥。
  • 修改函数,调用API时指定密钥:
    function GET_CHANNEL_TITLE(videoId) {
      const apiKey = PropertiesService.getScriptProperties().getProperty('YOUTUBE_API_KEY');
      const v = YouTube.Videos.list("snippet", {id: videoId, key: apiKey});
      const itemCount = v.items.length;
      return itemCount === 1 ? v.items[0].snippet.channelTitle : "";
    }
    
  • 注意:给API密钥添加权限限制,比如仅允许你的Apps Script项目调用,或指定请求来源,防止被滥用。

办法2:让用户通过OAuth授权访问

适合希望使用用户自身API配额,避免你的密钥配额耗尽的场景。

但自定义函数无法触发OAuth授权,需换一种调用方式:

  • 修改函数逻辑,通过自定义菜单触发,而非直接在单元格中调用:
    function getChannelTitleForSelectedCell() {
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      const selectedCell = sheet.getActiveCell();
      const videoId = selectedCell.getValue();
      if (!videoId) return;
    
      const v = YouTube.Videos.list("snippet", {id: videoId});
      const result = v.items.length === 1 ? v.items[0].snippet.channelTitle : "";
      selectedCell.offset(0, 1).setValue(result);
    }
    
    // 打开表格时加载自定义菜单
    function onOpen() {
      const ui = SpreadsheetApp.getUi();
      ui.createMenu('YouTube工具')
        .addItem('获取选中视频的频道名', 'getChannelTitleForSelectedCell')
        .addToUi();
    }
    
  • 用户打开表格会看到「YouTube工具」菜单,首次点击「获取选中视频的频道名」时,会弹出OAuth授权提示,用户确认授权后即可正常使用。

方案选择建议

  • 若表格为内部使用、用户数量少,且你愿意承担API配额消耗,选办法1更便捷。
  • 若表格需分享给大量用户,或担心密钥滥用、配额不足,选办法2更稳妥合规。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:10:32