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

求助:使用Guilded预发布API批量导出用户及ID到Google表格

解决Guilded API批量导出用户列表到Google Sheets的问题

1. 先排查API返回的数据结构

Guilded预发布API的成员列表接口返回的响应通常是嵌套结构,比如:

{
  "data": [
    {
      "user": {
        "id": "abc123",
        "name": "UserName"
      }
    }
  ]
}

如果你直接把整个响应对象赋值给data变量,然后用data.length判断循环条件,会因为对象没有length属性导致循环根本不执行——这就是循环内Logger.log无输出的核心原因。

正确的做法是提取响应里的用户数组:

var response = UrlFetchApp.fetch('GUILDED_API_SERVER_MEMBERS_URL', options);
var apiResponse = JSON.parse(response.getContentText());
var userList = apiResponse.data; // 若API返回的数组字段是members,则改为apiResponse.members

之后用userList.length作为循环的判断条件。

2. 修复循环与日志输出

基于正确的用户数组调整循环逻辑:

for (var i = 0; i < userList.length; i++) {
  var user = userList[i].user; // 若API返回的用户对象直接在数组元素中,改为userList[i]
  Logger.log('用户名:%s,ID:%s', user.name, user.id);
}

如果仍无日志输出,先打印数组本身确认结构:

Logger.log(JSON.stringify(userList));

检查数组是否包含多个元素,以及用户对象的字段名是否匹配(比如部分场景下用户名字段是username而非name)。

3. 批量写入Google Sheets到A10:B区域

先整理数据为二维数组,再一次性写入表格,避免逐个写入的低效问题:

// 整理成[用户名, 用户ID]的二维数组
var sheetData = [];
for (var i = 0; i < userList.length; i++) {
  var user = userList[i].user;
  sheetData.push([user.name, user.id]);
}

// 写入目标表格区域
var spreadsheet = SpreadsheetApp.openById('1ZUZ6utQO6cW_BAy6cMACxX2H1_zrZAIE0CTtTmdN9nc');
var sheet = spreadsheet.getActiveSheet(); // 或指定工作表:getSheetByName('Sheet1')
var targetRange = sheet.getRange(10, 1, sheetData.length, 2);
targetRange.setValues(sheetData);

4. 排查Payload/请求问题

若怀疑请求参数有问题,开启异常捕获并打印响应内容:

var options = {
  'method': 'get',
  'headers': {
    'Authorization': 'Bearer YOUR_GUILDED_AUTH_TOKEN' // 确保令牌有效
  },
  'muteHttpExceptions': true // 开启后可捕获错误响应
};

// 打印响应内容排查问题
Logger.log(response.getContentText());

确认API返回200状态码,且响应体包含正确的用户数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:24:15