LoginSignup
0
0

More than 1 year has passed since last update.

Google ドキュメントでChatGPTを使う(Google Apps Scriptを使ってChatGPTを操作する) 3

Posted at

様々なビジネスツールを作る

code.gs

// API keyとmodelを設定
var apiKey = "こちらにOpenAIのAPI Keyを貼り付ける";
var model = "gpt-3.5-turbo";
var url = "https://api.openai.com/v1/chat/completions";

// メニューを追加
function addMenu() {
  DocumentApp.getUi().createMenu("ChatGPT")
  .addItem("市場調査", "sharerate")
  .addItem("SWOT分析", "swot")
  .addItem("情報収集", "research")
  .addItem("要点整理", "summarization")
  .addToUi();
}

// 市場調査
function sharerate() {
  // 選択テキストの取得
  var doc = DocumentApp.getActiveDocument();
  var selectedText = doc.getSelection().getRangeElements()[0].getElement().asText().getText()

  // もしテキストが選択されていたら
  if(selectedText){
    var content = selectedText + "の市場においてシェア率の高い順に10個の製品名を、それぞれシェア率付きで出してください";

    // ChatGPTに投げる質問/必要な情報を設定
    var temperature= 0; // 生成する応答の多様性
    var maxTokens = 2048; // 生成する応答の最大トークン数(文字数)

    const requestBody = {
      "model": model,
      "messages": [{'role': 'user', 'content': content}],
      "temperature": temperature,
      "max_tokens": maxTokens,
    };
    const requestOptions = {
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Authorization": "Bearer "+apiKey
      },
      "payload": JSON.stringify(requestBody)
    }

    // APIを叩いてChatGPTから回答を取得
    var response = UrlFetchApp.fetch(url, requestOptions);
    var responseText = response.getContentText(); 
    var json = JSON.parse(responseText);
    var result_text = json.choices[0].message.content.trim();

    //ドキュメントに出力
    var addparagraph = doc.getBody().appendParagraph(result_text);
  }
}

// SWOT分析
function swot() {
  // 選択テキストの取得
  var doc = DocumentApp.getActiveDocument();
  var selectedText = doc.getSelection().getRangeElements()[0].getElement().asText().getText()

  // もしテキストが選択されていたら
  if(selectedText){
    var content = selectedText + "のSWOT分析を行ってください";

    // ChatGPTに投げる質問/必要な情報を設定
    var temperature= 0; // 生成する応答の多様性
    var maxTokens = 2048; // 生成する応答の最大トークン数(文字数)

    const requestBody = {
      "model": model,
      "messages": [{'role': 'user', 'content': content}],
      "temperature": temperature,
      "max_tokens": maxTokens,
    };
    const requestOptions = {
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Authorization": "Bearer "+apiKey
      },
      "payload": JSON.stringify(requestBody)
    }

    // APIを叩いてChatGPTから回答を取得
    var response = UrlFetchApp.fetch(url, requestOptions);
    var responseText = response.getContentText(); 
    var json = JSON.parse(responseText);
    var result_text = json.choices[0].message.content.trim();

    //ドキュメントに出力
    var addparagraph = doc.getBody().appendParagraph(result_text);
  }
}

// 情報収集
function research() {
  // 選択テキストの取得
  var doc = DocumentApp.getActiveDocument();
  var selectedText = doc.getSelection().getRangeElements()[0].getElement().asText().getText()

  // もしテキストが選択されていたら
  if(selectedText){
    var content = selectedText + "について3段落構成、合計1500字以内で教えてください";

    // ChatGPTに投げる質問/必要な情報を設定
    var temperature= 0; // 生成する応答の多様性
    var maxTokens = 2048; // 生成する応答の最大トークン数(文字数)

    const requestBody = {
      "model": model,
      "messages": [{'role': 'user', 'content': content}],
      "temperature": temperature,
      "max_tokens": maxTokens,
    };
    const requestOptions = {
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Authorization": "Bearer "+apiKey
      },
      "payload": JSON.stringify(requestBody)
    }

    // APIを叩いてChatGPTから回答を取得
    var response = UrlFetchApp.fetch(url, requestOptions);
    var responseText = response.getContentText(); 
    var json = JSON.parse(responseText);
    var result_text = json.choices[0].message.content.trim();

    //ドキュメントに出力
    var addparagraph = doc.getBody().appendParagraph(result_text);
  }
}


// 要点整理
function summarization() {  
  // 選択テキストの取得
  var doc = DocumentApp.getActiveDocument();
  var selectedText = doc.getSelection().getRangeElements()[0].getElement().asText().getText()

  // もしテキストが選択されていたら
  if(selectedText){
    var content = selectedText + "次の文章を要約してください。" + selectedText;
    // var content = selectedText + "次の文章を小学生でもわかる言葉で要約してください。" + selectedText;

    // ChatGPTに投げる質問/必要な情報を設定
    var temperature= 0; // 生成する応答の多様性
    var maxTokens = 2048; // 生成する応答の最大トークン数(文字数)

    const requestBody = {
      "model": model,
      "messages": [{'role': 'user', 'content': content}],
      "temperature": temperature,
      "max_tokens": maxTokens,
    };
    const requestOptions = {
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Authorization": "Bearer "+apiKey
      },
      "payload": JSON.stringify(requestBody)
    }

    // APIを叩いてChatGPTから回答を取得
    var response = UrlFetchApp.fetch(url, requestOptions);
    var responseText = response.getContentText(); 
    var json = JSON.parse(responseText);
    var result_text = json.choices[0].message.content.trim();

    //ドキュメントに出力
    var addparagraph = doc.getBody().appendParagraph(result_text);
  }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0