ChatGPTを使ってGoogleドキュメントで記事を書く方法:設定方法・使い方を紹介

2023年2月24日

ChatGPTを使ってGoogleドキュメントを接続して記事を書く方法を紹介します。

使ってみたいけど、やり方が分からないという人のために、やり方を分かりやすく説明します。どういうものなのかを知っておいて損はないです。

悪用厳禁です。

ChatGPTとGoogleスプレッドシートを連携する方法はこちら

ChatGPTとGoogleドキュメントの接続方法

下記の手順で、誰でも簡単に設定できます。

ChatGPTとGoogleドキュメントの接続設定

  • 1)OpenAIからAPIキーを取得
  • 2)Googleドキュメントにスクリプトを保存

1)OpenAIからAPIキーを取得

まず、OpenAIからAPIキーを取得します。

下記のURLにアクセスして、ログイン画面が表示されたら、Googleアカウントを使って登録しましょう。

「API Keys」の取得画面が表示されたら「Create new secret key」ボタンをクリックして、表示されたAPIキーをコピーしてください。

ChatGPTとGoogleドキュメントを接続して使う時のAPIキーの取得方法

2)Googleドキュメントにスクリプトを保存

次にGoogleドキュメントを開いて「拡張機能」>「Apps Script」をクリックします。

ChatGPTとGoogleドキュメントを接続して使う時は、Apps Scriptに指定のスクリプトを保存する

表示されたApps Script画面には、すでに文字が書かれていると思いますが、これを全て削除し、下記のスクリプトをコピペしてください。

// Googleドキュメントメニュー追加
function onOpen() {
 DocumentApp.getUi().createMenu("ChatGPT")
 .addItem("目次作成", "generateIdeas")
 .addItem("記事作成", "blogwriting")
 .addItem("自由質問", "generateall")
 .addItem("画像作成", "generateImage")
 .addToUi();
}

 
// APIキー&モデル設定
var apiKey = "xxxxxxxxxxxx";
var model = "text-davinci-003";

 
// 目次作成
function generateIdeas() {
var doc = DocumentApp.getActiveDocument();
var selectedText = doc.getSelection().getRangeElements()[0].getElement().asText().getText();
var body = doc.getBody();
var prompt = selectedText + "で記事を書く時のアイディアを出して";
temperature = 0.5;
maxTokens = 2048;
const requestBody = {
  "model": model,
  "prompt": prompt,
  "temperature": temperature,
  "max_tokens": maxTokens,
};
const requestOptions = {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer "+apiKey
  },
  "payload": JSON.stringify(requestBody)
}
const response = UrlFetchApp.fetch("https://api.openai.com/v1/completions", requestOptions);
var responseText = response.getContentText();
var json = JSON.parse(responseText);
para = body.appendParagraph(json['choices'][0]['text']);
}


// 記事作成
function blogwriting() {
var doc = DocumentApp.getActiveDocument();
var selectedText = doc.getSelection().getRangeElements()[0].getElement().asText().getText();
var body = doc.getBody();
var prompt = selectedText + "でブログ記事を書いて";
temperature = 0.5;
maxTokens = 2048;
const requestBody = {
  "model": model,
  "prompt": prompt,
  "temperature": temperature,
  "max_tokens": maxTokens,
};
const requestOptions = {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer "+apiKey
  },
  "payload": JSON.stringify(requestBody)
}
const response = UrlFetchApp.fetch("https://api.openai.com/v1/completions", requestOptions);
var responseText = response.getContentText();
var json = JSON.parse(responseText);
para = body.appendParagraph(json['choices'][0]['text']);
}

// 自由質問
function generateall() {
var doc = DocumentApp.getActiveDocument();
var selectedText = doc.getSelection().getRangeElements()[0].getElement().asText().getText();
var body = doc.getBody();
var prompt = selectedText;
temperature = 0.5;
maxTokens = 1024;
const requestBody = {
  "model": model,
  "prompt": prompt,
  "temperature": temperature,
  "max_tokens": maxTokens,
};
const requestOptions = {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer "+apiKey
  },
  "payload": JSON.stringify(requestBody)
}
const response = UrlFetchApp.fetch("https://api.openai.com/v1/completions", requestOptions);
var responseText = response.getContentText();
var json = JSON.parse(responseText);
para = body.appendParagraph(json['choices'][0]['text']);
}


