ChatGPTとGASを組み合わせるメリットについてChatGPT APIを使えば、文章の要約や整形を自動化できます。
しかし、非エンジニアにとってAPIはやや敷居が高く感じるもの。そこで、GASを介してGoogleスプレッドシートとつなぐことで、誰でも簡単に文章要約を自動化できるようになります。
これにより、営業日報や議事録、レビューコメントなどをワンクリックで短くまとめることが可能です。
まずはOpenAIのAPIキーを取得します(OpenAI公式サイトで発行可能)。
次にGoogleスプレッドシートを用意し、A列に元文章、B列に要約結果を表示する想定で作業を進めます。
スプレッドシートから文章を取得し、ChatGPT API(GPT-4o-mini など軽量モデル推奨)に渡して要約を受け取るGASコードです。
APIはPOSTメソッドで呼び出し、返ってきたJSONの本文を解析して書き込みます。
const API_KEY = 'YOUR_OPENAI_API_KEY';
const MODEL = 'gpt-4o-mini';
function summarizeText(text) {
const url = 'https://api.openai.com/v1/chat/completions';
const payload = {
model: MODEL,
messages: [{role: "user", content: `次の文章を100文字以内で要約してください: ${text}`}],
temperature: 0.7
};
const options = {
method: 'post',
contentType: 'application/json',
headers: { 'Authorization': `Bearer ${API_KEY}` },
payload: JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
return data.choices[0].message.content.trim();
}
A列に文章を入れてB列に要約を書き込む関数を作成します。
必要に応じてトリガーを設定すれば、定期的に要約処理を走らせることも可能です。
function summarizeSheet() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
for (let i = 2; i <= lastRow; i++) { // 1行目はヘッダー
const text = sheet.getRange(i, 1).getValue();
if (text && !sheet.getRange(i, 2).getValue()) {
const summary = summarizeText(text);
sheet.getRange(i, 2).setValue(summary);
Utilities.sleep(1500); // API呼び出し間隔調整
}
}
}
GASのスクリプトをスプレッドシートのボタンに割り当てれば、クリックだけで要約を実行できます。
また、カスタムメニューを追加することで、より直感的に使えるUIを提供できます。
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('AIツール')
.addItem('選択範囲を要約', 'summarizeSheet')
.addToUi();
}
今回は「GASでChatGPT APIを使ってスプレッドシートの文章を自動要約する仕組みを作る」というテーマで紹介してきました。ChatGPTをうまく使いこなすことで以下のようなメリットがあります。フル活用して行きましょう!
・ChatGPT APIとGASを組み合わせることで、文章要約を簡単に自動化できます。
・スプレッドシートと連携することで、非エンジニアでも直感的に利用可能。
・今回の仕組みは、翻訳・文章校正・キャッチコピー生成などにも応用できます。
また、APIの仕様変更やうまく動作しないなどがありましたら、遠慮なくコメントまでお寄せください!