Google Apps 脚本 API 带有 GraphQL 解析错误的请求

Google Apps Script API Request with GraphQL parse error

我正在尝试使用 Apps 脚本发出 API 请求。 API 基于 GraphQL。 我正在使用 JSON.stringify 函数。但是APIreturns出错了

要求:

payload={"query":"{mutation {change_column_value (board_id: 177955, item_id: 287466289, column_id:\"phone\", value: \"{phone : 15065332974, countryShortName: \"US\" }\") {name column_values{ id value}}}"}}

我遇到错误;

{"errors":[{"message":"Parse error on \" }\" (STRING) at [1, 148]","locations":[{"line":1,"column":148}]}]}

Apps 脚本代码:

   var us = "US"
   var column_values = '{ \
     mutation {change_column_value (board_id: 177955, item_id: '+ 287466289  +', column_id:"phone", value: "{phone : 15065332974, countryShortName: \"' + us  +'\" }") {name column_values{ id value}} \
   }';    

    settings = {
      "method": "POST",    
      "headers": {"Content-Type" : "application/json","Authorization" : "eyJhbGciOiJIXXXXXXXXXX"},  
      "payload" : JSON.stringify({query:column_values})
    }

    response= UrlFetchApp.fetch(url, settings);  

您不需要在 JSON 请求中转义特殊字符。

syntax 意味着使用通过冒号相互分配的键值对,其中字符串位于引号内(不使用反斜杠转义!),而数字和变量名则不是。

括号应该用于您想要的 API 请求,如 documented

GraphQL 操作中的括号表示一个选择集——一个或多个被请求的字段。操作本身(无论是 query 还是 mutation)不是一个字段,因此您不要将整个操作括在方括号中。

正确:

mutation {
  doSomething
}

不正确:

{
  mutation {
    doSomething
  }
}

只有 次你会看到括号看起来像在 "outside" 上是在使用 query shorthand.

前提是value是一个字符串,那么你在里面那个字符串用反斜杠转义双引号就可以了

您也可以考虑使用 variables,这将大大清理您的代码并减少出错的几率。