
提案書や報告書を作成する際、読み手の立場によって伝え方を変えることは非常に重要です。上司、取引先、部下など、それぞれの視点に合わせた表現が求められます。
しかし、毎回異なる視点で文章をリライトするのは手間がかかります。
そこで、今回はChatGPT APIとGoogle Apps Script(GAS)を活用し、同じ提案文書を3者の視点に切り替えてリライトするシステムを構築してみました。
なぜ視点の切り替えが必要なのか?
提案書や報告書の目的は、相手に内容を正確かつ効果的に伝えることです。
しかし、同じ内容でも読み手の立場によって受け取り方が異なります。
例えば、上司には成果や効果を強調し、取引先には導入のメリットを明確にし、部下には具体的な行動指針を示す必要があります。
このように、視点を切り替えて文章をリライトすることで、より効果的なコミュニケーションが可能になります。
システムの概要
このシステムは、以下のような流れで動作します。
-
提案書の原文を入力します。
※提案書例文
-
「上司」「取引先」「部下」の中から視点を選択します。

-
「リライトを実行」ボタンをクリックします。
-
選択した視点に合わせてリライトされた文章が出力されます。
これにより、同じ内容の提案書を異なる視点で簡単に作成することができます。
上司視点のリライト出力例:

部下視点のリライト出力例:

システムの作り方
このシステムを構築するには、以下の手順を踏みます。
-
OpenAIのAPIキーを取得します。
keiridx.net
-
Googleドライブで新規プロジェクトを作成し、Google Apps Script(GAS)を開きます。

-
コード.gs
ファイルに、ブログ下部に記述の<コード.gs>を記述します。

-
ファイル+よりHTMLを選択し、index.html
ファイルを作成。ブログ下部に記述の<htmlcode>を記述します。


-
必要に応じて、CSSやJavaScriptでデザインや機能を強化します。
-
デプロイしてURLを開きテストします。
これらの手順を踏むことで、視点を切り替えてリライトするシステムを構築できます。
誰におすすめ?
どんな時に使える?
-
ツール導入や業務改善の提案書を作るとき
-
同じ内容を相手別に“伝え方を変えたい”とき
-
プレゼン前に、第三者視点でのチェックをしたいとき
💬よくある質問(FAQ)
Q. ChatGPTを使うのにプログラミングは必要ですか?
→ いいえ、ブログにあるコードを貼るだけで簡単に使えます。
Q. 社内で使っても大丈夫?
→ GASで作られたツールなので、社内用にも展開しやすいです。
Q. GPT-4で使いたいのですが?
→ GPT-4に対応させるにはAPI設定でモデルを指定するだけです。
まとめ
提案書や報告書の作成において、読み手の視点に合わせた伝え方は非常に重要です。ChatGPT APIとGASを活用することで、同じ内容の文章を簡単に異なる視点でリライトすることができます。
これにより、コミュニケーションの質が向上し、業務の効率化にもつながります。ぜひ、このシステムを活用して、より効果的な提案書作成を目指してみてください。
▼GASとChatGPTの連携でさらなるカスタマイズをしたい方はこちらの書籍もおすすめです。
▼ 役に立ったらブックマークお願いします!


人気ブログランキング
<コード.gs> ※APIkeyの部分はご自身のものに変更ください
// ===========================
// ===========================
function doGet() {
return HtmlService.createHtmlOutputFromFile('index');
}
// ===========================
// ===========================
function callGPT(userInput, role) {
const apiKey = 'sk***************';
const rolePrompts = {
'manager': `あなたは上司の立場として、以下の文章をチェックしてください。
文章の内容はそのままに、承認の判断がしやすいことを重視してリライトしてください。
以下の観点に沿って添削してください:
- この立場の人間にとってわかりやすいか
- 内容の説得力はあるか
- 表現が適切か
リライト後の文を提案してください。`,
'subordinate': `あなたは部下の立場として、以下の文章をチェックしてください。
文章の内容はそのままに、理解しやすく伝わることを重視してリライトしてください。
以下の観点に沿って添削してください:
- この立場の人間にとってわかりやすいか
- 内容の説得力はあるか
- 表現が適切か
リライト後の文を提案してください。`,
'client': `あなたは取引先担当者の立場として、以下の文章をチェックしてください。
文章の内容はそのままに、より説得力があること、提案を受け入れたくなることを重視してリライトしてください。
以下の観点に沿って添削してください:
- この立場の人間にとってわかりやすいか
- 内容の説得力はあるか
- 表現が適切か
リライト後の文を提案してください。`
};
const systemPrompt = rolePrompts[role] || rolePrompts['client'];
const payload = {
model: 'gpt-4',
messages: [
{ role: 'system', content: systemPrompt },
{ role: 'user', content: userInput }
]
};
const options = {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: 'Bearer ' + apiKey
},
payload: JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(url, options);
const json = JSON.parse(response.getContentText());
return json.choices[0].message.content.trim();
}
<htmlcode>
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<style>
body { font-family: sans-serif; padding: 20px; }
textarea { width: 100%; height: 150px; }
select, button { margin-top: 10px; padding: 8px; font-size: 14px; }
#output { white-space: pre-wrap; margin-top: 20px; background: #f4f4f4; padding: 10px; border: 1px solid #ccc; }
</style>
</head>
<body>
<h2>マルチ視点リライトツール</h2>
<label for="inputText">文章を入力:</label><br>
<textarea id="inputText" placeholder="ここに提案書などの文章を貼り付けてください"></textarea><br>
<label for="role">視点を選択:</label><br>
<select id="role">
<option value="client">取引先</option>
<option value="manager">上司</option>
<option value="subordinate">部下</option>
</select><br>
<button onclick="rewriteText()">リライト実行</button>
<div id="output"></div>
<script>
function rewriteText() {
const inputText = document.getElementById('inputText').value;
const role = document.getElementById('role').value;
document.getElementById('output').textContent = '処理中...';
google.script.run.withSuccessHandler(function(result) {
document.getElementById('output').textContent = result;
}).callGPT(inputText, role);
}
</script>
</body>
</html>