いよいよシリーズ最終回! 今回は、Google Apps Script(GAS)とChatGPT(OpenAI API)を連携して、AIが自動で文章を生成する仕組みを作ります。
「AIが文章を作り」「GASがスプレッドシートを更新し」「メールやLINEで配信する」―― これが現代の業務自動化の完成形です。
Contents
全体の流れ
- OpenAI APIキーを取得(公式サイト)
- GASにAPIキーを登録(プロパティサービス推奨)
- スプレッドシートに元データを用意
- GASでChatGPT APIを呼び出し → AIが文章生成
- 結果を自動でシートやメールに反映
準備:APIキーを安全に管理
APIキーをスクリプト内に直書きするのはNGです。 安全のために、スクリプトのプロパティに登録しましょう。
- GASエディタで「設定 ⚙️」→「プロジェクトのプロパティ」→「スクリプトのプロパティ」
- キー名:
OPENAI_API_KEY/ 値:あなたのAPIキーを貼り付け - 保存
コード①:ChatGPTと連携して文章を作る(基本版)
function generateTextWithChatGPT() {
const apiKey = PropertiesService.getScriptProperties().getProperty("OPENAI_API_KEY");
const prompt = "以下の内容をもとに、200文字程度でやさしくまとめてください。\n内容: ChatGPTとGASを連携する方法";
const url = "https://api.openai.com/v1/chat/completions";
const payload = {
model: "gpt-3.5-turbo",
messages: [{ role: "user", content: prompt }],
temperature: 0.5,
max_tokens: 500
};
const options = {
method: "post",
headers: { Authorization: "Bearer " + apiKey },
contentType: "application/json",
payload: JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
const result = data.choices[0].message.content;
Logger.log(result);
}
ログ(「表示 → ログ」)にChatGPTが生成した文章が出力されれば成功です! これを応用して、次にスプレッドシートへ出力してみましょう。
コード②:スプレッドシートと連携してAIが日報を作成
スプレッドシートに「業務内容」を入力しておき、AIがそれを要約・整形して日報を生成します。
function createReportWithChatGPT() {
const apiKey = PropertiesService.getScriptProperties().getProperty("OPENAI_API_KEY");
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const tasks = sheet.getRange("A2:A10").getValues().flat().filter(String);
const prompt = `以下の業務内容をもとに、300文字程度で社内日報文を作成してください。
- 丁寧語で
- 箇条書きを含めず
- 最後に「明日の予定」を1行添えてください。
内容: ${tasks.join(" / ")}`;
const url = "https://api.openai.com/v1/chat/completions";
const payload = {
model: "gpt-4o-mini",
messages: [{ role: "user", content: prompt }],
temperature: 0.4
};
const options = {
method: "post",
headers: { Authorization: "Bearer " + apiKey },
contentType: "application/json",
payload: JSON.stringify(payload)
};
try {
const response = UrlFetchApp.fetch(url, options);
const json = JSON.parse(response.getContentText());
const text = json.choices[0].message.content.trim();
sheet.getRange("C2").setValue(text);
} catch (err) {
Logger.log("エラー:" + err);
sheet.getRange("C2").setValue("エラーが発生しました:" + err);
}
}
実行すると、A2〜A10の内容を要約したAI日報がC2セルに自動生成されます。 第2回〜第4回で扱った「スプレッドシート」「Gmail」「フォーム」をすべて結合した応用例です。
コード③:AIが作った文章を自動メール送信(完全自動化)
function dailyAutoReport() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const report = sheet.getRange("C2").getValue();
const today = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd");
const subject = `【日報】${today}`;
const email = "manager@example.com";
if (report) {
GmailApp.sendEmail(email, subject, report, { name: "AI日報システム" });
} else {
GmailApp.sendEmail(email, subject, "本日のデータが未入力です。");
}
}
この関数をトリガーで毎朝8時に実行するよう設定すれば、AIが自動で日報を生成して送信します。
自動化設定:トリガーの設定手順
- GASエディタ左側「時計マーク」→「トリガーを追加」
- 関数名:
createReportWithChatGPTまたはdailyAutoReport - イベントのソース:「時間主導型」
- 実行間隔:「毎日 午前8時」など
これで、AIが毎朝スプレッドシートを読み取り、文章を作り、メールを送信する完全自動化が完成します。
ChatGPTの出力を安定させるコツ
- temperature: 文章のゆらぎを制御。安定した文なら 0.3〜0.5。
- max_tokens: 文字数の上限(500 ≒ 約1000文字程度)。
- プロンプト:「何文字程度で」「口調は〜」を明記するほど品質が上がる。
- モデル: 最新なら
gpt-4o-miniがコスパ最強。
安全対策と制限
- APIキー管理:
PropertiesServiceで保存(直書き禁止)。 - 送信上限: OpenAI無料枠は月間制限あり。定期利用は有料プラン推奨。
- 情報保護: 個人情報・社外秘データはそのまま送信しない。
- レスポンス長制御:
max_tokensを設定して予測不能な長文を防止。
まとめ:AIが書き、GASが動く時代へ
GASとChatGPTを連携すると、文章作成・報告・要約など“考える系業務”まで自動化できます。 第1回〜第4回で作った仕組みを組み合わせれば、あなたの職場でもAIが働く仕組みを作れます。
これで「GAS入門シリーズ」は完結です。
GASを活用し毎日の仕事をもっとラクにしましょう。
