「ChatGPT」×「Google Sheets」で情報収集を自動化

AI

「ChatGPT」×「Google Sheets」(スプレッドシート)で情報収集を自動化する方法をご紹介します。

【完成イメージ】
A列に企業名を入力すると、B、C、D列に予め指定した情報(データ)を自動で収集します。

ChatGPTについて、詳しく知りたい方は以下の記事をご確認下さい。

では早速、手順を解説していきます。

API Keysの取得

OpenAI APIhttps://beta.openai.com/account/api-keys)のリンクに接続します。
以下のページが表示されたら、「+ Create new secret key」をクリックします。

自動でAPI Keyが生成されますので、シークレットキーをコピー(緑色のボタン)して、メモ帳などの忘れない場所に保存しておきます。

Google Sheetsのスクリプト設定

Google Sheetshttps://www.google.com/intl/ja_jp/sheets/about/)のリンクに接続します。
以下のページが表示されたら、「スプレッドシートに移動」をクリックします。

スプレッドシートを選択する画面になりましたら、新規で作成するため、「空白」を選択します。

「無題のスプレッドシート」が開きます。(題目はクリックして変更可能です)

見出しの「拡張機能」>「Apps Script」を選択します。

Apps Scriptが開いたら、デフォルトで入力されているコードを全て削除します。

そして、以下のコードを全文コピーして貼り付けます。

/**
* GPT-3 and Google Sheets
* @param {string} prompt Prompt.
* @param {number} temperature (Optional) Temperature.
* @param {string} model (Optional) GPT-3 Model.
* @return Response returned by GPT-3.
* @customfunction
*/

const SECRET_KEY = "API keysで取得したシークレットキーを入力";

//const MAX_TOKENS = 10;
const MODEL_NAME = "text-davinci-003"; // more structured and deterministic: for data
//const MODEL_NAME = "davinci"; // more flexible and creative: for stories, chatbots
const MODEL_TEMP = 0.3;

function GPT(prompt,max_tokens=30) {
const url = "https://api.openai.com/v1/completions";
const payload = {
model: MODEL_NAME,
prompt: prompt,
temperature: MODEL_TEMP,
//max_tokens: MAX_TOKENS,
max_tokens: max_tokens
};

const options = {
contentType: "application/json",
headers: { Authorization: "Bearer " + SECRET_KEY },
payload: JSON.stringify(payload),
};
const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
return res.choices[0].text.trim();
}

以下の部分のみ、先ほどご自身で取得したシークレットキーを入力します。(” “は消さないように注意して下さい)

const SECRET_KEY = “API keysで取得したシークレットキーを入力”;

入力を終えたら、上部の「保存ボタン」をクリックします。

「シークレットキーの入力」と「保存」を終えたら、上部の「実行」をクリックします。

承認が必要です。という画面が出ましたら、「権限を確認」をクリックします。

Googleアカウントのログイン画面に移りますので、ご自身のアカウントを選択してログインします。

以下の画面が出ましたら、「詳細」をクリックします。

「無題のプロジェクト(安全ではないページ)に移動」をクリックします。(安全なので安心して作業を進めて下さい)

許可」をクリックします。

正常に実行が完了したことを確認します。

以上で設定は完了です。

Google Sheetsのセル設定

別タブで開いている「Google Sheets」に移ります。
セルに、GPT関数を織り込むことで、ChatGPTの回答を転記することが出来ます。

【GPT関数】
GPT(“質問内容”, 最大トークン数(文字数))
※1000トークンは約750単語

試しに「A1セル」に「トヨタ自動車」と入力します。
そして、「B1セル」に「=IF(ISBLANK(A1),,GPT(“2020年の”&A1&”の社長の名前だけ記入してください。”,100))」と入力します。ChatGPTが「B1セル」に自動で入力してくれます。

AB
1トヨタ自動車=IF(ISBLANK(A2),,GPT(“2020年の”&A2&”の社長の名前だけ記入してください。”,100))

ISBLANK関数は「テストの対象」の引数が、「空白」かどうかを判定します。今回は引数にA2セルを指定しているので、A2セルが「空白」であれば、処理をせず、空白でなければ、GPT(〜)を実行するという処理です。目的として、A2セルが「空白」の時に、B、C、D列にエラー値が表示されるのを防ぐ目的で入れています。

