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

调用Monday.com API时遭遇JSON解析错误,请求技术支持

问题分析与修复方案

错误根源

你遇到的Unexpected non-whitespace character after JSON at position 4错误,本质是Monday.com v2 API是GraphQL接口,不是REST接口,你的代码直接拼接URL请求/boards/{id}/items的方式不符合API要求,导致返回的内容不是合法JSON,无法被JSON.parse解析。

修复后的完整代码

function syncMondayToSheets() {
  var mondayBoardId = '你的看板ID';
  var googleSheetId = '你的表格ID';
  var sheetName = 'Sheet1';
  var mondayApiKey = '你的API密钥';

  var mondayUrl = 'https://api.monday.com/v2';
  var headers = { 
    'Authorization': mondayApiKey,
    'Content-Type': 'application/json' // 必须添加这个头部
  };

  // 构建GraphQL查询,获取看板中的项目及所需字段
  var query = `
    query {
      boards(ids: ${mondayBoardId}) {
        items {
          id
          name
          column_values {
            text
          }
        }
      }
    }
  `;

  var params = {
    method: 'POST',
    headers: headers,
    payload: JSON.stringify({ query: query }), // 将查询转为JSON字符串作为请求体
    muteHttpExceptions: true
  };

  var sheet = SpreadsheetApp.openById(googleSheetId).getSheetByName(sheetName);
  var lastSyncedRow = sheet.getLastRow();

  // 发送请求并解析响应
  var response = UrlFetchApp.fetch(mondayUrl, params);
  var responseText = response.getContentText();
  
  // 先打印响应内容,方便排查问题(测试后可删除)
  console.log('API响应内容:', responseText);

  var responseData = JSON.parse(responseText);
  // 处理GraphQL响应结构,提取数据
  var items = responseData.data.boards[0].items;

  var dataToSync = [];

  // 整理同步数据
  items.forEach(function(item) {
    var row = [];
    row.push(item.id);
    row.push(item.name);
    // 避免column_values为空导致报错,增加空值判断
    row.push(item.column_values.length > 0 ? item.column_values[0].text : '');
    dataToSync.push(row);
  });

  // 写入表格(有数据才执行写入)
  if (dataToSync.length > 0) {
    var range = sheet.getRange(lastSyncedRow + 1, 1, dataToSync.length, dataToSync[0].length);
    range.setValues(dataToSync);
  } else {
    console.log('没有可同步的数据');
  }
}

关键修复点说明

  • 添加Content-Type头部:GraphQL请求必须指定Content-Type: application/json,否则API无法正确识别请求体。
  • 使用GraphQL查询:通过query变量定义需要获取的字段,Monday.com API要求POST请求体包含query参数。
  • 修正响应数据提取路径:GraphQL响应的结构是data.boards[0].items,而非原代码中的data。
  • 增加空值判断:避免column_values为空时访问[0].text导致报错。
  • 添加日志打印:方便测试时查看API返回的原始内容,排查潜在问题。

额外排查建议

  • 确认API密钥有访问目标看板的权限,权限不足会返回错误信息而非合法数据。
  • 如果仍有JSON解析错误,查看console.log输出的响应内容,判断是API返回了错误提示还是格式问题。
  • 确保看板ID、表格ID、API密钥都正确填写,无遗漏或多余字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:12:39