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

调用Google Chat API创建空间返回400错误求助

问题排查与解决方案

错误原因

你遇到的400错误核心原因是:Google Chat API创建空间的接口不支持在请求体中传入memberships字段。memberships是独立的资源类型,不能在创建Space时直接嵌套传入,必须单独调用成员添加接口完成成员邀请操作。

此外代码还有两处冗余/不规范问题:

  • URL中携带的key参数多余:已使用OAuth2的Bearer令牌授权,无需额外添加API密钥参数。
  • 虽然ScriptApp.getOAuthToken()的授权方式正确,但需确保已配置对应权限范围(比如https://www.googleapis.com/auth/chat.spaces.create和https://www.googleapis.com/auth/chat.memberships.create)。

修正后的代码

以下是可正常创建空间并批量添加成员的完整代码:

function createRoomWithMembers() {
  var roomName = "ROOM_NAME";
  var spaceMembers = ["SPACE_MEMBER_1@gmail.com", "SPACE_MEMBER_2@gmail.com"];

  // 1. 创建Google Chat空间
  var createSpaceUrl = "https://chat.googleapis.com/v1/spaces";
  var createSpaceOptions = {
    method: "POST",
    muteHttpExceptions: true,
    headers: {
      "Authorization": "Bearer " + ScriptApp.getOAuthToken(),
      "Content-Type": "application/json"
    },
    payload: JSON.stringify({
      displayName: roomName,
      // 可选:指定空间类型,GROUP_CHAT为即时聊天群,默认是带话题的ROOM
      spaceType: "GROUP_CHAT"
    })
  };

  var createResponse = UrlFetchApp.fetch(createSpaceUrl, createSpaceOptions);
  var spaceData = JSON.parse(createResponse.getContentText());
  
  // 检查空间创建状态
  if (createResponse.getResponseCode() !== 200) {
    Logger.log("创建空间失败: " + createResponse.getContentText());
    return;
  }
  var spaceName = spaceData.name; // 格式为"spaces/XXXXXX"
  Logger.log("空间创建成功: " + spaceName);

  // 2. 批量添加成员到空间
  spaceMembers.forEach(function(memberEmail) {
    var addMemberUrl = `https://chat.googleapis.com/v1/${spaceName}/memberships`;
    var addMemberOptions = {
      method: "POST",
      muteHttpExceptions: true,
      headers: {
        "Authorization": "Bearer " + ScriptApp.getOAuthToken(),
        "Content-Type": "application/json"
      },
      payload: JSON.stringify({
        member: {
          user: {
            email: memberEmail
          }
        }
      })
    };

    var memberResponse = UrlFetchApp.fetch(addMemberUrl, addMemberOptions);
    if (memberResponse.getResponseCode() === 200) {
      Logger.log(`成功添加成员: ${memberEmail}`);
    } else {
      Logger.log(`添加成员失败 ${memberEmail}: ${memberResponse.getContentText()}`);
    }
  });
}

关键注意事项

  • 空间类型选择:spaceType设为ROOM是默认的话题式空间,设为GROUP_CHAT是无话题的即时聊天群,可根据需求调整。
  • 权限配置:需在GCP项目的OAuth consent screen中添加chat.spaces.create和chat.memberships.create权限范围,且脚本需重新完成授权流程。
  • 外部成员限制:若邀请外部域用户,需确保你的Google Workspace组织允许外部成员加入Chat空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:23:11