【问题标题】:Google App Script Big Query - GoogleJsonResponseException: API call to bigquery.jobs.query failed with error: Query parameter 'X' not foundGoogle 应用脚本大查询 - GoogleJsonResponseException:对 bigquery.jobs.query 的 API 调用失败并出现错误:未找到查询参数 \'X\'
【发布时间】:2022-10-17 05:35:50
【问题描述】:

我已经为此苦苦挣扎了几天,我觉得我应该伸出援手。这可能很简单,但我不是编程背景,到目前为止我还没有找到任何资源来解决这个问题。

基本上,我想参数化在 Google APp 脚本中为 BigQuery 运行的 SQL 查询,它从他们提交的 Google 用户那里获取一个变量,我想通过参数化查询来确保这不会被注入,但是,我收到以下无法修复的错误:

GoogleJsonResponseException:对 bigquery.jobs.query 的 API 调用失败并出现错误:在 [1:90] 未找到查询参数“account_name”

这是我运行查询的方式:

//Query
const sqlQuery = 'SELECT district FROM `table` WHERE account_name = @account_name AND ent_theatre=("X") LIMIT 1;'
          
const request = {
  query: sqlQuery,
  params: { account_name: queryvar },
  useLegacySql: false,
};
          
// Run Query
var queryResult = BigQuery.Jobs.query(request,projectID);

我创建了基于on Google's documentation 的查询

【问题讨论】:

  • 我忘了添加我如何从参数定义查询,它在代码中,它基本上是 var company_name = ss.getRange(lastrow, 3).getValue(); var queryvar = '"'+公司名称+'"';

标签: sql google-apps-script google-bigquery


【解决方案1】:

request 对象的语法不正确。 BigQuery.Jobs.query 请求的正确语法如下:

  const request = {
    query: sqlQuery,
    queryParameters: [
      {
        name: "account_name",
        parameterType: { type: "STRING" },
        parameterValue: { value: queryvar }
      }
    ],
    useLegacySql: false,
  };

有关QueryRequest 对象的更多详细信息,请参阅此link

【讨论】:

  • 就是这样。奇怪的是,谷歌的一个显示了一些不同的东西。非常感谢你!祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 2021-08-17
  • 2019-10-15
相关资源
最近更新 更多