// 画像作成 256x256、512x512、1024x1024で指定可能
function generateImage() {
var doc = DocumentApp.getActiveDocument();
var selectedText = doc.getSelection().getRangeElements()[0].getElement().asText().getText();
var body = doc.getBody();
temperature = 0;
maxTokens = 2000;
var prompt2 = "Generate images for " + selectedText;
const requestBody2 = {
  "prompt": prompt2,
  "n": 1,
  "size": "512x512"
};
const requestOptions2 = {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer "+apiKey
  },
  "payload": JSON.stringify(requestBody2)
}
const response2 = UrlFetchApp.fetch("https://api.openai.com/v1/images/generations", requestOptions2);
var responseText = response2.getContentText();
var json = JSON.parse(responseText);
var url1=json['data'][0]['url'];
body.appendImage(UrlFetchApp.fetch(url1).getBlob());
}

参考:mustafabutt-dev/chatgpt-and-google-docs.gs

貼り付けたスクリプトの中の「xxxxxxxxxxxx」の部分だけを最初に取得した「APIキー」に置き換えてください。

そして「プロジェクトを保存」アイコンをクリックし、「実行」ボタンをクリックします。

ChatGPTとGoogleドキュメントを接続して使う時のスクリプトの編集と保存方法

もし「承認が必要です」という画面が表示されたら「権限を確認」をクリックしてください。

ChatGPTとGoogleドキュメントを接続して使う時は権限認証が必要

手順に従って自分のGoogleアカウントで権限を許可してください。

ChatGPTとGoogleドキュメントを接続して「このアプリはGoogleで確認されていません」と表示された場合

赤いポップアップ画面が表示されなければ、設定完了です。

ChatGPTとGoogleドキュメントで記事を書く方法

ここからは、設定したChatGPTを使って記事を書く方法を紹介します。

ChatGPTとGoogleドキュメントを使った記事の書き方

まず、記事のテーマを書いて、その文を選択してください。

そして、選択した状態のまま、メニューにある「ChatGPT」>「目次作成」をクリックします。

例:ペットを飼うならどの動物がおすすめ?

ChatGPTを使ってGoogleドキュメントでブログを書く方法:テーマを書いて選択

少し待つと、そのテーマのアイディア(または目次)一覧が表示されます。

次に、表示されたアイディアに「メリット」「デメリット」などのキーワードを追加して文を書きます。

例:犬を飼うメリット・デメリット

書いた文を選択して、メニューにある「ChatGPT」>「記事作成」をクリックしてください。

ChatGPTを使ってGoogleドキュメントでブログを書く方法:目次から記事要素を考えて、そのテキストを選択

後は、これを繰り返して、文章を生成して整えれば完成です。

ChatGPTを使ってGoogleドキュメントでブログを書く方法:メリット・デメリットなどを書いてくれる

ChatGPTが出力したアイディアを直接選択しても、記事作成がうまくいかないようなので、一度コピペして貼り付けなおす作業が必要です。

「自由質問」メニューについて

上記のスクリプトに「自由質問」というメニューを追加しました。

「自由質問」では、選択したテキストをまるごとChatGPTに送信して回答を得られるようになっているので、目次やブログ記事作成以外の自由な質問に使えます。

下記は「記事を書く時にChatGTPを使うと何ができるのか教えて」と質問した時の回答例です。

条件を追加して質問する

「自由質問」メニューでは、質問を全て自分で制御できるので、条件なども設定できます。

条件を追加する時は、改行せず書くのがポイントです。改行してしまうとうまく条件が反映されないようです。

1)回答内容を誰かの口調に似せて答えてもらう場合

以下の質問に対して「にゃん」を付けて答えて。質問内容は「・・・」。