最初にお示したしたサンプルと同じにするには、各セルに以下のように入力します。
なお、2行目以降は、2行目をコピーすればOKです。例えば、「B2セル」をアクティブにして、「B2セル右下の◾️」を下にドラッグすると手軽にコピー出来ます。(Excelと同様)

ABCD
1企業社長(2020年時点)代表する製品2015-2020年の売上高
2トヨタ自動車=IF(ISBLANK(A2),,GPT(“2020年の”&A2&”の社長の名前だけ記入してください。”,100))=IF(ISBLANK(A2),,GPT(A2&”の代表する6つの製品名、サービス名を・で区切って箇条書きで記入してください。”,100))=IF(ISBLANK(A2),,GPT(A2&”2015年から2020年までの売上高を記入してください。”,100))
3Tesla, Inc.
A
上をコピーして貼り付ける上をコピーして貼り付ける上をコピーして貼り付ける
4Apple, Inc.
5Microsoft Corporation

A列を変更することで、B、C、D列が自動で更新されます。

また、情報収集する際には、見栄えや統一感も大事になりますので、なるべく人の手をかけずに済むように、ChatGPTに出来ることはお願いしておきます。今回の例では、以下がポイントです。

「B2セル」:社長の名前”だけ” → 書かないと、「〇〇会社のCEOは〜です」と文章で返ってくる
「C2セル」:”・で区切って箇条書き” → 書かないと、文章で返ってきたり、区切り文字がバラバラになる

情報収集の様々な用途に使えると思いますので、是非、色々と試してみて下さい。

より深く理解したい方のために、Apps Scriptの解説を最後に付けます。

Apps Scriptの解説

/**
* GPT-3 and Google Sheets
* @param {string} prompt Prompt.
* @param {number} temperature (Optional) Temperature.
* @param {string} model (Optional) GPT-3 Model.
* @return Response returned by GPT-3.
* @customfunction
*/

const SECRET_KEY = "API keysで取得したシークレットキーを入力";

//const MAX_TOKENS = 10;
const MODEL_NAME = "text-davinci-003"; // more structured and deterministic: for data
//const MODEL_NAME = "davinci"; // more flexible and creative: for stories, chatbots
const MODEL_TEMP = 0.3;

function GPT(prompt,max_tokens=30) {
const url = "https://api.openai.com/v1/completions";
const payload = {
model: MODEL_NAME,
prompt: prompt,
temperature: MODEL_TEMP,
//max_tokens: MAX_TOKENS,
max_tokens: max_tokens
};

const options = {
contentType: "application/json",
headers: { Authorization: "Bearer " + SECRET_KEY },
payload: JSON.stringify(payload),
};
const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
return res.choices[0].text.trim();
}

GPT-3モデルは異なるタスクに適した4つの主要モデルを提供しています。Davinciは最も能力の高いモデルであり、Adaは最速という特徴があります。今回はDavinciを使用しています。

const MODEL_NAME = "text-davinci-003"; 
最新モデル説明最大リクエスト数訓練データ
text-davinci-003Most capable GPT-3 model. Can do any task the other models can do, often with higher quality, longer output and better instruction-following. Also supports inserting completions within text.4,000 tokensUp to Jun 2021
text-curie-001Very capable, but faster and lower cost than Davinci.2,048 tokensUp to Oct 2019
text-babbage-001Capable of straightforward tasks, very fast, and lower cost.2,048 tokensUp to Oct 2019
text-ada-001Capable of very simple tasks, usually the fastest model in the GPT-3 series, and lowest cost.2,048 tokensUp to Oct 2019
https://platform.openai.com/docs/models/gpt-3

【GPT関数】
GPT(“質問内容”, 最大トークン数(文字数))
※1000トークンは約750単語

以下のコードで、GPT関数で、最大トークン数を指定できるようにしています。GPT関数で指定しないと、最大トークン数 = 30になる設定です。

function GPT(prompt,max_tokens=30) {
const url = "https://api.openai.com/v1/completions";
const payload = {
model: MODEL_NAME,
prompt: prompt,
temperature: MODEL_TEMP,
//max_tokens: MAX_TOKENS,
max_tokens: max_tokens
};

APIの使用料

実は、APIの使用は有料です。また、使用する言語モデルによっても、費用は変わりますので、費用対効果を考えて、適切な言語モデルを選択することをお勧めします。詳しくは以下の記事で解説しています。

タイトルとURLをコピーしました