Google Sheets脚本在从Google Books API获取数据时返回429错误

后端开发 2026-07-09

我创建了一个Google表格,在单元格A2输入一本书的ISBN,希望在点击一个与函数getBookData() 关联的按钮后,将书名返回到单元格B2。然而,我的脚本总是在以下位置崩溃:

    var response = UrlFetchApp.fetch(url);

并给出以下429错误:Exception: Request failed for https://www.googleapis.com returned code 429。截断的服务器响应:{ "error": { "code": 429, "message": "Quota exceeded for quota metric 'Queries' and limit 'Queries per day' of service 'books.googleapis.... (use muteHttpExceptions option to examine full response)

这是怎么回事?它并没有陷入循环。如果我查看执行数据,它只有在我按下按钮启动函数时才会执行。所以我不确定我是如何超出查询限制的。我尝试了静默异常,但那样获取的内容就没有返回值,因此就没有数组可用于提取书名。

完整的函数代码在此:

const API_URL = "https://www.googleapis.com/books/v1/volumes?country=US";

function getBookData() {
  var looker = SpreadsheetApp.getUi();
  var response = looker.alert("Oooo", "Should we look up this book?", looker.ButtonSet.YES_NO);

  if (response == looker.Button.YES) {
    var activeSheet = SpreadsheetApp.getActiveSheet();
    var bookISBN = activeSheet.getRange("A2").getValue();
    looker.alert("bookISBN: " +bookISBN);

    var url = API_URL + "&q=isbn:" + bookISBN;

    var response = UrlFetchApp.fetch(url);

    var results = JSON.parse(response);

    var book = results.items[0];

    var title = (book["volumeInfo"]["title"]);

    activeSheet.getRange("B2").setValue(title); 
  }

}

解决方案

尝试创建一个API Key,并将其添加到查询参数中。

(你需要一个Google Cloud项目)

  1. 首先,启用它
  2. 然后进入APIs与服务,点击“创建凭据” -> API密钥

在此处输入图片描述 3.将作用域限定为Books API
在此处输入图片描述 4.复制密钥。记住——密钥是一个秘密。我不熟悉你们的Google文档的确切架构,但如果URL对查看者可见,请注意你把文档分享给了谁。(即使不可见,也要小心。我不清楚可能产生的费用/成本。) 5.只需把密钥附加到请求的URL上

js const API_URL = "https://www.googleapis.com/books/v1/volumes?KEY=<enter_key_here>&country=US";

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章