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

在Google Apps Script中调用DALL-E函数遇openai未定义错误,求解决方案

解决Google Sheets中调用DALL-E API时‘openai is not defined’的问题

错误原因

Google Apps Script环境没有内置OpenAI的官方SDK,你代码里用的openai.Image.create是Node.js环境的写法,在GAS里无法直接识别,所以会报未定义错误。

正确实现方式

改用Google Apps Script内置的UrlFetchApp发送HTTP请求调用OpenAI图像生成API,以下是修正后的代码:

function dalle() {
  const setSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
  const apiKey = setSheet.getRange(8, 2).getValue();
  
  // 构造API请求参数
  const requestBody = {
    prompt: "a white siamese cat",
    n: 1,
    size: "1024x1024"
  };
  
  // 设置请求头部
  const headers = {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json"
  };
  
  // 配置请求选项
  const options = {
    method: "POST",
    headers: headers,
    payload: JSON.stringify(requestBody),
    muteHttpExceptions: true // 启用后可捕获HTTP错误
  };
  
  try {
    // 发送请求到OpenAI API
    const response = UrlFetchApp.fetch("https://api.openai.com/v1/images/generations", options);
    const responseData = JSON.parse(response.getContentText());
    
    // 获取生成的图片URL
    const imageUrl = responseData.data[0].url;
    // 可添加将URL写入单元格的逻辑,示例:
    // setSheet.getRange(10, 2).setValue(imageUrl);
    
    Logger.log("生成的图片URL:" + imageUrl);
  } catch (error) {
    Logger.log("API调用出错:" + error.toString());
  }
}

关键说明

  • 请求格式:必须将请求体转为JSON字符串,头部需包含Authorization(格式为Bearer 你的API密钥)和Content-Type: application/json
  • 错误处理:启用muteHttpExceptions可捕获HTTP状态码错误(如API密钥无效、额度不足等),避免脚本直接崩溃
  • 权限授权:第一次运行脚本时,需要授权允许UrlFetchApp访问外部网站
  • 功能扩展:可自行添加代码将生成的图片URL写入指定单元格,方便在表格中直接查看

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:50:16