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

