![見出し画像](https://assets.st-note.com/production/uploads/images/132027816/rectangle_large_type_2_f20f621f622c950e196620d29318524e.jpeg?width=800)
ChatGPTスプレッドシート活用のススメ(コード付き)
あんまり言う人いないけど、ChatGPTは毎回、中の人が変わるんですよ。
つまり、実行するたびに「提案されるアイデアが違う」
だから、スプレッドシートに組み込み、テンプレート化して、実行の都度回答を読み込むことで新たな提案を受けることができるのです。
以下の例では、パラメータとして、
「過去の成功体験に甘え、バブル期以降リソースを食いつぶすのみで内外環境への感受性や対応力を失ってしまった日本企業を蘇らせるための施策を5個提示し、あわせてその実行時の課題を示せ。なお、語尾に「ニャン」をつけて親しみを出せ。」
と与えています。
![](https://assets.st-note.com/img/1679175239610-ddrhTtY4Hh.png?width=800)
以下のような回答が得られます。
![](https://assets.st-note.com/img/1679175371965-AvNc22YXWR.png?width=800)
![](https://assets.st-note.com/img/1679175662971-odjGof8wwe.png?width=800)
![](https://assets.st-note.com/img/1679175769204-zSDEaopr2d.png?width=800)
ね、大枠はそれほど変わりませんが、それぞれで異なる気付きポイントが含まれています。自分の環境にあった完全な正解というのは不可能ですから、複数の見方が欲しいですよね。履歴で持てるのは、知識の蓄積になって大変役立ちます。
コード:Google スプレッドシートの各行に設置された生成ボタンに割り当てるため、該当行を指定して実行するスクリプトを用意しています。
(別のところでも書きましたが、セル関数でなくボタン割り当てにすると、30秒タイムアウトにならなくて便利なのです。。ただし他の人が使うとエラーになります、諸刃の刃。セル関数なら共有可。)
function GPT1(){
GPT(4)
}
function GPT2(){
GPT(5)
}
function GPT3(){
GPT(6)
}
function GPT4(){
GPT(7)
}
function GPT5(){
GPT(8)
}
function GPT6(){
GPT(9)
}
function GPT7(){
GPT(10)
}
function GPT8(){
GPT(11)
}
function GPT9(){
GPT(12)
}
function GPT10(){
GPT(13)
}
function GPT11(){
GPT(14)
}
function GPT12(){
GPT(15)
}
function GPT(column) {
const sheet = SpreadsheetApp.getActiveSheet();
const query = sheet.getRange(column,2).getValue();
//APIキーを読み込む
const SECRET_KEY = ScriptProperties.getProperty('APIKEY');
//ChatGPTのAPIのエンドポイントを設定する
const url = "https://api.openai.com/v1/chat/completions";
const messages = [
{'role': 'user', 'content': query }
];
//OpenAIのAPIリクエストに必要なヘッダー情報を設定する
const headers = {
'Authorization':'Bearer '+ SECRET_KEY,
'Content-type': 'application/json',
'X-Slack-No-Retry': 1
};
//OpenAIのAPIリクエストに必要なヘッダー情報を設定
const options = {
'muteHttpExceptions' : true,
'headers': headers,
'method': 'POST',
'payload': JSON.stringify({
'model': 'gpt-3.5-turbo',
'max_tokens' : 1024,
'temperature' : 1,
'messages': messages})
};
const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText()) ;
//return res.choices[0].message.content;
sheet.getRange(column, 4).setValue(res.choices[0].message.content);
}
この記事が気に入ったらサポートをしてみませんか?