2)除外する条件を設定する場合

除外の書き方は「:」を使って指定する必要はありません。ChatGPTが「ここから先は除外するべきもの」だと分かるように書けばOKです。

都内の温泉施設について教えて。以下の場所は除外:あああああ、いいいいい、ううううう、えええええ、おおおおお

3)文字数や回答数を設定する場合

〇〇について300文字程度で教えて。

〇〇について10個教えて。

カスタマイズ方法

個人でカスタマイズして利用する方法を紹介します。プログラミングが苦手な人でも読んでおくといいですよ。

出力方法を変えたい

前述のスクリプトの中に、下記の記述があります。

var prompt = selectedText + "で記事を書く時のアイディアを出して";
var prompt = selectedText + "でブログ記事を書いて"

「目次作成」では、「選択した文字」+「で記事を書く時のアイディアを出して」という言葉をChatGPTに投げることで、目次を作成しています。

【目次作成の出力の仕組み】
ペットを飼うならどの動物がおすすめ?で記事を書く時のアイディアを出して

記事作成も同じような仕組みになっています。

【記事作成の出力の仕組み】
犬を飼うメリット・デメリットでブログ記事を書いて

この固定の言葉の部分を書き換えると、別の出力にできます。「アイディア」という言葉で目次がうまく出力されない場合は「目次」や「記事構成」といった言葉に変えてみましょう。

例1)で記事を書く時の目次を作って
例2)で記事を書く時の構成を考えて

なお、この固定文字の部分を英語にすると、英語出力になる傾向があります。

パラメータについて

スクリプトで利用しているパラメータについて説明します。

「model」

ChatGPTは「model」モデルによって文章作成精度や速度が異なります。

この記事では「text-davinci-003」を指定していますが、必要に応じて変更してください。

変更した場合は、利用可能な最大トークンにも注意しましょう。

モデル 最大トークン 最大リクエスト トレーニングデータ
text-davinci-003 4,000トークン GPT-3モデルを採用しており、一番頭がいいモデル 2021年6月まで
text-curie-001 2,048トークン davinciよりも高速&低コスト 2019年10月まで
text-babbage-001 2,048トークン 非常に高速&低コスト 2019年10月まで
text-ada-001 2,048トークン GPT-3モデルの中では最速&低コスト 2019年10月まで

※2023/2/23時点

GPT-3(公式ドキュメント)

「max_tokens」

「max_tokens」は、生成する時の最大トークン数を指定します。どのくらいの文章を書かせるかということです。

大きい数値を指定すると、APIの無料枠をすぐに使い切ってしまうので注意しましょう。

この記事では「2048」を指定していますが、出力方法を検証する場合は、低めに設定しておいた方がいいです。

「temperature」

「temperature」は、生成する応答の多様性を指定します。0~1の範囲で指定できます。

0.5程度にすると無駄な出力が減る気がします。

下記は、「英語論文の書き方」で目次作成した場合のサンプルです。

