はじめに
概要
作品名 | Auto Researcher |
制作期間 | 2023.03.28~2023.03.29 (2日) |
制作形式 | 受注制作 |
受注金額 | 0円 |
勤務先の社内用ツールのため受注金額は0円
使用動画
内容
コード
AutoResearcher.gs
function GPT(prompt,myColumn,myRow,targetCellValue = null)
{
if(targetCellValue != null)
{
targetCellValue = targetCellValue.toString();
if(targetCellValue != null && targetCellValue.includes("(完了)")) Utilities.sleep(5000);
}
if(myColumn == 1 && myRow != 5)
{
const SHEET = SpreadsheetApp.getActiveSheet();
const OTHER_NAME_CELL_VALUES = SHEET.getRange(5,1,myRow - 5).getValues();
prompt = OTHER_NAME_CELL_VALUES + "以外の" + prompt;
}
const PAYLOAD =
{
model: "text-davinci-003",
prompt: prompt,
temperature: 0.3,
max_tokens: 1000
};
const HEADERS =
{
Authorization: "Bearer " + "sk-xxxxxx"
};
const OPTIONS =
{
contentType: "application/json",
headers: HEADERS,
payload: JSON.stringify(PAYLOAD),
};
const RESPONSE = JSON.parse(UrlFetchApp.fetch("https://api.openai.com/v1/completions", OPTIONS).getContentText());
return RESPONSE.choices[0].text.trim();
}
出来るようになった事
「Google スプレッドシート」側
- 「Google Apps Script」で作成した自作関数の呼び出しと引数の利用
- 「IF()」を使用した、条件分岐
- 「比較演算子」を使用した、条件分岐の条件の設定
- 「演算子」を使用した、四則演算
- 「COLUMN()」を使用した、セルの列番号の取得
- 「ROW()」を使用した、セルの行番号の取得
「Google Apps Script」側
- 「const型」の変数の宣言と使用
- 「let型」の変数の宣言と使用
- 「function」を使用した、自作関数の宣言
- 「JSON.stringify()」を使用した、JSON形式への変換
- 「JSON.parse()」を使用した、JSON形式の取得と変換
- 「UrlFetchApp.fetch()」を使用した、HTTPリクエストの実行とHTTPレスポンスの取得
- 「getContentText()」を使用した、HTTPレスポンスからの文字列の取得
- 「trim()」を使用した、不要な文字列の削除
- 「toString()」を使用した、「string型」への変換
- 「indexOf()」を使用した、「特定の文字列をデータの中に含むかどうか」の確認
- 「Utilities.sleep()」を使用した、一定時間の待機処理
- 「SpreadsheetApp.getActiveSheet()」を使用した、有効な「Google スプレッドシート」の取得
- 「getRange()」を使用した、セルの範囲の取得
- 「getValues()」を使用した、特定の範囲のセルの値の取得
工夫した点
- ユーザーが指定した「調査数」内のセルかどうかを判断する時の条件分岐を「Google Apps Script」ではなく「Google スプレッドシート」側に記述した事で処理の負担を軽減した
- 「名称」列においてGPTが同じ回答をする事が無いようにプロンプトを修正した
- 調査数が2以上の場合でも問題無く動作できるように「隣のセルの処理が終わったら自分のセルの処理を行う」という仕様にした
- ユーザーが任意のテキストに変更できるセルのみを青色に変更した事で「どこのテキストを好きに変えられるのか」をユーザーに分かり易くした
- セルの大きさをデータに合わせて自動調節するように設定した事で、出力後の各セルのテキストを読み易くした
コメント