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

Google Script UrlFetch PUT请求调用Guesty API失败求助

问题排查与修正方案

核心错误点

  • 请求体结构错误:Guesty API要求customFields是数组类型,你的代码里误写成了单个对象,与CURL示例的格式不匹配。
  • 缺失关键请求头:PUT请求必须指定Content-Type: application/json,否则UrlFetchApp会默认使用application/x-www-form-urlencoded格式,导致API无法解析请求体。
  • Authorization格式验证:确保单元格A18中的token是Bearer XXXXXX的完整格式(包含Bearer前缀和空格)。

修正后的完整代码

function putlistingcustomfield (){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('get_token');
  var code = sheet.getRange("A18").getValue();

  const myHeaders2 = {
    Accept: 'application/json',
    Authorization: code,
    'Content-Type': 'application/json' // 添加缺失的请求头
  };
  
  // 修正customFields为数组结构,匹配API要求
  var data = {
    'customFields': [
      {
        'fieldId': '639cdb92e128c3002a11b186',
        'value': 'test'
      }
    ]
  };

  const options = {
    method: 'PUT', 
    headers: myHeaders2,
    followRedirects: true,
    payload: JSON.stringify(data),
    muteHttpExceptions: true // 强制返回错误响应,方便排查问题
  };

  const url = 'https://open-api.guesty.com/v1/listings/XXXXXX/custom-fields';
  let response2 = UrlFetchApp.fetch(url, options);
  
  Logger.log(response2.getContentText()); // 输出完整响应文本便于调试
  var sheet2 = ss.getSheetByName('write');
  var cell2 = sheet2.getRange("A10");
  cell2.setValue(response2.getContentText());
};

额外调试建议

  • 启用muteHttpExceptions: true后,即使API返回4xx/5xx错误,也能获取到具体的错误提示,可根据提示进一步排查权限、listing ID有效性等问题。
  • 执行代码后查看日志中的响应内容,若仍有错误,可对照Guesty API文档的错误码说明调整请求参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:36:08