temperature:0 temperature:0.5
  • 1. 英語論文を書く際には、まずは自分が書きたいことを明確にすることが重要です。論文の主題を決め、その主題に関する資料を収集しましょう。
  • 2. 論文を書く前に、論文のフォーマットを決めましょう。論文のフォーマットは、書き方や構成などを決めるために重要な役割を果たします。
  • 3. 論文を書く際には、論文の中心的なテーマを決めることが重要です。論文の中心的なテーマを決めることで、論文を書く際の方向性を決めることができます。
  • 4. 論文を書く際には、論文の中で使用する言葉を選ぶことが重要です。論文を書く際には、論文の中で使用する言葉を選ぶことで、論文をより読みやすくすることができます。
  • 5. 論文を書く際には、論文の中で使用する参考文献を選ぶことが重要です。参考文献を選ぶことで、論文をより信頼性の高いものにすることができます。
  • 6. 論文を書く際には、論文の中で使用するデータを選ぶことが重要です。データを選ぶことで、論文をより信頼性の高いものにすることができます。
  • 7. 論文を書く際には、論文の中で使用する図表を選ぶことが重要です。図表を選ぶことで、論文をより読みやすくすることができます。
  • 8. 論文を書く際には、論文の中で使用する引用文を選ぶことが重要です。引用文を選ぶことで、論文をより信頼性の高いものにすることができます。
  • 9. 論文を書く際には、論文の中で使用する記述を選ぶことが重要です。記述を選ぶことで、論文をより読みやすくすることができます。
  • 10. 論文を書く際には、論文の中で使用する言葉を適切に使うことが重要です。言葉を適切に使うことで、論文をより読みやすくすることができます。
  • 1.英語論文の書き方について、有効な研究方法を紹介する。
  • 2.英語論文で使用する適切な言葉の選択方法を紹介する。
  • 3.英語論文で有効な文章構成と書き方を紹介する。
  • 4.英語論文のレイアウトとフォーマットを紹介する。
  • 5.英語論文の書き方における注意点を紹介する。
  • 6.英語論文を書く時に役立つツールやテクニックを紹介する。
  • 7.英語論文を書く時に考慮すべき文法規則を紹介する。
  • 8.英語論文を書く時に考えるべき基本的なテーマを紹介する。
  • 9.英語論文の書き方における文章構造を紹介する。
  • 10.英語論文を書く時に役立つ参考資料を紹介する。

よくある質問

無料で使えるのか

ChatGPTとGoogleドキュメントの仕組みは、APIの無料お試し枠を使っており、「18ドルまで無料」で利用できます。

下記のページにアクセスすれば、現時点でどのくらい利用したかが分かります。

なお、使い切った場合は課金が必要になります。

価格はPriceページで確認でき、Davinciでは「$0.0200 / 1K tokens」となっています。

Googleポリシーに違反しないのか

実際に使ってみた感想は、検索上位のいいとこどりという感じがしました。

となると、気になるのがChatGPTを使って書いた記事はGoogleポイシーに違反しないのかという点です。

2023年2月時点、Google検索におけるAI生成コンテンツの見解は下記のようになっています。

AIや自動化は、適切に使用している限りはGoogle のガイドラインの違反になりません。検索ランキングの操作を主な目的としてコンテンツ生成に使用すると、スパムに関するポリシーへの違反とみなされます。
参照:Google検索セントラル ブログ

注意すること

ChatGPTを使えば、ほぼ自動で記事が書けますが、注意する点についてまとめておきます。

  • ChatGPTの制限事項に注意
  • 検索上位のいいとこどり

ChatGPTの制限事項に注意

ChatGPTを使う時に覚えておきたいのが、下記の制限事項です。

ChatGPT sometimes writes plausible-sounding but incorrect or nonsensical answers. Fixing this issue is challenging, as: (1) during RL training, there’s currently no source of truth; (2) training the model to be more cautious causes it to decline questions that it can answer correctly; and (3) supervised training misleads the model because the ideal answer depends on what the model knows, rather than what the human demonstrator knows.
参照:https://openai.com/blog/chatgpt/

「もっともらしいことを書くが、不正確または無意味な答えを書くことがある。しかし、それを修正するのは困難」とのこと。

また、トレーニングデータが、一番頭のいいDavinciでも2021年6月までのため、最新情報とは異なる結果が回答されるかもしれません。

間違った情報を記事にすると、Googleでは低評価につながるので注意が必要です。特にYMYLに関しては、過去に「WELQ問題」もあったので要注意。

メモ

WELQとは、DeNAが運営していた「ココロとカラダの教科書」というまとめサイトです。医師免許をもっていない、専門性に欠けるライターが、いい加減な医療系の記事を書いて問題になりました。

検索上位のいいとこどり

個人的な感想になりますが、ChatGPTの回答内容は「検索上位のいいとこどり」という感じがしました。

そのため、回答をそのまま使うと「つぎはぎの記事」になってしまい、新鮮さがありません。

これを防ぐには、「オリジナルコンテンツ」などの差別化が重要になってくる思います。

-調査
-