调用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
相关产品推荐
相关产品推荐

