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

如何用Google Apps Script根据歌手和歌曲名获取发行年份?

用Google Apps Script获取歌曲发行年份的解决方案

完全可以借助Google Apps Script实现你的需求——通过A列歌手名、B列歌曲名,在C列返回对应歌曲的发行年份。以下是具体实现步骤和代码:

步骤1:打开Google表格的脚本编辑器

打开目标Google表格,点击顶部菜单栏的「扩展程序」→「Apps 脚本」,进入脚本编辑器界面。

步骤2:编写脚本代码

删除编辑器里的默认代码,替换为以下脚本:

function getReleaseYear(artist, track) {
  // 若歌手或歌曲名为空,返回空值
  if (!artist || !track) return "";
  
  // 构造MusicBrainz API请求地址(免费音乐元数据API)
  const apiUrl = `https://musicbrainz.org/ws/2/release-group/?query=artist:"${encodeURIComponent(artist)}" AND recording:"${encodeURIComponent(track)}"&fmt=json`;
  
  try {
    // 发送API请求并解析响应
    const response = UrlFetchApp.fetch(apiUrl);
    const result = JSON.parse(response.getContentText());
    
    // 检查是否有匹配的发行信息
    if (result['release-groups'] && result['release-groups'].length > 0) {
      const firstRelease = result['release-groups'][0];
      // 提取首次发行年份(日期格式为YYYY-MM-DD,取前四位)
      if (firstRelease['first-release-date']) {
        return firstRelease['first-release-date'].split('-')[0];
      }
    }
    // 无匹配结果返回空值
    return "";
  } catch (error) {
    console.log(error.toString());
    return "获取失败";
  }
}

步骤3:保存并授权脚本

  1. 点击编辑器顶部的「保存」按钮,给脚本命名(比如「MusicReleaseYearTool」)。
  2. 首次运行脚本时(比如在表格里输入公式后),会弹出授权提示:
    • 点击「授权访问」,选择你的Google账号。
    • 在提示页面点击「高级」→「前往[脚本名]」,然后允许脚本访问网络和表格数据。

步骤4:在表格中使用公式

在C2单元格输入以下公式,按回车即可获取对应歌曲的发行年份:

=getReleaseYear(A2,B2)

将鼠标悬停在C2单元格右下角,当出现十字光标时,下拉填充到需要处理的所有行。

注意事项

  • API频率限制:MusicBrainz API有请求频率限制(每秒不超过1次),如果处理大量数据,建议分批操作,或修改脚本添加延迟(比如在循环中加入Utilities.sleep(1000))。
  • 匹配准确性:如果返回空值或错误结果,可能是歌手/歌曲名拼写不规范,可尝试调整输入文本的准确性。
  • 批量处理优化:若需要处理数百行数据,可编写批量处理函数替代公式,避免逐行请求的延迟:
    function batchGetReleaseYears() {
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      const data = sheet.getDataRange().getValues();
      
      // 从第二行开始遍历(假设第一行是表头)
      for (let i = 1; i < data.length; i++) {
        const artist = data[i][0];
        const track = data[i][1];
        if (artist && track) {
          const year = getReleaseYear(artist, track);
          sheet.getRange(i+1, 3).setValue(year);
          // 添加1秒延迟,避免触发API限制
          Utilities.sleep(1000);
        }
      }
    }
    
    使用批量函数时,直接在脚本编辑器点击运行即可,无需手动输入公式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:16:26