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

使用Google Ads API Ruby客户端库遭遇UNEXPECTED_END_OF_QUERY错误

问题排查与修复

根本原因

你在Google Ads查询语言(GQL)里误用了HTML转义字符&lt;代替原生的<符号,API无法解析这种实体字符,导致查询语法中断,触发UNEXPECTED_END_OF_QUERY错误。

修复方案

  1. 替换转义运算符:把查询中的customer_client.level &lt;= 1改成customer_client.level <= 1,使用原生的小于等于符号。
  2. 保持HEREDOC简洁:<<~QUERY已经会自动去除每行前导空白,无需额外处理,确保查询语句没有多余的空格或换行干扰。

修正后的完整代码

client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  config.client_id = client_id
  config.client_secret = client_secret
  config.refresh_token = access_token
  config.developer_token = developer_token
end
google_ads_service = client.service.google_ads
query = <<~QUERY
  SELECT
    customer_client.client_customer,
    customer_client.level,
    customer_client.manager,
    customer_client.descriptive_name,
    customer_client.currency_code,
    customer_client.time_zone,
    customer_client.id
  FROM customer_client
  WHERE customer_client.level <= 1
QUERY
begin
  request = google_ads_service.search_stream do |search|
    search.customer_id = '8148704352'
    search.query = query
    search.page_size = 100
  end
  request.each do |response|                   
    response.results.each do |row|
      puts row
    end
  end
rescue Google::Ads::GoogleAds::Errors::GoogleAdsError => e
  puts "Error message: #{e.failure}"
end

避坑提示

  • 不要给整个查询加单引号:GQL不需要额外的引号包裹,强行添加会让API把引号当成查询的一部分,直接引发语法错误。
  • 提前验证查询:可以先在Google Ads API的查询测试工具里验证语句语法,确认没问题再写到代码里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:43:36