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

Google Apps Script Postman请求返回HTML而非JSON问题排查

问题根因

Postman请求返回HTML而非预期JSON,由两个常见问题导致:

  • Web App访问权限配置不当,未携带有效身份凭证的请求会被Google重定向到账号登录页面,返回内容为登录页HTML
  • 响应未配置跨域允许头,非浏览器环境的请求可能被拦截,返回默认错误HTML页
修复方案

1. 调整Web App部署配置

  • 点击编辑器右上角「部署」-「管理部署」,选择新建版本
  • 「执行身份」选择我自己
  • 「谁有权访问」选项,若需要公开调用接口选择任何人(含匿名用户);如果需要限制访问,Postman请求时必须携带对应权限的OAuth2令牌,否则会被重定向
  • 完成部署后复制新版本的Web App URL,旧版本URL不会加载修改后的代码

注意:如果选择了匿名访问权限,首次在浏览器打开新部署的URL时,需要按提示完成授权确认,之后接口才会正常响应。

2. 修正代码逻辑

原有代码逻辑基本正确,只需要补全跨域响应头,去掉冗余的返回逻辑即可,修改后完整代码如下:

const doGet = (e) => {
  return getPictures();  
}

const getPictures = () =>
{
    const destination_id = 'FOLDER FILE ID';  // 替换为实际目标Google Drive文件夹ID
    const destination = DriveApp.getFolderById(destination_id);
    
    const files = destination.getFiles();
    const file_array = [];

    while (files.hasNext()) 
    {
      let file = files.next();
      let src = "https://drive.google.com/uc?export=view&id=" + file.getId()
      file_array.push({
        "src": src, 
        "height": randomInteger(3,6), 
        "width": randomInteger(3,6)
      });
    }

    const output = ContentService.createTextOutput(JSON.stringify(file_array))
    .setMimeType(ContentService.MimeType.JSON);
    // 配置跨域允许头,适配工具类请求
    output.headers = {
      "Access-Control-Allow-Origin": "*"
    };
    return output;
}

const randomInteger = (min, max) => {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

3. Postman侧测试注意事项

  • 测试时关闭Postman的自动Cookie携带功能,避免残留的Google账号Cookie干扰鉴权
  • 请求方法选择GET,不要加多余的请求头、请求体,直接访问部署后的URL即可拿到JSON响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:27:17