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

使用Google Apps Script调用Upwork GraphQL API时遇字段未定义错误

解决Upwork GraphQL API提示Field 'user' in type 'Query' is undefined的问题

你的核心问题是GraphQL查询语句不符合Upwork API的规范,Query类型中不存在无参数的user字段,需根据需求调整查询逻辑:

两种正确的查询方式

1. 获取当前授权用户信息

使用viewer字段替代user,这是获取当前登录用户信息的标准入口:

function getUpwork() {
  var service = getService("upwork");
  var url = "https://api.upwork.com/graphql";
  var payload = JSON.stringify({
    "query":
      `query {
     viewer { 
      id 
      email 
      } 
    } ` });

  var headers = {
    "Authorization": `bearer ${service.getAccessToken()}`,
    "Content-Type": "application/json",
  };

  var params = {
    "method": "POST",
    payload,
    headers
  };

  var response = UrlFetchApp.fetch(url, params);

  Logger
    .log(response.getResponseCode())
    .log(response.getContentText())
}

2. 查询特定用户信息

如果需要查询其他用户,必须给user字段传入userId参数:

function getUpwork() {
  var service = getService("upwork");
  var url = "https://api.upwork.com/graphql";
  var payload = JSON.stringify({
    "query":
      `query {
     user(userId: "目标用户ID") { 
      id 
      email 
      } 
    } ` });

  var headers = {
    "Authorization": `bearer ${service.getAccessToken()}`,
    "Content-Type": "application/json",
  };

  var params = {
    "method": "POST",
    payload,
    headers
  };

  var response = UrlFetchApp.fetch(url, params);

  Logger
    .log(response.getResponseCode())
    .log(response.getContentText())
}

错误原因说明

根据Upwork GraphQL API定义:

  • viewer字段用于获取当前授权用户的信息,无需额外参数
  • user字段是查询指定用户的接口,必须传入userId作为参数

你之前的查询既没有给user传参,也没有使用正确的viewer字段,导致API返回字段未定义的验证错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:55:54