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

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

```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);
  }
}
```