朝の時間は、ビジネスパーソンにとってとても貴重です。
今日の予定をチェックし、天気を確認して、株価やニュースを調べて…と、やることが山積みではないでしょうか?
もし、あなた専用の秘書がいて、
・その日のスケジュールを整理し
・住んでいる地域の天気を教えてくれて
・最新ニュースをまとめてくれて
・最後に一言、優しいメッセージまで添えてくれたら……
そんな1通のメールが毎朝届いたら、きっと一日のスタートが心地よくなるはずです。
今回は、Google Apps Script(GAS)とChatGPT APIを使って、「あなただけのAI秘書」をつくる方法をご紹介します。
カスタマイズも自由自在なので、ぜひ遊びながら活用してみてください。
このAI秘書がすごい!GAS×ChatGPTの強みとは?
この仕組みの最大の魅力は、あなたに合わせて自由にカスタマイズできる点です。
たとえば、
-
居住地の天気だけを取得する
-
興味のあるニュースカテゴリ(政治・経済・エンタメ)だけを表示する
-
ユーザーの興味や趣向に沿った対応ができる
🎯 たとえばこんなプロンプトを使うと…
対象ユーザーには〇歳の息子がおり、名前は××君です。やさしい言葉で励ましのメッセージを添えてください。お子さん向けの一言(天気や体調など)を入れてもかまいません。
このように設定すると、以下のようなメールが自動生成されます👇
「おはようございます!今日は曇りのち雨です。××君が風邪を引かないようにあたたかくして過ごせると良いですね。今日の予定は〇〇、ニュースのトピックは…」
このように、あなたの生活やスタイルに寄り添う気配り満点のAI秘書を実現できます。
スクリプトの基本構成
構築の流れは以下の通りです。
-
Googleカレンダーから今日の予定を取得
-
指定地域の天気予報を取得(今回は東京を例に)
-
Googleニュースからトップニュースを取得・要約
-
ChatGPT APIにまとめメールのプロンプトを送り、返信を取得
-
Gmailで自動送信
必要な準備:ChatGPT APIキーの取得
まずは、OpenAIからChatGPT APIキーを取得しておきましょう。
▼GASの事前準備が必要な方はこちら
GASコードのセットアップ
Googleドライブ → 新規 → その他 → Google Apps Script から、以下のようにコードを記述します。
----------------------
// OpenAI API Key
const OPENAI_API_KEY = "sk-***************************************// ← あなたのAPIキーをここに
// メール送信先
const RECIPIENT_EMAIL = "*********************@gmail.com"; // ← あなたのメールアドレス
function sendMorningDigest() {
const today = new Date();
const calendarEvents = getTodaysEvents(today);
const weather = getWeatherTsukumijima(); //
const news = getTopNews();
const prompt = buildPrompt(today, calendarEvents, weather, news);
const message = getChatGptReply(prompt);
GmailApp.sendEmail(RECIPIENT_EMAIL, "本日のご案内", message);
}
function getTodaysEvents(date) {
const calendar = CalendarApp.getDefaultCalendar();
const start = new Date(date.setHours(0, 0, 0));
const end = new Date(date.setHours(23, 59, 59));
const events = calendar.getEvents(start, end);
return events.map(e => `・${e.getTitle()}(${formatTime(e.getStartTime())}〜${formatTime(e.getEndTime())})`).join("\n");
}
function getWeatherTsukumijima() {
const url = "https://weather.tsukumijima.net/api/forecast/city/130010"; // ← 東京の地域コード(必要に応じて変更)
const response = UrlFetchApp.fetch(url);
const data = JSON.parse(response.getContentText());
const forecast = data.forecasts[0]; // 今日の予報
const area = data.location.city;
const weather = forecast.telop;
const max = forecast.temperature.max ? forecast.temperature.max.celsius + "℃" : "不明";
const min = forecast.temperature.min ? forecast.temperature.min.celsius + "℃" : "不明";
return `${area}の今日の天気は「${weather}」、最高気温は${max}、最低気温は${min}の予報です。`;
}
function getTopNews() {
const feed = UrlFetchApp.fetch("https://news.google.com/news/rss?hl=ja&gl=JP&ceid=JP:ja");
const xml = XmlService.parse(feed.getContentText());
const items = xml.getRootElement().getChild("channel").getChildren("item");
const topNews = items.slice(0, 5).map(item => {
const title = item.getChildText("title");
const link = item.getChildText("link");
return `・${title}\n${link}`;
}).join("\n\n");
return topNews;
}
function buildPrompt(date, events, weather, news) {
return `あなたは秘書風の丁寧な口調で話すAIです。以下の情報をもとに、朝のご案内メールを作成してください。
・挨拶文から始めてください。
・予定、天気、ニュースの順に要約してください。
・ニュースはビジネスパーソン向けに3件、自然な日本語で3行以内に要約し、リンクも添えてください。
・最後に気の利いた一言を添えてください。
【日付】${Utilities.formatDate(date, "Asia/Tokyo", "yyyy年MM月dd日 (E)" )}
【今日の予定】\n${events || "本日は予定はありません。"}
【天気】\n${weather}
【ニュース】\n${news}`;
}
function getChatGptReply(prompt) {
const url = "https://api.openai.com/v1/chat/completions";
const payload = {
model: "gpt-4o",
messages: [
{ role: "system", content: "あなたは気配りができる秘書風のAIです。" },
{ role: "user", content: prompt }
],
max_tokens: 1000,
temperature: 0.7
};
const options = {
method: "post",
headers: {
Authorization: `Bearer ${OPENAI_API_KEY}`,
"Content-Type": "application/json"
},
payload: JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(url, options);
const json = JSON.parse(response.getContentText());
if (json.choices && json.choices.length > 0) {
return json.choices[0].message.content.trim() + "\n\n※この文章はAI秘書が作成しました。返信はできませんのでご了承ください。";
} else {
return "今日のご案内を作成できませんでした。ごめんなさい。";
}
}
function formatTime(date) {
return Utilities.formatDate(date, "Asia/Tokyo", "HH:mm");
}
----------------------
毎朝メールを受け取るには?
スクリプトエディタの「トリガー」設定から、sendMorningDigest()
を毎朝の決まった時間に実行するように設定しましょう。
これで、AI秘書から毎朝のご案内メールが届くようになります。
▼実際に届くメールの例。毎日の予定や天気、ニュースの状況によって内容が変わります。botのようにシステマチックな対応をせず、毎回違った気遣いをしてくれるのがChatGPT AIの魅力です。
応用編:もっとあなたらしくカスタマイズ
📰 興味あるニュースだけに絞る
getTopNews()
関数の中で、特定キーワードを含むニュースだけを抽出できます。
このように記述すれば、AIやRPA関連のニュースだけを拾って通知することも可能です。
🗣️ 秘書キャラの「人格」を変えてみる
プロンプトに以下のように書くだけで雰囲気ががらっと変わります。
-
「あなたは親しみやすい口調のAI秘書です」→ フレンドリーに
-
「あなたは『ちゃっとぴー』という愛称のAI秘書です」→ キャラっぽく
自分専用のキャラクターAI秘書として、楽しく付き合っていけるのも魅力です!
筆者の感想:かなり良い。
何度も言いますが、このプロンプトのすごいところは、ユーザーに完璧に寄り添ってくれるAI秘書のようなシステムであるという点です。
毎朝の天気確認、Googleカレンダーでの予定チェック、最新ニュースの把握といったタスクからあなたを解放し、さらに、あたたかい言葉で「いってらっしゃい」や「今日も頑張ってね」と声をかけてくれる。
これが無料のGAS×ChatGPTのAPIトークンだけで実現できるという点がまたすごい。
たとえば、1日1通(約1000トークン) × 30日 = 30,000トークン使用で、月額わずか約$0.30(約45円)。送信分を合わせても月100円以内におさまる計算です。
これはもう、破格のコストで手に入る専属秘書といっても過言ではありません。
ちなみに、今回のサンプルコードには含まれていませんが、
たとえば「今日の株価や為替の動向をお伝えします」といった経済情報の通知や、「未読メールは◯件、△△さんから『××××』という件名のメールが届いています」さらには「推しのアイドルのイベント情報」「スポーツ選手の名言や豆知識」「今日のおすすめダイエットレシピや雑学」など、さらにパーソナライズされた通知を追加することも可能です。
まとめ:AI×GASで“あなただけの秘書”を持つ時代へ
GASとChatGPTを組み合わせることで、あなただけのオーダーメイド秘書が簡単につくれてしまいます。
-
スケジュール管理
-
天気の確認
-
最新ニュースのチェック
-
そして、あたたかいメッセージまで
すべてを1通のメールで受け取れる快適さは、一度体験したら手放せません。
「毎朝の情報収集をもっとスマートにしたい」
「AIと仲良くなりながら、楽しく効率化したい」
そんな方はぜひ、このAI秘書スクリプトを試してみてくださいね。
▼GASとChatGPTの連携でさらなるカスタマイズをしたい方はこちらの書籍もおすすめです。
![]() |
Google Apps Script × ChatGPTのツボとコツがゼッタイにわかる本 新品価格 |
▼ 役に立ったらブックマークお願いします!