How to use: 各プロンプトをクリックして開き、Copy ボタンでクリップボードにコピーできます。 ChatGPT、Gemini、Claude などお好みのAIにそのまま貼り付けてお使いください。
研修コースで絞り込み:
序章: AIエージェントの基礎知識
2 prompts【前提】あなたは自己紹介作成の専門家です。
【目的】私のことを初めて知る人に向けて自己紹介文の作成をお願いします。
【出力】
・合計400文字以内
・です、ます調
【禁止】仕事以外の内容に触れない
【素材】私はUravation の代表の佐藤で、企業向けにAI 研修やコンサルティングを提供しています。生成AI の業務活用支援、カスタムAI エージェント開発、社内導入サポートなどを行っています。
【前提】あなたは自己紹介作成の専門家です。
【目的】私のことを初めて知る人に向けて自己紹介文の作成をお願いします。
【出力】
・合計400文字以内
・です、ます調、親しみやすいトーン
【禁止】仕事以外の内容に触れない
【素材】私はUravation の代表で、企業向けにAI 研修やコンサルティングを提供しています。生成AI の業務活用支援、カスタムAI エージェント開発、社内導入サポートなどを行っています。
第1章: 書いてもらう
10 prompts【前提】あなたは丁寧で簡潔なビジネスメールを書くライターです。
【目的】Uravation という会社の佐藤という名前で株式会社ABC 商事の営業部 田中様への打ち合わせ御礼メールを作成してください。
【出力】
・御礼
・社内で検討してほしい点(受講人数の最終確定)
・日程案は来週中に共有すること
・件名1案+本文5~7行(敬体・やわらかめ)
【禁止】値引きや条件の確約はしない/相手の社内事情を推測しない
【素材】昨日(11月26日)、生成AI研修について初回打ち合わせを実施。受講対象(営業部20名)と日程(2月上旬を希望)を相談しました。
【前提】あなたは配慮が行き届いたメールを書くビジネスパーソンです。
【目的】営業部の佐藤という名前で、社内の経理部に向けて、請求書発行の依頼メールを作成してください。
【出力】
・請求金額、請求先、希望期限を明示
・添付ファイルの確認を依頼する
・件名1案+本文5~10行(敬体・丁寧)
【禁止】急ぎを過度に強調しない/経理部の業務を軽視しない
【素材】ABC 商事様への11月分研修費用300,000円、12月3日までに発行希望。請求先情報は添付ファイル参照。
【前提】あなたは配慮が行き届いたメールを書くビジネスパーソンです。
【目的】佐藤という名前で、日程調整の返信メールを作成してください。
【出力】
・件名
・本文(候補日時を3つ提示)
【禁止】カジュアルな文体にしない/候補日時を3つ未満にしない
【素材】
・相手からの依頼内容:来週のどこかで1時間、オンラインMTG希望
・私のカレンダー空き状況:
12月3日(火)14:00-15:00 空き
12月5日(木)10:00-11:00 空き
12月7日(土)15:00-16:00 空き
【前提】あなたはビジネス英語に精通したメールライターです。
【目的】佐藤という名前で、海外の取引先(Mr. John Smith, ABC Corporation)に、製品サンプルの到着確認と次回ミーティングの日程調整をお願いするメールを作成してください。
【出力】
・サンプルの到着を確認する
・感想をお願いする
・Zoomミーティングの日程候補を聞く
・件名1案+本文5~7行(ビジネスフォーマル・フレンドリー)
【禁止】押しつけがましくならない/相手のスケジュールを軽視しない
【素材】先週金曜日にサンプルを発送済み。到着したら感想を聞きたい。来週のどこかでZoomミーティングを希望。
Gmailの未読メールを確認して、それぞれの要約と返信案を作成してください。
返信案は以下の形式でお願いします:
- 件名案
- 本文(5〜7文、宛名・署名を除く本文のみ)
- トーン:丁寧だが親しみやすい
【前提】あなたは丁寧で簡潔なビジネスメールを書くライターです。
【目的】以下のメールに対する返信案を作成してください。
【送信者】{{sender}}
【件名】{{subject}}
【本文】{{body}}
【出力】
・件名案を1つ
・本文は5~7行
・敬体・やわらかめのトーン
【禁止】値引きや条件の確約はしない
【前提】あなたは整理が得意な議事録ライターです。
【目的】以下の会議メモから、要点/決定事項/To Doを配信できる形にまとめてください。
【出力】
・要点:3~7個の箇条書き
・決定事項:根拠を一言添える
・To Do:担当者と期限を明記
・形式:見出しを使って整理
【禁止】発言していないことを追加しない/曖昧な話の断定をしない/参加者の意図の推測をしない
【素材】(上記の会議文字起こしテキストをここに貼り付け)
【前提】あなたは発言者の意図を正確に捉える議事録ライターです。
【目的】以下の会議メモを、発言者別に整理してください。
【出力】発言者ごとに、主張・提案・懸念点を箇条書き
【禁止】発言していないことを追加しない/曖昧な話の断定をしない/参加者の意図の推測をしない
【素材】(上記の会議文字起こしテキストをここに貼り付け)
【前提】あなたは一流の校正者です。
【目的】以下の文章の誤字脱字、表記揺れを修正してください。
【出力】
・修正箇所は【修正前】→【修正後】の形式で示す
・修正後の全文も出力
【禁止】
・文意を変える修正はしない
・表現を勝手に言い換えない(誤字脱字・表記揺れの修正のみ)
・情報の追加や削除はしない
【素材】
〇〇株式会社
営業部 〇〇様
お世話になっております。Urvationの佐藤です。
この度はお問い合せ頂き、誠にありがとうございます。
お問い合わせいただきました件につきまして、下記の通りご案内申し上げます。
お手数をおかけいたしますが、ご確認ほど、よろしくお願いいたします。
ご不明点などございましたら、再度お問い合わせいただきますようお願いいたします。
何卒よろしくお願い申し上げます。
【前提】あなたは読み手の行動を後押しする編集者です。
【目的】以下の文章を整え、校正版と120%版の両方を示してください。
【出力】
1) 校正版:誤字・表記揺れの修正、冗長箇所の圧縮
2) 120%版: 結論を先に、読み手のメリットを明示、必要なら小見出し追加
【禁止】
・文意を変える修正はしない
・表現を勝手に言い換えない(誤字脱字・表記揺れの修正のみ)
・情報の追加や削除はしない
【素材】
今月の営業活動について報告します。新規顧客への提案を5社実施しましたが、そのうち2社から前向きな返事をいただきました。残りの3社は検討中です。また、既存顧客からの追加発注が3件ありました。来月は新規顧客へのフォローを強化する予定です。課題としては、提案書の作成に時間がかかっていることが挙げられ、テンプレートを作成したりAIを使うことで改善したいと思います。
第2章: 調べてもらう
6 prompts【前提】あなたは意思決定に使える情報だけを集めるリサーチアシスタントです。
【目的】2025年の生成AI ビジネス活用トレンドTop 5を把握し、自社(中小企業向けAI研修を提供)への関係度を判断してください。
【出力】
・ トレンドTop 5(名称・内容・影響度:高/ 中/ 低・参考URL)の表形式
・影響度の理由
・次に深掘りすべき論点
【禁止】推測での断定をしない/古い情報を引用しない
【素材】
・期間:2024年11月~2025年1月の情報を優先
・業界:中小企業、教育・研修
【前提】あなたは意思決定に使える情報だけを集めるリサーチアシスタントです。
【目的】在宅ワーク用のモニターを3候補に絞ってください。
【出力】
1) 候補表(商品名・メーカー・価格・サイズ・解像度・接続端子・参考URL)
2) 推し3案と選ぶ理由
【禁止】古い価格情報を掲載しない/公式にない機能を"ある"と書かない
【素材】
・予算:3万円以内
・サイズ:27インチ以上
・解像度:フルHD以上
・必須:USB-C接続、高さ調整可能
・あれば嬉しい:スピーカー内蔵
・NG:曲面ディスプレイ
【前提】あなたは意思決定に使える情報だけを集めるリサーチアシスタントです。
【目的】チーム(10名)で使うプロジェクト管理ツールを3候補に絞ってください。
【出力】
1) 候補表(名称・適合度◎◯△・強み・弱み・価格帯・根拠URL)
2) 差が出る軸
3) 推し3件と理由
【禁止】公式にない機能を"ある"と書かない
【素材】
・必須:タスク管理、ガントチャート、Slack連携
・あれば嬉しい:タイムトラッキング、レポート機能
・NG:月額1名1,000円以上、日本語サポートなし
【前提】あなたは意思決定に使える情報だけを集めるリサーチアシスタントです
【目的】社内勉強会の会場を3候補に絞ってください。
【出力】
1) 候補表(名称・住所・料金・収容人数・設備・公式URL)
2) 推し3案と選ぶ理由
【禁止】公式URL以外の情報を掲載しない/古い料金情報を掲載しない
【素材】
・日時:12月15日(金)14:00~17:00
・人数:20名
・予算:1名あたり3,000円以内
・立地:東京駅から徒歩15分以内
・必須設備:プロジェクター、Wi-Fi
・除外:地下会場(換気の問題)
【前提】あなたは意思決定に使える情報だけを集めるリサーチアシスタントです。
【目的】取引先との会食用レストランを3候補に絞ってください。
【出力】
1) 候補表(店名・住所・予算・個室有無・雰囲気・公式URL)
2) 推し3案と選ぶ理由
【禁止】公式URL以外の情報源を使わない/古い価格情報を使わない
【素材】
・日時:2月10日(木)19:00~21:00
・人数:4名(当社2名、先方2名)
・予算:1名あたり8,000円以内
・立地:銀座駅から徒歩10分以内
・必須:個室、静かな環境、和食または割烹
・あれば嬉しい:接待向きの落ち着いた雰囲気
・NG:居酒屋チェーン店
【前提】あなたは意思決定に使える情報だけを集めるリサーチアシスタントです。
【目的】大阪出張(1泊2日)のホテルを3候補に絞ってください。
【出力】
1) 候補表(ホテル名・住所・価格・設備・公式URL)
2) 推し3案と選ぶ理由
【禁止】古い価格情報を掲載しない/公式にない設備を"ある"と書かない
【素材】
・日程:2026年1月20日~21日(1泊)
・予算:1泊1万円以内(朝食込み希望)
・立地:本町駅から徒歩10分以内
・必須:シングルルーム、Wi-Fi、禁煙
・あれば嬉しい:大浴場、コインランドリー
第3章: データを分析してもらう
11 prompts【前提】あなたは市場調査の専門アナリストです。
【目的】AI研修を受託している企業の経営会議で新規事業の市場性を説明するための分析をしてください。
【出力】
1) 市場規模と成長率(推計値と出典)
2) 主要プレーヤー(国内外の代表的企業5社)
3) 成長要因と阻害要因(各3つ)
4) 自社にとっての機会と脅威
5) 参入検討時の論点
【禁止】推測での断定をしない/出典のない数字を使わない
【素材】
調査対象:日本国内のAIエージェント市場
期間:2024年~2025年の動向を中心に
読者:経営層(専門用語は補足説明を入れる)
【前提】あなたはマーケティング戦略の専門家です。
【目的】新サービスのターゲット顧客を明確にするためにSTP分析を行ってください。
【出力】
1) Segmentation(市場細分化):顧客を分ける軸を3つ
2) Targeting(ターゲット選定):最も狙うべきセグメントと理由
3) Positioning(差別化ポジション):競合との違いを一言で
【禁止】根拠のない断定をしない
【素材】
自社サービス:中小企業向けAI業務支援ツール(月額3万円~)
競合:Microsoft Copilot、Google Gemini、OpenAI ChatGPT、Microsoft Teams
【前提】あなたはマーケティング戦略の専門家です。
【目的】競合との差別化ポイントを整理するために4C 分析を行ってください。
【出力】
1) Customer Value(顧客価値):顧客が得られる価値
2) Cost(顧客コスト):金銭・時間・心理的コスト
3) Convenience(利便性):導入・利用のしやすさ
4) Communication(コミュニケーション):顧客との接点
【禁止】根拠のない断定をしない
【素材】
自社サービス:中小企業向けAI業務支援ツール
【前提】あなたはマーケティング戦略の専門家です。
【目的】新規事業の参入判断を行うためにSWOT分析を行ってください。
【出力】
1) Strength(強み)×Opportunity(機会):成長戦略
2) Weakness(弱み)×Threat(脅威):リスク対策
3) 優先すべきアクション3つ
【禁止】根拠のない断定をしない
【素材】
自社情報:
・強み:AI研修で300社以上の導入実績
・弱み:開発リソースが限られている
・市場環境:生成AI市場は年40%成長
【前提】あなたはデータ分析の専門家です。
【目的】営業部長が「来月の投資判断」をするため、セグメント別の売上トレンドを把握してください。
【出力】
1. セグメント別(SMB / Mid / Enterprise)の売上合計と前月比を集計
2. 成長率が高いセグメントと低いセグメントを特定
3. 来月の投資判断に役立つ示唆を3つ挙げる
【禁止】因果関係を断定しない/都合の悪いデータを省略しない
【素材】売上データCSVを添付
【前提】あなたはデータ分析の専門家です。
【目的】マーケティング担当が「次のキャンペーン企画」を考えるため、顧客の不満点を整理してください。
【出力】
1. コメントを「不満」「要望」「好評」の3つに分類して割合を出して。
2. 不満コメントの中で、頻出する単語を5つ挙げて。
3. 具体的に改善アクションにつながりそうなコメントを3つピックアップして。
【禁止】分類の根拠を省略しない
【素材】アンケート自由記述CSVを添付
【前提】あなたはデータ分析の専門家です。
【目的】経営会議で「今月のKPI 達成状況と課題」を報告するため、KPIデータを整理してください。
【出力】
1. 各KPIの達成率を計算(達成率 = actual / target × 100)
2. 未達成のKPIをピックアップし、原因仮説を立てる
3. 来月のアクション案を3つ提案
【禁止】達成率100%以上のものを「問題なし」と断定しない
【素材】KPIデータCSVを添付する
【前提】あなたはデータビジュアライゼーションの専門家です。
【目的】添付のデータから、経営会議で使うグラフを作成してください。
【出力】
1. 月別売上推移の折れ線グラフ(セグメント別に色分け)
2. セグメント別売上シェアの円グラフ
3. 解約率推移の折れ線グラフ
- グラフは見出しを結論形にする
- 凡例は右側に配置
- 色はビジネス向け(派手すぎない)
【禁止】派手な色づかいにしない
【素材】売上データCSVを添付
【前提】あなたはデータビジュアライゼーションの専門家です。
【目的】経営会議で使うため、以下の分析結果を、概念図で表現してください。
【出力】購買ファネルの図を作成し、離脱率と課題を視覚的に表現してください。
【禁止】複雑な図にしない
【素材】
分析結果
- 顧客の購買フロー:認知→興味→比較→購入→継続
- 各フェーズでの離脱率:認知→興味で40%離脱、比較→購入で30%離脱
- 課題:比較フェーズでの情報提供が不足
【前提】あなたは市場調査・専門アナリストです。
【目的】AI研修を受託している企業の経営会議で新規事業の市場性を説明するための分析をしてください。
【出力】
1) 市場規模と成長率(推計値と出典)
2) 主要プレーヤー(国内外の代表的企業5社)
3) 成長要因と阻害要因(各3つ)
4) 自社にとっての機会と脅威
5) 参入検討時の論点
【禁止】推測での断定をしない、出典のない数字を使わない。
【素材】
調査対象:日本国内のAIエージェント市場
期間:2024年~2025年の動向を中心に
読者:経営層(専門用語は補足説明を入れる)
【前提】あなたはデータ分析の専門家です。
【目的】以下の営業日報データを分析して、3つの形式でレポートしてください。
【出力】
1. 今週の売上トレンド(前週比・目標達成率)
2. ボトルネック(商談が進んでいない案件Top3と推測理由)
3. 来週の推奨アクション(3つ)
【禁止】
・各項目2-3行で簡潔に
・数字は「前週比+15%」のように具体的に
【素材】
{{google_sheets_data}}
第4章: 企画を考えてもらう
8 prompts【前提】あなたは企画立案の専門家です。
【目的】下の素材から、実行可能な企画アイデアを5案出してください。
【出力】
1. 企画名
2. 誰のどんな課題を解決するか
3. 商品概要
4. どこが新しいのか
【禁止】
・抽象的なアイデアにしない
・実現不可能なアイデアにしない
・素材にない数値(業界平均・売上影響・割合など)を作らない
・事例は実在の出典URL付きの場合のみ記載する
・既存商品と差別化できないアイデアにしない
【素材】上記「トレンド」「顧客の声」を貼り付ける
【前提】あなたは企画立案の専門家です。
【目的】下の素材から、実行可能な企画アイデアを5案出してください。
【出力】
1. 企画名
2. 誰のどんな課題を解決するか
3. 主な施策(3行以内)
4. 期待する変化(数字で)
・2週間以内に小さく試せること
・既存のリソース(人・ツール・予算)を使うこと
・新しいシステム導入は不要
【禁止】
・抽象的なアイデアにしない
・実現不可能なアイデアにしない
・素材にない数値(業界平均・売上影響・割合など)を作らない
・事例は実在の出典URL付きの場合のみ記載する
【素材】上記「トレンド」「自社の数字」「顧客の声」を貼り付ける
【前提】あなたは企画書作成の専門家です。
【目的】以下の企画アイデアを、企画書の骨子(6項目)にしてください。
【出力】
1. 課題(現状と「なぜ今」)
2. 洞察(顧客の本当の困りごと)
3. 解決(施策の全体像と体験の流れ)
4. 証拠(事例、データ、小さな実績の案)
5. KPI(先行・結果・学びの指標)
6. 実行(体制、タイムライン、予算、リスク)
【禁止】
・スローガンだけで終わらない(「顧客満足度向上」など)
・曖昧な表現をしない(「できる限り」「なるべく」など)
【素材】
企画アイデア:
・ 誰のどんな課題を解決するか:カスタマーサクセスチームが抱える、新規顧客の契約後3か月以内の解約率が30%という問題
・ 主な施策:週1回のオンボーディングメールを週3回に増やし、初回ログイン率を上げるとともに顧客に使い方を理解してもらう
【前提】あなたは企画書作成の専門家です。自社の過去の成功事例を参考にしながら、実行可能な企画書の骨子を作成します。
【目的】ユーザーから「企画アイデア」を受け取ったら、以下の6項目で骨子を作成
【出力】
1. 課題(現状と「なぜ今」)
2. 洞察(顧客の本当の困りごと)
3. 解決(施策の全体像と体験の流れ)
4. 証拠(事例、データ、小さな実績の案)
5. KPI(先行・結果・学びの指標)
6. 実行(体制、タイムライン、予算、リスク)
【禁止】
・スローガンだけで終わらない(「顧客満足度向上」など)
・曖昧な表現をしない(「できる限り」「なるべく」など)
【前提】あなたは企画書作成の専門家です。
【目的】上記の調査結果をもとに、企画書の骨子を作成してください。
【出力】
1. 課題(現状と「なぜ今」)
2. 洞察(顧客の本当の困りごと)
3. 解決(施策の全体像と体験の流れ)
4. 証拠(事例、データ、小さな実績の案)
5. KPI(先行・結果・学びの指標)
6. 実行(体制、タイムライン、予算、リスク)
【禁止】
・スローガンだけで終わらない(「顧客満足度向上」など)
・曖昧な表現をしない(「できる限り」「なるべく」など)
【前提】あなたはコピーライティングの専門家です。
【目的】以下の企画のタイトルと見出しを10案作ってください。
【出力】
・ 5パターン(数字・ベネフィット・疑問形・対比・ターゲット明示)から2案ずつ
・15字以内を目安
【禁止】
・専門用語は使わない
・曖昧な表現をしない(「改善」「向上」だけでは弱い)
・カタカナ語の羅列をしない
【素材】
企画概要:
・内容:契約後1週間のオンボーディングメールを強化
・目的:解約率30%→20%に改善
・ターゲット:カスタマーサクセスチーム
【前提】あなたはコピーライティングの専門家です。
【目的】以下のコピーを改善してください。
【出力】改善案を5つ出してください。
【禁止】
・曖昧な表現にしない(「改善」「向上」だけでは弱い)
・カタカナ語の羅列をしない
【素材】現状のコピー:「オンボーディング改善施策について」
問題点:
・何が改善されるかわからない
・誰向けかわからない
・数字がない
【前提】あなたはSNSマーケティングの専門家です。
【目的】以下のネタをX(Twitter)投稿用に整理してください。
【出力】投稿案を3パターン
・280文字以内
・最初の1行でスクロールを止める
【禁止】
・専門用語は使わない
【素材】
・Claude 4.5 Opusが出た
・長文処理がさらに強くなった
・契約書レビューに使えそう
第5章: 資料を作成してもらう
7 prompts【前提】あなたは資料作成の専門家です。読み手の意思決定を助ける資料を設計します。
【目的】以下の骨子をもとに、資料の見出し案を作ってください。
【骨子】
マーケティング部長に、新規顧客獲得施策の現状と課題を共有し、今月中に予算配分の意思決定をしてもらうための資料。
現状と課題:
・売上は目標の80%
・新規顧客獲得単価が2倍に上昇
・セミナー経由の成約率が30%で高い
・Web広告の効果が低下
・予算再配分が必要
【出力】
1. 見出し案(最大8本、すべて結論形)
2. 各見出しの要点(箇条書き3つまで)
3. 図のイメージ(箱と線、比較表、グラフなど)
・スライド8枚以内
・会議時間15分
・結論を最初の2枚で伝える
【禁止】
・抽象的なスローガンだけの見出しにしない(「顧客満足度向上」など)
・曖昧な表現にしない(「できる限り」「なるべく」など)
【前提】あなたは資料作成の専門家です。読み手の意思決定を助ける資料を設計します。
【目的】以下のスライド構成を、読み手の目線で見直してください。
【出力】
1. 削るべき情報(読み手にとって不要な情報)
2. 追加すべき情報(読み手が知りたいこと)
3. 見出しの書き換え案(より伝わりやすい表現)
・結論は最初の2枚までに出ているか
・各スライドの要点は3つ以内か
・1スライド1メッセージになっているか
・読んだ人が「次に何をすればいいか」がわかるか
【禁止】
・抽象的なスローガンだけの見出しにしない
・曖昧な表現にしない
【素材】先ほどのスライド案
【前提】あなたは資料作成の専門家です。読み手の意思決定を助ける資料を設計します。
【目的】以下の骨子をもとに、資料の見出し案を10本作ってください。
【骨子】製造業A社の経営層に、業務効率化支援サービスを提案し、今月中に契約の意思決定をしてもらうための資料。
A社の現状と課題:
・手作業工程が多く、業務効率が悪い
・残業時間が平均40時間と長く、コスト増加の要因となっている
・ 業界平均に比べて労働負担・人件費が高く、年間の人件費に3,000万円(残業代1,000万円)かかっている
自社サービスの強み:
・製造業に特化したコンサルティング実績20年と、豊富な業界知識あり
・ 類似の改善案件で100社以上の支援経験、平均30% のコスト削減を実現
・業界経験10年以上の専任コンサルタントチームが担当
【出力】
1. 見出し案(すべて結論形)
2. 各見出しの要点(箇条書き3つまで)
3. 図のイメージ
・スライド10枚以内
・会議時間30分
・なぜ今、自社が適任かを前半で伝える
【禁止】
・抽象的なスローガンだけの見出しにしない
・曖昧な表現にしない
【前提】あなたは資料作成の専門家です。読み手の意思決定を助ける資料を設計します。
【目的】以下の骨子をもとに、資料の見出し案を作ってください。
【骨子】
マーケティング部長に、新規顧客獲得施策の現状と課題を共有し、今月中に予算配分の意思決定をしてもらうための資料。
現状と課題:
・売上は目標の80%
・新規顧客獲得単価が2倍に上昇
・セミナー経由の成約率が30%で高い
・Web広告の効果が低下
・予算再配分が必要
【出力】
・各見出しの要点3つまで
・会議時間15分
・結論を最初の2枚で伝える
【禁止】
・抽象的なスローガンだけの見出しにしない
・曖昧な表現にしない
【前提】あなたは資料作成の専門家です。読み手の意思決定を助ける資料を設計します。
【目的】2025年のAI エージェント市場動向を調べて、経営会議用の10枚スライドにまとめて。
【出力】
結論を最初に、主要プレーヤー、成長要因、リスク、自社への示唆を含めて。
【禁止】
・抽象的なスローガンだけの見出しにしない
・曖昧な表現にしない
【素材】期間:2024年11月~2025年1月の情報を優先
【前提】あなたは資料作成の専門家です。読み手の意思決定を助ける資料を設計します。
【目的】以下の素材の内容を含めた「新規顧客獲得施策の現状報告スライド」を作成して。
【出力】
1. ビジネス向けテンプレートを選択
2. 10枚のスライドを生成
3. グラフ・表も自動挿入
【禁止】
・抽象的なスローガンだけの見出しにしない
・曖昧な表現にしない
【素材】
・目標:月間50件、実績:40件(80%達成)
・予算配分の見直しを提案
・10枚以内、ビジネス向けテンプレート
【前提】あなたはスピーチライティングの専門家です。聴衆を引き込む原稿を作成します。
【目的】以下のスライド構成をもとに、20分のスピーチ原稿を作ってください。
【出力】
・各スライドの原稿(300字程度)
・話すときの注意点(間を取る場所、強調する言葉)
・聴衆に問いかけるフレーズを入れる
【禁止】一方的な説明にしない
【素材】スライド構成案を貼り付ける
第6章: タスク管理・スケジュール管理をしてもらう
7 prompts【前提】あなたはタスク管理の専門家です。
【目的】以下のテキストから、私がやるべきタスク候補をすべて抜き出してください。
【出力】
・タスク内容(動詞で始まる形)
・期限(明記されていれば)
・関係する相手やプロジェクト名
・所要時間(5分 / 30分 / 1時間 / 2時間 / 半日 / 1日)
・優先度(A / B / C)
【禁止】
・明らかに他人がやるべきタスクを混ぜない
・推測でタスクを追加しない
【素材】以下を貼り付ける
・直近1週間のメール(件名と本文)
・会議メモ
・自分のメモ帳
【前提】あなたはタスク管理の専門家です。
【目的】今日1日の作戦会議を一緒に行ってください。
【出力】
1. 今日やるタスクの順番
2. 着手トリガー(「会議が終わったら」など)
3. 詰まりそうなポイントと回避策
・A→B→Cの順にタスクに取りかかる
【禁止】非現実的なスケジュール提案をしない/移動時間や会議時間を無視した計画を立てない
【素材】
・今日の予定:
・ 9:00~10:00 営業会議
・ 13:00~14:00 移動時間
・14:00~15:00 A社との打ち合わせ
・15:00~16:00 移動時間
・16:00~17:00 打ち合わせフォロー
・Aタスク一覧:
・請求書発行依頼(5分)
・日程調整メール(5分)
・Bタスク一覧:
・見積書送付(30分)
【前提】あなたはタスク管理の専門家です。
【目的】明日の行動スケジュールを最適化してください。
【出力】
・移動時間を含めたタイムライン
・空き時間の活用案
・A→B→Cの順にタスクに取りかかる
【禁止】非現実的なスケジュール提案をしない/移動時間や会議時間を無視した計画を立てない
【素材】
・10:00 A社訪問(渋谷)
・14:00 B社訪問(新宿)
・17:00 帰社(丸の内)
・移動手段:電車
・Aタスク一覧:
・請求書発行依頼(5分)
・日程調整メール(5分)
・Bタスク一覧:
・見積書送付(30分)
【前提】あなたはカレンダー調整の専門家です。
【目的】以下の3人が全員参加できる1時間のミーティング日程候補を見つけてください。
【出力】
・候補日時(優先順)
・各候補のメリット・デメリット
【禁止】カレンダーの空き時間以外を候補日にしない
【素材】
・佐藤のカレンダー:
12/3: 9-12空き、14-18空き
12/4: 10-12空き、15-17空き
12/5: 終日空き
・田中のカレンダー:
12/3: 10-12空き、13-15空き
12/4: 9-11空き、14-16空き
12/5: 9-12空き
・鈴木のカレンダー:
12/3: 9-11空き、14-17空き
12/4: 10-14空き
12/5: 10-15空き
【前提】あなたは業務日報作成の専門家です。
【目的】今日の業務日報のたたき台を作ってください。
【出力】
・業務日報フォーマット(箇条書き)
-日付
-本日の業務内容
-本日の成果・気づき
-課題・懸念点
・明日の予定(仕掛かり含む)
【禁止】今日の業務内容に入っていないものを推測で追加しない
【素材】
今日の業務内容:
・9:00-10:00 営業会議
・10:30-12:00 A社提案資料作成
・14:00-15:00 A社との打ち合わせ
・15:30-17:00 議事録作成、フォローアップ
実績メモ:
・営業会議:来月のKPI目標を確認
・提案資料:8割完成、グラフ追加が残り
・A社打ち合わせ:好感触、来週に再提案予定
・議事録:完成して共有済み
【前提】あなたは株式会社〇〇のカスタマーサポート担当です。
・自社情報
会社名:株式会社〇〇
主力製品:クラウド勤怠管理システム「TimeTrack」
料金体系:月額500円/ユーザー(10ユーザー以上で割引あり)
サポート時間:平日9:00-18:00
・社内用語
CS:カスタマーサクセス
TS:テクニカルサポート
NDA:秘密保持契約
・禁止事項
競合製品の具体的な比較情報は提供しない
未発表の機能については言及しない
【目的】以下の問い合わせに回答してください:
(以下略)
【前提】あなたは株式会社〇〇のカスタマーサポートアシスタントです。
【目的】顧客からの問い合わせに、丁寧かつ正確に回答してください。
アップロードされた知識ベースを参照し、自社製品「○○○○」に関する質問に答えてください。
【出力】
・回答
知識ベースにない情報は「確認して折り返しご連絡します」と回答
競合製品との比較は行わない
価格については「お見積もりいたします」と案内
・文体
丁寧で親しみやすい
【禁止】専門用語は使わない
第7章: プログラム開発をしてもらう
6 prompts【前提】あなたはスプレッドシートの関数作成の専門家です。
【目的】売上データの集計で、以下の条件を満たすスプレッドシートの関数を作りたい。
【出力】動く関数を1つ書いてください。
【禁止】複雑すぎる数式は使わない/説明なしに追加の列や関数を使わない
【素材】
・条件
- A列が「東京」かつ B列が「2024年」のとき
- C列の売上金額を合計する
-ただし、D列が「キャンセル」の行は除外
・シートの構成
A列:地域
B列:年度
C列:売上金額
D列:ステータス
【前提】あなたはスプレッドシートの関数作成の専門家です。
【目的】商品マスタから、商品コードとサイズの2条件で価格を取得したい。
【出力】
動く関数を1つ書いてください。
【禁止】複雑すぎる数式は使わない/説明なしに追加の列や関数を使わない
【素材】
・参照元
シート「マスタ」のA列:商品コード、B列:サイズ、C列:価格
・取得したい場所
シート「受注シート」のD2セル(A2に商品コード、B2にサイズが入力されている)
【前提】あなたはExcel VBAマクロ開発の専門家です。
【目的】Excel ファイル内の複数シート(1月、2月、3月…)のデータを、「集計」シートに縦に結合したい。
【出力】
・ 動くExcelマクロを書いてください
【禁止】既存データを破壊するコードは使わない/エラーチェックを省略しない
【素材】
・各シートの構成
A列:日付、B列:商品名、C列:売上金額(1行目はヘッダー)
【前提】あなたはExcel VBAマクロ開発の専門家です。
【目的】売上金額が1,000円以上なら緑、500円以上なら黄、それ以下なら赤でセルを塗りたい。
【出力】
動くExcelマクロを書いてください。
【禁止】既存データを破壊するコードは使わない/エラーチェックを省略しない
【素材】
・対象
C列の2行目から最終行まで
【前提】あなたはGoogle Apps Script(GAS)とWebアプリ開発の専門家です。
【目的】社員が出勤・退勤ボタンを押すと、スプレッドシートに記録される簡易勤怠システムを作りたい。
【機能】
・ 社員名をドロップダウンで選択
・「 出勤」ボタンで現在時刻を記録
・「 退勤」ボタンで退勤時刻を記録
・ データはスプレッドシートに追記
【環境】
Googleスプレッドシート、GAS、Webアプリとして公開
【出力】
・ GASコードとHTMLを書いてください
・ デプロイ手順も教えてください
【禁止】セキュリティを考慮しないコードは使わない/エラー処理を省略しない
【前提】あなたはWebアプリ開発の専門家です。
【目的】美容室の予約管理システムを作ってください。
【機能】
・顧客が予約日時とメニューを選択
・予約一覧を管理者が確認
・予約の追加・編集・削除
・顧客情報を保存
【環境】Webアプリとして公開
【出力】
・清潔感のあるデザイン
・カレンダー表示で予約状況を確認
【禁止】セキュリティを考慮しないコードは使わない/エラー処理を省略しない
Google Apps Script(GAS)コード例(8件)
⚠ セキュリティ改善について このコードは書籍版からセキュリティ改善を行っています。
- XSS対策(innerHTML → textContent)
- 入力検証の追加
- 外部API送信時の警告追加
変更理由:コピペしてそのまま使う読者のため、より安全なコードにしました。
📝 コード品質について:すべてのコードは実用性とセキュリティを重視して作成されています。
✅ セキュリティ強化:入力検証、XSS対策、適切なエラーハンドリングを実装
✅ パフォーマンス最適化:効率的なデータ取得とシート操作
⚠️ 重要な注意:OpenAI連携コードは機密情報を外部APIに送信します。必ず組織の規定を確認し、必要に応じてデータをマスキングしてください。
📋 セットアップ手順
- Googleスプレッドシートを新規作成
- 拡張機能→Apps Scriptを選択
- コードを貼り付けて保存
- 実行ボタンをクリック(初回はGmail権限の許可が必要)
- スプレッドシートのA1セルにメール内容が出力される
function getUnreadEmails() {
// 未読メールを取得(最新5件)
const threads = GmailApp.search('is:unread', 0, 5);
let output = '';
threads.forEach(function(thread) {
const messages = thread.getMessages();
const lastMessage = messages[messages.length - 1];
output += '【送信者】' + lastMessage.getFrom() + '\n';
output += '【件名】' + lastMessage.getSubject() + '\n';
output += '【本文】' + lastMessage.getPlainBody().substring(0, 500) + '\n';
output += '---\n';
});
// 結果をログに出力(コピー用)
Logger.log(output);
// スプレッドシートにも出力(任意)
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.getRange('A1').setValue(output);
}
📋 セットアップ手順
- GASスクリプトエディタにコードを貼り付け
- 関数名を選択して実行
- to(宛先)、subject(件名)、body(本文)を引数として渡す
- Gmailの下書きフォルダに保存される
function createDraft(to, subject, body) {
GmailApp.createDraft(to, subject, body);
Logger.log('下書きを作成しました: ' + subject);
}
// 使い方:スクリプトエディタで以下を実行
// createDraft('example@email.com', 'Re: お問い合わせの件', '本文をここに入力');
📋 セットアップ手順
- Googleスプレッドシートを新規作成
- 拡張機能→Apps Scriptを選択
- コードを貼り付け
- APIキーをScript Propertiesに設定:
- Apps Scriptエディタで「プロジェクトの設定」(歯車アイコン)をクリック
- 「スクリプト プロパティ」セクションで「スクリプト プロパティを追加」をクリック
- プロパティ名: OPENAI_API_KEY
- 値: OpenAI APIキーを貼り付け
- 「スクリプト プロパティを保存」をクリック
- 実行ボタンをクリック(初回はGmail権限の許可が必要)
- Gmailの下書きフォルダに返信案が自動生成される
- ⚠ 注意: メール本文を外部APIへ送信します。機密情報は送らない/必要に応じてマスキングし、所属組織の規定に従ってください
function autoReplyWithGPT() {
// Script PropertiesからAPIキーを取得(安全のため)
const OPENAI_API_KEY = PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY');
if (!OPENAI_API_KEY) {
Logger.log('エラー: APIキーが設定されていません。Script Propertiesに設定してください。');
return;
}
// 未読メールを取得(最新5件)
const threads = GmailApp.search('is:unread', 0, 5);
threads.forEach(function(thread) {
const messages = thread.getMessages();
const lastMessage = messages[messages.length - 1];
const sender = lastMessage.getFrom();
const subject = lastMessage.getSubject();
const body = lastMessage.getPlainBody();
// GPT APIに返信案生成をリクエスト
const prompt = `以下のメールに対する返信案を作成してください。
【送信者】${sender}
【件名】${subject}
【本文】${body}
【出力条件】
- 件名案を1つ
- 本文は5〜7文(宛名・署名を除く本文のみ)
- 敬体・やわらかめのトーン
- 値引きや確約の約束はしない`;
const replyDraft = callOpenAI(prompt, OPENAI_API_KEY);
if (!replyDraft) {
Logger.log('返信案の生成に失敗したためスキップ: ' + subject);
return;
}
// 返信案をGmailの下書きに保存
const replyTo = lastMessage.getReplyTo() || sender;
GmailApp.createDraft(replyTo, 'Re: ' + subject, replyDraft);
// 既読にして重複処理を防ぐ
thread.markRead();
Logger.log('下書きを作成しました: ' + subject);
});
}
function callOpenAI(prompt, apiKey) {
const url = 'https://api.openai.com/v1/responses';
const payload = {
model: 'gpt-4o-mini', // コスト重視ならgpt-4o-mini、品質重視ならgpt-4o
input: prompt,
temperature: 0.7
};
const options = {
method: 'post',
contentType: 'application/json',
headers: {
'Authorization': 'Bearer ' + apiKey
},
payload: JSON.stringify(payload),
muteHttpExceptions: true
};
try {
const response = UrlFetchApp.fetch(url, options);
const status = response.getResponseCode();
const text = response.getContentText();
if (status !== 200) {
Logger.log('APIエラー: ' + status + ' ' + text);
return null;
}
const json = JSON.parse(text);
const content = extractOutputText(json);
if (!content) {
Logger.log('APIエラー: 返信本文が取得できません ' + text);
return null;
}
return content;
} catch (error) {
Logger.log('エラー: ' + error);
return null;
}
}
function extractOutputText(responseJson) {
if (responseJson && responseJson.output_text) return responseJson.output_text;
const output = responseJson && responseJson.output;
if (!output || !output.length) return '';
let text = '';
output.forEach(function(item) {
if (item.type === 'message' && item.role === 'assistant' && item.content) {
item.content.forEach(function(part) {
if (part.type === 'output_text' && part.text) {
text += part.text;
}
});
}
});
return text;
}
📋 セットアップ手順
- スプレッドシートに「レポート出力」シートを作成
- Apps Scriptで上記コードを貼り付け
- トリガーを設定(毎週金曜17:00に自動実行)
- 「レポート出力」シートのA1セルをコピー
- ChatGPT無料版に貼り付けて分析を依頼
function getWeeklyReport() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('売上データ');
if (!sheet) throw new Error('シート「売上データ」が見つかりません');
const outputSheet = ss.getSheetByName('レポート出力');
if (!outputSheet) throw new Error('シート「レポート出力」が見つかりません');
const lastRow = sheet.getLastRow();
if (lastRow < 2) {
const output = '【今週の売上データ】\n\nデータがありません。';
outputSheet.getRange('A1').setValue(output);
Logger.log(output);
return;
}
// 直近7日分のデータを取得
const today = new Date();
const weekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
// A〜C列のみ取得(必要な範囲だけ)
const data = sheet.getRange(2, 1, lastRow - 1, 3).getValues();
let output = '【今週の売上データ】\n\n';
for (let i = 0; i < data.length; i++) {
const rowDate = new Date(data[i][0]); // A列が日付と仮定
if (rowDate >= weekAgo && rowDate <= today) {
output += `${data[i][0]} | ${data[i][1]} | ${data[i][2]}円\n`;
}
}
// スプレッドシートに出力(コピー用)
outputSheet.getRange('A1').setValue(output);
Logger.log(output);
}
📋 セットアップ手順
- Googleスプレッドシートを新規作成
- Apps Scriptで上記コードを貼り付け
- トリガーを設定(毎朝7:00に自動実行)
- スプレッドシートのA1セルをコピー
- ChatGPT無料版に貼り付けて優先度付けを依頼
function getTodaySchedule() {
const tz = Session.getScriptTimeZone();
// 今日の0:00から翌日の0:00までを取得(実行時刻に関わらず全予定を取得)
const today = new Date();
today.setHours(0, 0, 0, 0); // 今日の0:00
const tomorrow = new Date(today);
tomorrow.setDate(tomorrow.getDate() + 1); // 翌日の0:00
const calendar = CalendarApp.getDefaultCalendar();
const events = calendar.getEvents(today, tomorrow);
let output = '【今日の予定】\n\n';
events.forEach(function(event) {
const start = Utilities.formatDate(event.getStartTime(), tz, 'HH:mm');
const end = Utilities.formatDate(event.getEndTime(), tz, 'HH:mm');
output += `${start}-${end} | ${event.getTitle()}\n`;
});
// スプレッドシートに出力
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.getRange('A1').setValue(output);
// メールで自分に送信(任意)
// GmailApp.sendEmail('自分のメールアドレス', '今日の予定', output);
Logger.log(output);
}
📋 セットアップ手順
- OpenAI APIキーを取得(https://platform.openai.com/api-keys)
- GASのスクリプトプロパティに OPENAI_API_KEY を登録
- Apps Script エディタ → プロジェクトの設定 → スクリプト プロパティ
- 上記コードを貼り付け
- トリガーを設定(毎朝7:00に自動実行)
- ⚠ 注意: 予定タイトル等を外部APIへ送信します。機密情報は送らない/必要に応じてマスキングし、所属組織の規定に従ってください
function analyzeScheduleWithAI() {
const tz = Session.getScriptTimeZone();
// 今日の予定を取得
const today = new Date();
today.setHours(0, 0, 0, 0);
const tomorrow = new Date(today);
tomorrow.setDate(tomorrow.getDate() + 1);
const calendar = CalendarApp.getDefaultCalendar();
const events = calendar.getEvents(today, tomorrow);
let scheduleText = '【今日の予定】\n\n';
events.forEach(function(event) {
const start = Utilities.formatDate(event.getStartTime(), tz, 'HH:mm');
const end = Utilities.formatDate(event.getEndTime(), tz, 'HH:mm');
scheduleText += `${start}-${end} | ${event.getTitle()}\n`;
});
// OpenAI APIにリクエスト
const apiKey = PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY');
if (!apiKey) {
Logger.log('エラー: APIキーが設定されていません。Script Propertiesに設定してください。');
return;
}
const prompt = `【前提】あなたはタスク管理の専門家です。
【目的】以下の今日の予定を確認し、優先タスクを整理してください。
【素材】
${scheduleText}
【出力】
- 優先度A(今日中に必須):最大3つ
- 優先度B(今日中が望ましい):最大3つ
- 準備が必要な会議:会議名と必要な準備
- 隙間時間(30分以上の空き)があれば指摘`;
const options = {
'method': 'post',
'contentType': 'application/json',
'headers': {
'Authorization': 'Bearer ' + apiKey
},
'payload': JSON.stringify({
'model': 'gpt-4o-mini',
'input': prompt,
'temperature': 0.7
}),
'muteHttpExceptions': true
};
try {
const response = UrlFetchApp.fetch('https://api.openai.com/v1/responses', options);
const status = response.getResponseCode();
const text = response.getContentText();
if (status !== 200) {
Logger.log('APIエラー: ' + status + ' ' + text);
return;
}
const result = JSON.parse(text);
const aiAnalysis = extractOutputText(result);
if (!aiAnalysis) {
Logger.log('APIエラー: 解析結果が取得できません ' + text);
return;
}
// スプレッドシートに出力
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.getRange('A1').setValue('【今日の予定】\n' + scheduleText);
sheet.getRange('A10').setValue('【AI分析結果】\n' + aiAnalysis);
// Gmailで送信(任意)
// GmailApp.sendEmail('自分のメールアドレス', '今日のタスク分析', scheduleText + '\n\n' + aiAnalysis);
Logger.log(aiAnalysis);
} catch (error) {
Logger.log('エラー: ' + error);
}
}
function extractOutputText(responseJson) {
if (responseJson && responseJson.output_text) return responseJson.output_text;
const output = responseJson && responseJson.output;
if (!output || !output.length) return '';
let text = '';
output.forEach(function(item) {
if (item.type === 'message' && item.role === 'assistant' && item.content) {
item.content.forEach(function(part) {
if (part.type === 'output_text' && part.text) {
text += part.text;
}
});
}
});
return text;
}
📋 セットアップ手順
- GASエディタで「トリガー」をクリック
- 「トリガーを追加」を選択
- 実行する関数:copySheetIfLastDay
- イベントソース:時間主導型
- タイプ:日タイマー
- 時刻:深夜0時〜1時
function copySheetIfLastDay() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('売上');
if (!sheet) throw new Error('シート「売上」が見つかりません');
const now = new Date();
const year = now.getFullYear();
const month = now.getMonth() + 1;
// 月末判定:明日が翌月なら今日は月末
const tomorrow = new Date(now);
tomorrow.setDate(now.getDate() + 1);
const isLastDay = tomorrow.getMonth() !== now.getMonth();
if (!isLastDay) return;
const newName = `売上_${year}年${month}月`;
// 同名シートがあるとエラーになるのでガード
const existing = ss.getSheetByName(newName);
if (existing) throw new Error(`同名シートが既に存在します: ${newName}`);
// シートをコピー
sheet.copyTo(ss).setName(newName);
Logger.log(`${newName} を作成しました`);
}
📋 セットアップ手順
- GASエディタで「デプロイ」→「新しいデプロイ」
- 種類:「ウェブアプリ」を選択
- 実行するユーザー:「自分」
- アクセスできるユーザー:「組織内の全員」を推奨(Google Workspaceドメイン内に限定)
- 「デプロイ」をクリック
- 表示されたURLを社員に共有
- ⚠ 注意: 実行するユーザーを「自分」にすると、誰が操作しても作成者名義で記録されます。本人確認が必要な場合は「アクセスしているユーザー」での実行(Workspace限定)や別の認証手段を検討してください
// Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('index')
.setTitle('勤怠管理システム');
}
function getEmployees() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('社員マスタ');
if (!sheet) throw new Error('シート「社員マスタ」が見つかりません');
const lastRow = sheet.getLastRow();
if (lastRow < 2) return [];
const data = sheet.getRange(2, 1, lastRow - 1, 1).getValues();
return data.flat().filter(name => name !== '');
}
function recordAttendance(employeeName, type) {
const allowedTypes = { '出勤': true, '退勤': true };
if (!allowedTypes[type]) return 'エラー:不正な打刻種別です。';
const employees = getEmployees();
if (employees.indexOf(employeeName) === -1) return 'エラー:社員名が見つかりません。';
// 同時押しによる行の競合を防ぐため、ロックを取得
const lock = LockService.getScriptLock();
let lockAcquired = false;
try {
lock.waitLock(10000); // 最大10秒待機
lockAcquired = true;
} catch (e) {
return 'エラー:処理が混雑しています。もう一度お試しください。';
}
try {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('勤怠記録');
if (!sheet) throw new Error('シート「勤怠記録」が見つかりません');
const tz = Session.getScriptTimeZone();
const now = new Date();
const today = Utilities.formatDate(now, tz, 'yyyy/MM/dd');
const time = Utilities.formatDate(now, tz, 'HH:mm:ss');
if (type === '出勤') {
sheet.appendRow([today, employeeName, time, '']);
return `${employeeName}さんの${type}を記録しました(${time})`;
} else {
// 今日の出勤記録を探して退勤時刻を更新
const data = sheet.getDataRange().getValues();
for (let i = data.length - 1; i >= 1; i--) {
if (data[i][0] === today && data[i][1] === employeeName && data[i][3] === '') {
sheet.getRange(i + 1, 4).setValue(time);
return `${employeeName}さんの${type}を記録しました(${time})`;
}
}
return 'エラー:本日の出勤記録が見つかりません。';
}
} finally {
if (lockAcquired) {
lock.releaseLock(); // 必ずロックを解放
}
}
}
// index.html
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: sans-serif; padding: 20px; max-width: 400px; margin: 0 auto; }
select, button { width: 100%; padding: 15px; margin: 10px 0; font-size: 18px; }
.checkin { background: #4CAF50; color: white; border: none; cursor: pointer; }
.checkout { background: #f44336; color: white; border: none; cursor: pointer; }
#message { padding: 15px; margin-top: 20px; border-radius: 5px; }
</style>
</head>
<body>
<h1>勤怠管理システム</h1>
<label>社員名</label>
<select id="employee"></select>
<button class="checkin" onclick="record('出勤')">出勤</button>
<button class="checkout" onclick="record('退勤')">退勤</button>
<div id="message"></div>
<script>
// 社員リストを取得
google.script.run.withSuccessHandler(function(employees) {
const select = document.getElementById('employee');
employees.forEach(function(name) {
const option = document.createElement('option');
option.value = name;
option.text = name;
select.appendChild(option);
});
}).getEmployees();
function record(type) {
const employee = document.getElementById('employee').value;
google.script.run.withSuccessHandler(function(result) {
const message = document.getElementById('message');
message.textContent = result;
message.style.background = type === '出勤' ? '#e8f5e9' : '#ffebee';
}).recordAttendance(employee, type);
}
</script>
</body>
</html>
書籍読者限定
30分で自社向けAI活用テーマを3つ持ち帰る
テンプレートをベースに、御社の業務に特化したプロンプト集を作成。初回相談では部署別テンプレ3本をご提案します。