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

使用Google Apps Script调用BigQuery报错:找不到指定Job

解决Google Apps Script调用BigQuery Jobs.getQueryResults时的"Not found: Job"错误

你的错误根源是在调用BigQuery.Jobs.getQueryResults时未传递与初始查询请求一致的location参数。当你在request中指定了特定region作为location,BigQuery会将查询任务创建在该区域内;如果后续请求不带location,BigQuery会默认去US区域查找任务,自然找不到目标job。

直接修改两处代码即可解决:

  1. 循环检查任务状态的getQueryResults调用,添加location参数:
// 原错误代码
// queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId);
// 修改后
queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, {location: request.location});
  1. 确保分页请求的location参数与初始请求一致(你这里已配置,但需确认值的有效性)

完整修复后的核心代码片段:

const projectId = 'project-id';

const request = {
  query: 'SELECT * FROM DUMMY_TABLE;',
  location: "region", // 替换为实际有效区域,比如"us-central1"
  useLegacySql: false
};
let queryResults = BigQuery.Jobs.query(request, projectId);
let jobId = queryResults.jobReference.jobId;

// 检查查询任务状态
let sleepTimeMs = 1000;
while (!queryResults.jobComplete) {
  Utilities.sleep(sleepTimeMs);
  sleepTimeMs *= 2;
  // 带上与初始请求一致的location参数
  queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, {location: request.location});
}

// 获取所有结果行
let rows = queryResults.rows;
while (queryResults.pageToken) {
  queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, {
    pageToken: queryResults.pageToken,
    location: request.location
  });
  rows = rows.concat(queryResults.rows);
}

额外验证点:

  • 确认request.location是有效的BigQuery区域值(如"us-east1"、"europe-west1",不能是模糊的"region")
  • 确保脚本授权账号拥有该BigQuery项目的BigQuery Job Viewer权限
  • 检查projectId与创建任务的项目ID完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:58:34