使用Google Books API无法获取出版商信息,求Google Sheets适配方案
解决Google Books API获取出版商信息的问题
问题分析
你当前使用的脚本未从Google Books API的响应中提取publisher字段,同时价格信息需要从saleInfo节点下获取,而非volumeInfo。
修改后的核心代码
找到脚本中的getBookInfo函数,替换为以下逻辑(保留原有功能的同时添加出版商和价格提取):
function getBookInfo(isbn) { var apiUrl = `https://www.googleapis.com/books/v1/volumes?q=isbn:${isbn}`; var response = UrlFetchApp.fetch(apiUrl); var bookData = JSON.parse(response.getContentText()); if (bookData.totalItems === 0) { return ["无匹配书籍", "N/A", "N/A", "N/A"]; } var volumeInfo = bookData.items[0].volumeInfo; var saleInfo = bookData.items[0].saleInfo || {}; // 提取基础信息 var title = volumeInfo.title || "N/A"; var authors = volumeInfo.authors ? volumeInfo.authors.join(", ") : "N/A"; // 新增出版商提取 var publisher = volumeInfo.publisher || "N/A"; // 提取价格信息(处理无价格的情况) var price = saleInfo.retailPrice?.amount || "N/A"; var currency = saleInfo.retailPrice?.currencyCode || ""; var formattedPrice = price !== "N/A" ? `${price} ${currency}` : "N/A"; return [title, authors, publisher, formattedPrice]; }
关键修改说明
- 出版商提取:直接从
volumeInfo.publisher字段获取,用|| "N/A"处理无数据的情况 - 价格处理:价格数据位于
saleInfo.retailPrice节点下,使用可选链操作符?.避免因无销售信息导致的脚本报错,同时格式化价格显示 - 统一空值返回:确保无匹配书籍时,所有列都返回默认值,避免表格出现错位
部署注意事项
- 打开Google表格,进入「工具 > 脚本编辑器」
- 替换原
getBookInfo函数内容 - 保存并重新运行脚本,确保表格中对应列(如D列放出版商、E列放价格)能正确接收数据
- 注意Google Books API的免费调用限额,避免短时间内大量请求触发限制
内容的提问来源于stack exchange,提问作者luisa
相关产品推荐
相关产品推荐

