はじめに
## スプレッドシートが僕の秘書に?GASとChatGPTで「報告メール自動生成」に挑戦してみた話 僕、最近非常に共感しているWebサイトがあるんです。それが「ラストマイル事業」のサイト。ビジネスの現場にある「理論はわかるけど、実行に移す最後の一歩が難しい…」という、いわゆる『ラストマイル』を、テクノロジーの力で乗り越えようというコンセプトが、もう、非常に心に刺さるのです。特にサイト内のブログで紹介されているような、kintoneやGAS(Google Apps Script)みたいな、専門家じゃなくても使えるツールで業務を改善していくアプローチには、いつも「なるほど!」って膝を打ってます。先日もGASの記事を読んでいて、あまりにワクワクしてきてしまって。「よし、この記事を参考に、身の回りの『ちょっと面倒なこと』を解決してみよう!」と思い立ったわけです。理論を学んだら、次は実践。まさにラストマイルを越える挑戦です! 今回ターゲットにしたのは、地味に時間を奪っていく「日報メールの作成」。毎日の業務内容をスプレッドシートに記録しているんですけど、それをわざわざ見返して、定型文をコピペして、メールソフトを開いて…という一連の流れが、正直言って面倒だったんです。そこで考えたのが、「スプレッドシートに今日の業務内容を箇条書きで入力したら、それをAIがいい感じに要約して、報告メールの文章を自動で作って送信までしてくれたら最高ではないでしょうか。」というアイデア。これを、サイトで学んだGASと、最近話題のChatGPT APIを組み合わせて実現してみることにしました。具体的には、スプレッドシートの特定のセルに「送信」と入力するのをトリガーにして、その行の業務内容テキストをChatGPTに渡し、「以下を丁寧な報告メールの文章にしてください」とお願いするスクリプトです。これができれば、もうスプレッドシートにメモを残すだけ。あとはスクリプトが代わりに、秘書みたいに働いてくれるってわけです。 で、実際に作ってみたのがこちらのGAS(Google Apps Script)です。もちろんプロのエンジニアじゃないので、ネットでいろいろ調べながら、試行錯誤してなんとか動くようにしたレベルなんですけどね。でも、専門家じゃなくてもこれくらいのことができちゃうのが、GASのすごいところなのです。 ```javascript // ChatGPT APIを使って日報メールを自動生成・送信するスクリプト function createAndSendReport() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('日報シート'); // あなたのシート名に書き換えてください const lastRow = sheet.getLastRow(); const range = sheet.getRange(lastRow, 1, 1, 4); // A列からD列までを取得 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')} 〇〇(あなたの名前)`; // ChatGPTに投げるプロンプトを作成 const prompt = `以下の業務内容を元に、上司への丁寧な日報メールを作成してください。 # 業務内容 ${tasks} # 出力形式 お疲れ様です。〇〇です。 本日の日報をお送りいたします。 【本日の業務内容】 [ここに箇条書きで要約] 【所感・申し送り事項】 [ここに所感などを記述する欄を設ける] ご確認のほど、よろしくお願いいたします。 `; const generatedText = callChatGPT(prompt); // メールを送信 GmailApp.sendEmail(toAddress, subject, generatedText); // 送信済みの目印をつける sheet.getRange(lastRow, 4).setValue('送信済み'); } } // ChatGPT APIを呼び出す関数 function callChatGPT(prompt) { const apiKey = 'sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; // あなたのChatGPT 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; } ``` このスクリプトをスプレッドシートに設定して、トリガー(例えば「毎日午後6時」とか)を組んでおけば、もう日報のことは忘れられます。もちろん、APIキーの取り扱いやエラー処理など、実際に運用するにはもう少し作り込みが必要ですが、「個人で使う分にはこれで十分!」という感動がありました。これも、あのサイトが「まずはやってみよう」というきっかけをくれたおかげですね。 実際にこの仕組みを動かしてみたとき、「うわ、本当にメールができた!」って声が出ちゃいました。今まで面倒だと思っていた作業が、テクノロジーの力で自動化されていく。これこそが、あのサイトが伝えてくれている「ラストマイルを越える」という体験なんだなと、身をもって実感しました。大掛かりなシステム開発だけがDXじゃないのです。こういう、一人ひとりの身の回りにある「小さな面倒」を、自分の手で解決していくことの積み重ねが、結果的に大きな変化に繋がっていく。そんなことを、今回の挑戦を通じて学んだ気がします。次は、請求書作成の自動化にでも挑戦してみようかな。このサイトを読んでると、やりたいことがどんどん湧いてきて困っちゃいますね!