ChatGPT×GASで日報を自動作成する

ここからは、実際にChatGPTとGoogle Apps Script(GAS)を組み合わせて、スプレッドシートの日報をAIが自動で文章化する手順を解説します。まずは「動く体験」を作りましょう。

目次

ChatGPT×GASで日報を自動作成する

準備するもの

  • Googleスプレッドシート(例:シート名「日報」)
  • OpenAI APIキー(ChatGPTをプログラムから使うための鍵)
  • Googleアカウント(GAS実行用)

スプレッドシートには、たとえば次のような列を用意します。

日付作業内容所要時間備考
10/18ミーティング資料作成2hA社提案用
10/18メール対応1h顧客サポート

出力先として、同じシートのG2セルに「AI生成の日報本文」を書き出す想定です。

コード例(ChatGPTが日報を作成)

スプレッドシートのメニューから「拡張機能」→「Apps Script」を開き、下記コードを貼り付けて保存します。

function createDailyReport() {
  const apiKey = 'あなたのOpenAI_APIキーを入れる';
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('日報');
  const lastRow = sheet.getLastRow();
  if (lastRow <= 1) return; // データがない場合は終了

  // A:D列(1〜4列目)をまとめて取得(ヘッダー行を除く)
  const data = sheet.getRange(2, 1, lastRow - 1, 4).getValues();

  let bullet = "今日の業務内容:\\n";
  data.forEach(row => {
    const task = row[1]; // 作業内容
    const time = row[2]; // 所要時間
    const note = row[3]; // 備考
    bullet += `・${task}(${time})${note ? "/" + note : ""}\\n`;
  });

  const prompt = `次の箇条書きを基に、社内日報として自然で簡潔な日本語の文章を作成してください。
# 条件
- 200〜350文字程度
- 最後に「明日の予定」セクションを一文で添える
- 丁寧語で簡潔にまとめる

# 箇条書き
${bullet}`;

  // ChatGPT API呼び出し
  const url = 'https://api.openai.com/v1/chat/completions';
  const payload = {
    model: 'gpt-3.5-turbo',
    messages: [{ role: 'user', content: prompt }],
    temperature: 0.4
  };

  const res = UrlFetchApp.fetch(url, {
    method: 'post',
    headers: { 'Authorization': 'Bearer ' + apiKey },
    contentType: 'application/json',
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  });

  const json = JSON.parse(res.getContentText());
  if (!json.choices || !json.choices[0]) {
    throw new Error('APIレスポンスが不正です: ' + res.getContentText());
  }

  const report = json.choices[0].message.content.trim();

  // 結果をG2セルへ出力
  sheet.getRange('G2').setValue(report);
}

ポイント:プロンプトに「文字量」「トーン」「締めの一文」などの指示を入れると、実務で使いやすい安定した文章が返ってきます。

自動実行(トリガー設定)

  1. GAS画面左の「トリガー(時計アイコン)」をクリック
  2. 「トリガーを追加」→ 関数に createDailyReport を選択
  3. イベントのソース:時間主導型、頻度:毎日/平日などを選択して保存

これで、日々の作業を入力するだけで、AIが自動的に日報を作成してくれる仕組みが完成です。

応用:メールやLINEにも自動で送信しよう

作成した日報は、さらにGASで「送る」まで自動化できます。メールは数行でOK、LINEはMessaging APIを使います(公式アカウントが必要)。

メール送信のサンプル(Gmail)

function sendReportByMail() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('日報');
  const body = sheet.getRange('G2').getValue();
  if (!body) return;

  GmailApp.sendEmail('manager@example.com', '【日報】本日の業務報告', body);
}

上記をトリガーで createDailyReport の直後に実行すると、生成→送信まで全自動になります。

LINE通知のポイント(概念)

  • LINE公式アカウントのチャネルを作成 → チャネルアクセストークン取得
  • GASから UrlFetchApp.fetch()https://api.line.me/v2/bot/message/push にPOST
  • ユーザーID(またはグループID)宛に、G2セルの本文を送る

社内連絡をメールからLINE/Slackに切り替えると、確認率が大きく向上します。通知の使い分けが効率化のカギです。

よくあるつまずきと対処

  • APIエラーが出る:APIキーの前後に空白が入っていないか、課金設定・利用上限を確認。
  • CORS/権限まわり:初回実行時の権限許可ダイアログで「許可」を選択。スクリプトの実行ユーザーに注意。
  • 日本語が不自然:プロンプトに「トーン/文字数/対象読者」を明記。温度(temperature)を0.2〜0.5に下げて安定化。
  • コストが心配:文字量を制限(例:200〜350文字)。バッチ化して回数を減らす。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次