GASとChatGPT APIで日報メールを自動生成する実践ガイド

GASとChatGPT APIで日報メールを自動生成する実践ガイド

背景:日報作成の手間をなくしたい

毎日の業務内容をスプレッドシートに記録しているにもかかわらず、それを見返して定型文をコピーし、メールソフトを開いて送信するという一連の作業が繰り返されているケースは多いです。この「スプレッドシートに業務内容を箇条書きで入力するだけで、AIが自動的に日報メールを作成して送信する」という仕組みを、Google Apps Script(GAS)と ChatGPT APIを組み合わせて構築することが可能です。

具体的には、スプレッドシートの特定セルに「送信」と入力することをトリガーとして、その行の業務内容テキストをChatGPT APIに渡し、「丁寧な報告メールの文章にしてください」というプロンプトを実行するスクリプトです。

実装方法:GASスクリプトの全体構成

以下は動作確認済みのGASスクリプトのサンプルです。スプレッドシートのスクリプトエディタに貼り付けて使用します。

// ChatGPT APIを使って日報メールを自動生成・送信するスクリプト
function createAndSendReport() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('日報シート');
  const lastRow = sheet.getLastRow();
  const range = sheet.getRange(lastRow, 1, 1, 4);
  const values = range.getValues()[0];
  const trigger = values[3]; // D列をトリガーに設定
  if (trigger === '送信') {
    const date = values[0]; // A列:日付
    const tasks = values[1]; // B列:業務内容
    const toAddress = 'boss@example.com';
    const subject = `【日報】${Utilities.formatDate(new Date(date), 'JST', 'yyyy/MM/dd')}`;
    const prompt = `以下の業務内容を元に、上司への丁寧な日報メールを作成してください。\n# 業務内容\n${tasks}`;
    const generatedText = callChatGPT(prompt);
    GmailApp.sendEmail(toAddress, subject, generatedText);
    sheet.getRange(lastRow, 4).setValue('送信済み');
  }
}

function callChatGPT(prompt) {
  const apiKey = 'sk-XXXXXXXXXXXX'; // OpenAI APIキーに置き換えること
  const apiUrl = 'https://api.openai.com/v1/chat/completions';
  const payload = {
    'model': 'gpt-3.5-turbo',
    'messages': [{'role': 'user', 'content': prompt}]
  };
  const options = {
    'method': 'post',
    'contentType': 'application/json',
    'headers': {'Authorization': 'Bearer ' + apiKey},
    'payload': JSON.stringify(payload)
  };
  const response = UrlFetchApp.fetch(apiUrl, options);
  const json = JSON.parse(response.getContentText());
  return json.choices[0].message.content;
}

注意点と実運用のポイント

このスクリプトをそのまま本番環境で使用する前に、いくつかの点に注意が必要です。まず、APIキーの管理については、スクリプト内に直接記述するのではなく、GASの「スクリプトプロパティ」機能を使って環境変数として保存することを推奨します。これにより、コードを他者と共有する際に誤ってAPIキーが漏洩するリスクを低減できます。

次に、エラーハンドリングです。ChatGPT APIへのリクエストが失敗した場合(レート制限・ネットワークエラー等)の例外処理を実装することで、スクリプト全体が停止するのを防げます。また、OpenAIが提供するエラーコードのドキュメントを参照することで、適切なリトライ処理が実装できます。

応用:請求書作成や進捗報告への展開

同様の仕組みは、日報以外の定型メール作成にも応用できます。例えば、毎月の請求書発行フローで受注データをスプレッドシートに入力すると自動的に請求書メールを生成する、あるいはプロジェクトの週次進捗をシートに記入すると関係者へ要約レポートが自動送付されるといった活用が考えられます。GASはGoogleのサービスと密に連携しているため、GmailやGoogleドキュメント、Google Driveとの組み合わせで業務自動化の幅をさらに広げることが可能です。