将 ChatGPT API 与 Google Apps 脚本结合使用

ChatGPT 是近来备受关注的话题。幸运的是,OpenAI 公司提供了 ChatGPT 的公共 API,这意味着我们可以从 Google Apps Script 连接到 ChatGPT。太好了!

为了理解如何使用 API,让我们想象一下,我们在一个房地产机构工作,我们的代理人会巡视新房产,记录每个房产的情况,并利用他们的笔记为房产概述撰写。我们可以使用 ChatGPT API,提供代理人的笔记,并自动接收到引人入胜的概述。

首先,我有一个 Google 表格,其中包含房产条目。每行代表一个房产。该表具有描述地块、结构、卧室等的各种列。表格如下:

接下来,在 Google 表格中,单击“扩展程序”,并选择“Apps Script”。单击齿轮图标,向下滚动到“脚本属性”。单击“添加脚本属性”。在“属性”中输入“openAIKey”,在“值”中粘贴您的 API 密钥。单击“保存脚本属性”。然后单击“编辑器”按钮以返回代码屏幕。在“Code.gs”内创建一个全局对象,我们将使用它来存储我们脚本所需的一些数据元素:

复制您的子文件夹 ID(它是地址栏中文件夹 URL 结尾的一系列字符)并将其粘贴到“g”对象的“folderId”属性内。

ChatGPT API 请求

我们可以创建 ChatGPT 请求函数来使用静态提示。这将帮助我们理解如何构造我们的代码。以下是该函数:

上述函数使用一个静态功能列表的单个字符串。它从属性服务中获取 API 密钥。它具有 ChatGPT API URL,以及一个“选项”对象,该对象将请求方法定义为 POST,将 Bearer 授权头和有效负载。后者是一个字符串化的对象,其中包括提示、语言模型、温度(在 0 和 2 之间的值,基本上指示 ChatGPT 应该多有创意)以及响应中的最大令牌数。

然后函数进行调用,检索文本内容并记录它。当您运行该函数时,您应该会看到一个字符串对象,其中包括一个很好的概述,其中包含我们列出的功能在“choices”数组内。

现在我们需要稍微修改函数,以便它在调用时可以接收到功能而不是使用静态功能:

上面,我们将功能作为函数参数接收,因此我们不需要在函数内声明变量。我们还删除了获取 API 密钥的行:我们希望这样做一次,而不是每次使用新的属性

使用Google Apps Script的ChatGPT API

ChatGPT如今在每个人的脑海中都很有名。幸运的是,OpenAI公司为ChatGPT提供了一个公共API,这意味着我们可以从Google Apps Script连接到ChatGPT。太棒了!

为了理解如何使用API,让我们想象一下我们在一个房地产代理机构工作,我们的代理人巡视新房产,记录每个房产的注释,并使用他们的游览笔记撰写房产概述,以便发布在MLS上。我们可以使用ChatGPT API来提供代理人的笔记,并自动接收引人入胜的概述。

要开始使用,我有一个Google表格,里面有房地产条目。每行代表一个房产。表格有描述地块、结构、卧室等的各种列。表格如下:

接下来,在Google表格中,单击“扩展程序”,选择“应用脚本”。单击齿轮图标,向下滚动到“脚本属性”。单击“添加脚本属性”。在“属性”中输入“openAIKey”,在“值”中粘贴您的API密钥。单击“保存脚本属性”。单击“编辑器”按钮返回代码屏幕。在“Code.gs”内部,创建一个全局对象,我们将使用它来存储几个脚本需要的数据元素:

复制您的子文件夹的ID(它是地址栏中文件夹URL末尾的字符序列)并将其粘贴到“g”对象的“folderId”属性中。

ChatGPT API请求

为了开始,我们可以创建ChatGPT请求函数,该函数将使用静态提示。它将帮助我们了解如何构造我们的代码。以下是该函数:

function callChatGPT() { const features = Large lot in a cul-de-sac. Privacy fence on all sides. High ceilings. Natural light.; const scriptProps = PropertiesService.getScriptProperties(); g.apiKey = scriptProps.getProperty('openAIKey'); if (!g.apiKey) { throw new Error(ChatGPT API Key script property is missing); }
const apiUrl = 'https://api.openai.com/v1/completions'; const options = { method: 'post', headers: { Authorization: Bearer ${g.apiKey}, 'Content-Type': 'application/json', }, muteHttpExceptions: true, payload: JSON.stringify({ prompt: Write a real-estate property overview using the following property features: ${features}, model: 'text-davinci-003', temperature: 1, max_tokens: 150, }), }; const response = UrlFetchApp.fetch(apiUrl, options); const content = response.getContentText(); console.log(content); }

上面的函数使用单个字符串中的静态功能列表。它从属性服务中获取API密钥。它具有ChatGPT API URL,以及“options

接下来让我们编写代码来从 Google Sheet 中读取数据,并调用 ChatGPT API 生成摘要。下面是代码:

function createSummaries() { const scriptProps = PropertiesService.getScriptProperties(); g.apiKey = scriptProps.getProperty('openAIKey'); if (!g.apiKey) { throw new Error(`ChatGPT API 密钥缺失`); } // 通过 ID 获取 Google Drive 文件夹: g.folder = DriveApp.getFolderById(g.folderId); const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName('房产经纪人笔记'); const data = sh.getDataRange().getValues(); data.splice(0, 1); data.forEach((row, i) => { if (!row[0]) { const features = row.slice(3, row.length).join(' '); const text = callChatGPT(features); if (text) { const name = row[2]; const doc = DocumentApp.create(name); const body = doc.getBody(); body.appendParagraph(text); doc.saveAndClose(); const file = DriveApp.getFileById(doc.getId()); file.moveTo(g.folder); const fileUrl = file.getUrl(); sh.getRange(`A${i + 2}`).setFormula( `=HYPERLINK("${fileUrl}", "查看摘要")` ); } } }); SpreadsheetApp.flush(); }

在以上代码中,我们首先获取了 API 密钥,然后获取了名为 "房产经纪人笔记" 的 Google Sheet,并将其数据读入一个二维数组中。

接着,我们遍历每一行数据,并检查是否在第一列中存在空值。如果存在空值,我们将该行中第三列及其之后的单元格的值拼接起来,并调用之前编写的 callChatGPT 函数来生成摘要。如果生成了摘要,我们就将其添加到一个新的 Google Doc 中,并将该文档保存到 Google Drive 中指定的文件夹内。接下来,我们将该文档的链接插入到该行数据中的第一列中。

最后,我们使用 SpreadsheetApp.flush() 函数来确保所有数据都已保存到 Google Sheet 中。

如果您现在运行 createSummaries 函数,您的 Google Sheet 将会被填充上生成的摘要链接。


壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(98) 打赏

评论列表 共有 128 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部