橋本翼(ツバサムス)

メタバースプログラマー。
UnityとUnreal Engineを専門的に扱う。
メタバース系スタートアップ企業に所属。

詳細はこちら

【作品紹介(GAS)】AutoResearcher(Google スプレッドシート)

Google Apps Script

はじめに

概要

作品名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以上の場合でも問題無く動作できるように「隣のセルの処理が終わったら自分のセルの処理を行う」という仕様にした
  • ユーザーが任意のテキストに変更できるセルのみを青色に変更した事で「どこのテキストを好きに変えられるのか」をユーザーに分かり易くした
  • セルの大きさをデータに合わせて自動調節するように設定した事で、出力後の各セルのテキストを読み易くした

お問い合わせ

    コメント

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