MENU

【AI初心者必見!】面倒なアンケート業務がゼロになる!GASとNotebookLMでアンケート分析からスライド生成するマニュアル

「日々のアンケート集計やレポート作成に追われて、本来やるべき仕事に集中できない…」

そんな悩みを抱えるあなたに朗報です。AIの力を借りれば、これまで何時間もかかっていたアンケート業務を、わずか数分で、しかもほぼ自動で完了させることができます。本記事では、プログラミング経験がないAI初心者の方でも安心して取り組めるよう、具体的な手順を一つひとつ、豊富なスクリーンショット付きで丁寧に解説します。

この記事を読み終える頃には、あなたも「アンケートフォームの作成」から「回答データの分析」、そして「プレゼン資料の作成」までを全自動で行うスキルが身についているはずです。退屈な作業から解放され、データに基づいた戦略的な意思決定に時間を使う、新しい働き方を始めましょう!


目次

全体像:自動化フローの4ステップ

今回構築する自動化の全体像は、以下の4つのステップで構成されています。それぞれGoogleの無料ツールや最先端のAIを組み合わせることで、驚くほどスムーズな連携が実現します。

ステップ内容使用ツール
1. 準備AI(Claude)に指示を出し、アンケートフォームのプログラムを自動生成させる。Claude
2. 実装Google Apps Script (GAS) を使い、生成されたプログラムをウェブ上に公開する。Google Apps Script
3. 集計公開したフォームへの回答を、Googleスプレッドシートで自動的に集計・管理する。Google Sheets
4. 分析・資料化蓄積されたデータをNotebookLMに読み込ませ、AIによる高度な分析とスライド資料の自動生成を行う。NotebookLM

それでは、各ステップを詳しく見ていきましょう。

ステップ1:【準備編】AIに命令してGASコードを生成しよう

最初のステップは、アンケートフォームの心臓部となるプログラムコードの生成です。ここでは、高度な対話能力を持つAI「Claude」に、私たちの要望を伝えるだけで、必要なコード一式を作成してもらいます。

1. Claudeに要望を伝える

まずは、どのようなアンケートフォームを作りたいのか、具体的な目的や項目をClaudeに伝えます。今回は「AIコンサル導入のためのヒアリング」というテーマで、以下のようなプロンプト(指示文)を入力します。

プロンプト例:
YouTubeでAI活用について解説するチャンネルを運営しており、以下のフローをAIで自動化する解説動画を撮りたいです。
【フロー】
①GASでお問い合わせフォームを作成
②スプシでデータを集計
③CSV化してダウンロードしてNotebookLMにソースとして追加
④NotebookLMでレポート作成
まずは、このフローの解説に必要なアンケートフォームを作成したいので、テーマを「AIコンサル導入のためのヒアリング」として、回答者は中小企業の経営者として、必要な項目を考えて、お問い合わせフォームを作成するために必要なGASを組んでください。スクリプトファイルだけじゃなくて、index.htmlファイルもください。

Claudeへのプロンプト入力画面

2. AIが設計とコーディングを代行

指示を出すと、Claudeがフォームに必要な項目(会社名、業種、AIの活用状況など)を自動で設計し、プレビュー画面と共に提示してくれます。人間がゼロから考えるよりも遥かに速く、網羅的な項目案が得られます。

Claudeによるフォームプレビュー
実際に作成してくれたスクリプトファイル
/**
 * AIコンサル導入ヒアリングフォーム
 * 
 * 【初期設定】
 * 1. 新しいGoogleスプレッドシートを作成
 * 2. スプレッドシートのIDを下のSPREADSHEET_IDに設定
 * 3. シート名を「回答データ」に変更(または SHEET_NAME を変更)
 * 4. デプロイ → 新しいデプロイ → ウェブアプリ として公開
 */

// ===== 設定 =====
const SPREADSHEET_ID = 'ここにスプレッドシートIDを入力'; // スプレッドシートのIDを入力
const SHEET_NAME = '回答データ';

// ===== メイン処理 =====

/**
 * GETリクエスト時にHTMLフォームを表示
 */
function doGet() {
  return HtmlService.createHtmlOutputFromFile('index')
    .setTitle('AIコンサル導入ヒアリング')
    .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

/**
 * POSTリクエスト時にフォームデータを処理
 */
function doPost(e) {
  try {
    const data = JSON.parse(e.postData.contents);
    saveToSpreadsheet(data);
    
    return ContentService
      .createTextOutput(JSON.stringify({ success: true, message: '送信が完了しました' }))
      .setMimeType(ContentService.MimeType.JSON);
      
  } catch (error) {
    return ContentService
      .createTextOutput(JSON.stringify({ success: false, message: error.toString() }))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

/**
 * スプレッドシートにデータを保存
 */
function saveToSpreadsheet(data) {
  const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
  let sheet = ss.getSheetByName(SHEET_NAME);
  
  // シートがなければ作成してヘッダーを追加
  if (!sheet) {
    sheet = ss.insertSheet(SHEET_NAME);
    const headers = [
      'タイムスタンプ',
      '会社名',
      '担当者名',
      'メールアドレス',
      '電話番号',
      '業種',
      '従業員規模',
      '現在のAI活用状況',
      '検討している業務領域',
      'AI導入の目的',
      '予算感',
      '導入希望時期',
      '現在の業務課題',
      'ご質問・ご要望'
    ];
    sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
    sheet.getRange(1, 1, 1, headers.length).setFontWeight('bold');
    sheet.setFrozenRows(1);
  }
  
  // データを配列に変換
  const timestamp = new Date();
  const rowData = [
    timestamp,
    data.companyName || '',
    data.contactName || '',
    data.email || '',
    data.phone || '',
    data.industry || '',
    data.employeeSize || '',
    data.currentAiUsage || '',
    (data.targetAreas || []).join(', '),
    (data.purposes || []).join(', '),
    data.budget || '',
    data.timeline || '',
    data.challenges || '',
    data.questions || ''
  ];
  
  // 最終行に追加
  sheet.appendRow(rowData);
  
  // 列幅を自動調整(初回のみ)
  if (sheet.getLastRow() === 2) {
    sheet.autoResizeColumns(1, rowData.length);
  }
}

/**
 * テスト用:スプレッドシートの初期化
 */
function initializeSheet() {
  const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
  let sheet = ss.getSheetByName(SHEET_NAME);
  
  if (sheet) {
    sheet.clear();
  } else {
    sheet = ss.insertSheet(SHEET_NAME);
  }
  
  const headers = [
    'タイムスタンプ',
    '会社名',
    '担当者名',
    'メールアドレス',
    '電話番号',
    '業種',
    '従業員規模',
    '現在のAI活用状況',
    '検討している業務領域',
    'AI導入の目的',
    '予算感',
    '導入希望時期',
    '現在の業務課題',
    'ご質問・ご要望'
  ];
  
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
  sheet.getRange(1, 1, 1, headers.length).setFontWeight('bold');
  sheet.setFrozenRows(1);
  sheet.autoResizeColumns(1, headers.length);
  
  Logger.log('シートを初期化しました');
}
実際に作成してくれたhtmlファイル
<!DOCTYPE html>
<html>
<head>
  <base target="_top">
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    * {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
    }
    
    body {
      font-family: 'Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', Meiryo, sans-serif;
      background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
      min-height: 100vh;
      padding: 40px 20px;
    }
    
    .container {
      max-width: 700px;
      margin: 0 auto;
      background: #fff;
      border-radius: 16px;
      box-shadow: 0 20px 60px rgba(0,0,0,0.15);
      overflow: hidden;
    }
    
    .header {
      background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
      color: #fff;
      padding: 40px 30px;
      text-align: center;
    }
    
    .header h1 {
      font-size: 24px;
      font-weight: 600;
      margin-bottom: 10px;
    }
    
    .header p {
      font-size: 14px;
      opacity: 0.9;
    }
    
    .form-body {
      padding: 40px 30px;
    }
    
    .section {
      margin-bottom: 35px;
    }
    
    .section-title {
      font-size: 16px;
      font-weight: 600;
      color: #333;
      margin-bottom: 20px;
      padding-bottom: 10px;
      border-bottom: 2px solid #667eea;
      display: flex;
      align-items: center;
      gap: 8px;
    }
    
    .section-title::before {
      content: '';
      width: 4px;
      height: 20px;
      background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
      border-radius: 2px;
    }
    
    .form-group {
      margin-bottom: 20px;
    }
    
    label {
      display: block;
      font-size: 14px;
      font-weight: 500;
      color: #444;
      margin-bottom: 8px;
    }
    
    .required::after {
      content: ' *';
      color: #e53e3e;
    }
    
    input[type="text"],
    input[type="email"],
    input[type="tel"],
    select,
    textarea {
      width: 100%;
      padding: 12px 16px;
      font-size: 15px;
      border: 2px solid #e2e8f0;
      border-radius: 8px;
      transition: all 0.3s ease;
      background: #fff;
    }
    
    input:focus,
    select:focus,
    textarea:focus {
      outline: none;
      border-color: #667eea;
      box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
    }
    
    textarea {
      min-height: 120px;
      resize: vertical;
    }
    
    .checkbox-group {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
      gap: 12px;
    }
    
    .checkbox-item {
      display: flex;
      align-items: center;
      gap: 10px;
      padding: 12px 16px;
      background: #f8fafc;
      border-radius: 8px;
      cursor: pointer;
      transition: all 0.2s ease;
      border: 2px solid transparent;
    }
    
    .checkbox-item:hover {
      background: #f1f5f9;
    }
    
    .checkbox-item.checked {
      background: #ebf4ff;
      border-color: #667eea;
    }
    
    .checkbox-item input {
      width: 18px;
      height: 18px;
      cursor: pointer;
      accent-color: #667eea;
    }
    
    .checkbox-item span {
      font-size: 14px;
      color: #444;
    }
    
    .radio-group {
      display: flex;
      flex-direction: column;
      gap: 10px;
    }
    
    .radio-item {
      display: flex;
      align-items: center;
      gap: 10px;
      padding: 12px 16px;
      background: #f8fafc;
      border-radius: 8px;
      cursor: pointer;
      transition: all 0.2s ease;
      border: 2px solid transparent;
    }
    
    .radio-item:hover {
      background: #f1f5f9;
    }
    
    .radio-item.checked {
      background: #ebf4ff;
      border-color: #667eea;
    }
    
    .radio-item input {
      width: 18px;
      height: 18px;
      cursor: pointer;
      accent-color: #667eea;
    }
    
    .radio-item span {
      font-size: 14px;
      color: #444;
    }
    
    .submit-btn {
      width: 100%;
      padding: 16px 32px;
      font-size: 16px;
      font-weight: 600;
      color: #fff;
      background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
      border: none;
      border-radius: 8px;
      cursor: pointer;
      transition: all 0.3s ease;
      margin-top: 20px;
    }
    
    .submit-btn:hover {
      transform: translateY(-2px);
      box-shadow: 0 10px 30px rgba(102, 126, 234, 0.4);
    }
    
    .submit-btn:disabled {
      opacity: 0.7;
      cursor: not-allowed;
      transform: none;
    }
    
    .success-message {
      display: none;
      text-align: center;
      padding: 60px 30px;
    }
    
    .success-message.show {
      display: block;
    }
    
    .success-icon {
      width: 80px;
      height: 80px;
      background: linear-gradient(135deg, #48bb78 0%, #38a169 100%);
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 0 auto 24px;
    }
    
    .success-icon svg {
      width: 40px;
      height: 40px;
      fill: #fff;
    }
    
    .success-message h2 {
      font-size: 24px;
      color: #333;
      margin-bottom: 12px;
    }
    
    .success-message p {
      font-size: 15px;
      color: #666;
      line-height: 1.6;
    }
    
    .form-content.hide {
      display: none;
    }
    
    .loading {
      display: inline-block;
      width: 20px;
      height: 20px;
      border: 2px solid rgba(255,255,255,0.3);
      border-radius: 50%;
      border-top-color: #fff;
      animation: spin 1s linear infinite;
      margin-right: 8px;
      vertical-align: middle;
    }
    
    @keyframes spin {
      to { transform: rotate(360deg); }
    }
    
    @media (max-width: 600px) {
      body {
        padding: 20px 10px;
      }
      
      .header {
        padding: 30px 20px;
      }
      
      .form-body {
        padding: 30px 20px;
      }
      
      .checkbox-group {
        grid-template-columns: 1fr;
      }
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="header">
      <h1>🤖 AIコンサル導入ヒアリング</h1>
      <p>貴社のAI活用に最適なご提案のため、以下のフォームにご回答ください</p>
    </div>
    
    <div class="form-body">
      <!-- 送信完了メッセージ -->
      <div class="success-message" id="successMessage">
        <div class="success-icon">
          <svg viewBox="0 0 24 24"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>
        </div>
        <h2>送信が完了しました!</h2>
        <p>お問い合わせいただきありがとうございます。<br>内容を確認の上、担当者より2営業日以内にご連絡いたします。</p>
      </div>
      
      <!-- フォーム本体 -->
      <form id="inquiryForm" class="form-content">
        
        <!-- 基本情報セクション -->
        <div class="section">
          <h2 class="section-title">基本情報</h2>
          
          <div class="form-group">
            <label for="companyName" class="required">会社名</label>
            <input type="text" id="companyName" name="companyName" required placeholder="例:株式会社サンプル">
          </div>
          
          <div class="form-group">
            <label for="contactName" class="required">ご担当者名</label>
            <input type="text" id="contactName" name="contactName" required placeholder="例:山田 太郎">
          </div>
          
          <div class="form-group">
            <label for="email" class="required">メールアドレス</label>
            <input type="email" id="email" name="email" required placeholder="例:yamada@example.com">
          </div>
          
          <div class="form-group">
            <label for="phone">電話番号</label>
            <input type="tel" id="phone" name="phone" placeholder="例:03-1234-5678">
          </div>
          
          <div class="form-group">
            <label for="industry" class="required">業種</label>
            <select id="industry" name="industry" required>
              <option value="">選択してください</option>
              <option value="製造業">製造業</option>
              <option value="小売・卸売業">小売・卸売業</option>
              <option value="サービス業">サービス業</option>
              <option value="IT・情報通信業">IT・情報通信業</option>
              <option value="建設・不動産業">建設・不動産業</option>
              <option value="金融・保険業">金融・保険業</option>
              <option value="医療・福祉">医療・福祉</option>
              <option value="飲食業">飲食業</option>
              <option value="運輸・物流業">運輸・物流業</option>
              <option value="教育・学習支援">教育・学習支援</option>
              <option value="その他">その他</option>
            </select>
          </div>
          
          <div class="form-group">
            <label class="required">従業員規模</label>
            <div class="radio-group" id="employeeSizeGroup">
              <label class="radio-item">
                <input type="radio" name="employeeSize" value="1〜10名" required>
                <span>1〜10名</span>
              </label>
              <label class="radio-item">
                <input type="radio" name="employeeSize" value="11〜30名">
                <span>11〜30名</span>
              </label>
              <label class="radio-item">
                <input type="radio" name="employeeSize" value="31〜50名">
                <span>31〜50名</span>
              </label>
              <label class="radio-item">
                <input type="radio" name="employeeSize" value="51〜100名">
                <span>51〜100名</span>
              </label>
              <label class="radio-item">
                <input type="radio" name="employeeSize" value="101〜300名">
                <span>101〜300名</span>
              </label>
              <label class="radio-item">
                <input type="radio" name="employeeSize" value="301名以上">
                <span>301名以上</span>
              </label>
            </div>
          </div>
        </div>
        
        <!-- AI導入検討状況セクション -->
        <div class="section">
          <h2 class="section-title">AI導入の検討状況</h2>
          
          <div class="form-group">
            <label class="required">現在のAI活用状況</label>
            <div class="radio-group" id="currentAiUsageGroup">
              <label class="radio-item">
                <input type="radio" name="currentAiUsage" value="全く活用していない" required>
                <span>全く活用していない</span>
              </label>
              <label class="radio-item">
                <input type="radio" name="currentAiUsage" value="個人レベルで一部活用">
                <span>個人レベルで一部活用(ChatGPT等)</span>
              </label>
              <label class="radio-item">
                <input type="radio" name="currentAiUsage" value="部署単位で試験導入中">
                <span>部署単位で試験導入中</span>
              </label>
              <label class="radio-item">
                <input type="radio" name="currentAiUsage" value="全社的に活用中">
                <span>全社的に活用中</span>
              </label>
            </div>
          </div>
          
          <div class="form-group">
            <label>AI導入を検討している業務領域(複数選択可)</label>
            <div class="checkbox-group" id="targetAreasGroup">
              <label class="checkbox-item">
                <input type="checkbox" name="targetAreas" value="営業・マーケティング">
                <span>営業・マーケティング</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="targetAreas" value="カスタマーサポート">
                <span>カスタマーサポート</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="targetAreas" value="経理・財務">
                <span>経理・財務</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="targetAreas" value="人事・採用">
                <span>人事・採用</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="targetAreas" value="製造・生産管理">
                <span>製造・生産管理</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="targetAreas" value="在庫・物流管理">
                <span>在庫・物流管理</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="targetAreas" value="文書作成・管理">
                <span>文書作成・管理</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="targetAreas" value="データ分析・レポート">
                <span>データ分析・レポート</span>
              </label>
            </div>
          </div>
          
          <div class="form-group">
            <label>AI導入の目的(複数選択可)</label>
            <div class="checkbox-group" id="purposesGroup">
              <label class="checkbox-item">
                <input type="checkbox" name="purposes" value="業務効率化・時間短縮">
                <span>業務効率化・時間短縮</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="purposes" value="人件費の削減">
                <span>人件費の削減</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="purposes" value="売上・利益の向上">
                <span>売上・利益の向上</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="purposes" value="顧客満足度の向上">
                <span>顧客満足度の向上</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="purposes" value="人手不足の解消">
                <span>人手不足の解消</span>
              </label>
              <label class="checkbox-item">
                <input type="checkbox" name="purposes" value="競合との差別化">
                <span>競合との差別化</span>
              </label>
            </div>
          </div>
          
          <div class="form-group">
            <label>ご検討中の予算感</label>
            <select id="budget" name="budget">
              <option value="">選択してください</option>
              <option value="〜30万円">〜30万円</option>
              <option value="30〜50万円">30〜50万円</option>
              <option value="50〜100万円">50〜100万円</option>
              <option value="100〜300万円">100〜300万円</option>
              <option value="300万円以上">300万円以上</option>
              <option value="未定">未定・要相談</option>
            </select>
          </div>
          
          <div class="form-group">
            <label>導入希望時期</label>
            <select id="timeline" name="timeline">
              <option value="">選択してください</option>
              <option value="すぐにでも">すぐにでも</option>
              <option value="1ヶ月以内">1ヶ月以内</option>
              <option value="3ヶ月以内">3ヶ月以内</option>
              <option value="半年以内">半年以内</option>
              <option value="1年以内">1年以内</option>
              <option value="情報収集段階">情報収集段階</option>
            </select>
          </div>
        </div>
        
        <!-- 課題・要望セクション -->
        <div class="section">
          <h2 class="section-title">課題・ご要望</h2>
          
          <div class="form-group">
            <label for="challenges">現在の業務における課題</label>
            <textarea id="challenges" name="challenges" placeholder="例:毎月の請求書作成に多くの時間がかかっている、顧客対応の品質にばらつきがある、など"></textarea>
          </div>
          
          <div class="form-group">
            <label for="questions">ご質問・ご要望</label>
            <textarea id="questions" name="questions" placeholder="AIコンサルに期待すること、ご不明点などがあればお書きください"></textarea>
          </div>
        </div>
        
        <button type="submit" class="submit-btn" id="submitBtn">
          送信する
        </button>
      </form>
    </div>
  </div>

  <script>
    // チェックボックスのスタイル制御
    document.querySelectorAll('.checkbox-item input').forEach(checkbox => {
      checkbox.addEventListener('change', function() {
        this.closest('.checkbox-item').classList.toggle('checked', this.checked);
      });
    });
    
    // ラジオボタンのスタイル制御
    document.querySelectorAll('.radio-item input').forEach(radio => {
      radio.addEventListener('change', function() {
        const group = this.closest('.radio-group');
        group.querySelectorAll('.radio-item').forEach(item => {
          item.classList.remove('checked');
        });
        this.closest('.radio-item').classList.add('checked');
      });
    });
    
    // フォーム送信処理
    document.getElementById('inquiryForm').addEventListener('submit', async function(e) {
      e.preventDefault();
      
      const submitBtn = document.getElementById('submitBtn');
      submitBtn.disabled = true;
      submitBtn.innerHTML = '<span class="loading"></span>送信中...';
      
      // フォームデータを収集
      const formData = {
        companyName: document.getElementById('companyName').value,
        contactName: document.getElementById('contactName').value,
        email: document.getElementById('email').value,
        phone: document.getElementById('phone').value,
        industry: document.getElementById('industry').value,
        employeeSize: document.querySelector('input[name="employeeSize"]:checked')?.value || '',
        currentAiUsage: document.querySelector('input[name="currentAiUsage"]:checked')?.value || '',
        targetAreas: Array.from(document.querySelectorAll('input[name="targetAreas"]:checked')).map(cb => cb.value),
        purposes: Array.from(document.querySelectorAll('input[name="purposes"]:checked')).map(cb => cb.value),
        budget: document.getElementById('budget').value,
        timeline: document.getElementById('timeline').value,
        challenges: document.getElementById('challenges').value,
        questions: document.getElementById('questions').value
      };
      
      try {
        const response = await fetch(window.location.href, {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
          },
          body: JSON.stringify(formData)
        });
        
        const result = await response.json();
        
        if (result.success) {
          // 成功メッセージを表示
          document.querySelector('.form-content').classList.add('hide');
          document.getElementById('successMessage').classList.add('show');
          // ページトップにスクロール
          window.scrollTo({ top: 0, behavior: 'smooth' });
        } else {
          alert('送信に失敗しました: ' + result.message);
          submitBtn.disabled = false;
          submitBtn.textContent = '送信する';
        }
      } catch (error) {
        alert('エラーが発生しました: ' + error.message);
        submitBtn.disabled = false;
        submitBtn.textContent = '送信する';
      }
    });
  </script>
</body>
</html>

さらに、このフォームの回答データを集計するためのGoogleスプレッドシートの構成案まで提案してくれます。これにより、後のデータ集計作業が非常にスムーズになります。

Claudeによるスプレッドシート構成案

ステップ2:【実装編】Google Apps Script (GAS) でフォームを公開しよう

AIが生成したコードを使って、実際にアンケートフォームをインターネット上に公開します。ここではGoogleの無料サービス「Google Apps Script (GAS)」を利用します。

1. GASプロジェクトの作成

Google Driveから新規で「Google Apps Script」を選択し、新しいプロジェクトを作成します。プロジェクト名(例:AIコンサル_ヒアリング集計)を設定し、コード.gsindex.html という2つのファイルを用意します。

GASプロジェクト作成画面

2. コードの貼り付けとデプロイ

Claudeが生成したコード.gsindex.htmlの内容を、それぞれ対応するファイルにコピー&ペーストします。貼り付けが完了したら、画面右上の「デプロイ」ボタンから「新しいデプロイ」を選択し、ウェブアプリとして公開します。これで、世界中のどこからでもアクセスできるアンケートフォームが完成です。

GASのHTMLコード編集画面

ステップ3:【集計編】Googleスプレッドシートで回答データを管理しよう

フォームが公開されると、ユーザーからの回答は自動的にGoogleスプレッドシートに蓄積されていきます。手作業での転記は一切不要で、リアルタイムにデータが整理されていく様子は圧巻です。

Googleスプレッドシートに蓄積された回答データ

ステップ4:【分析・資料作成編】NotebookLMでAI分析&スライド自動生成!

いよいよ、このフローのクライマックスです。集まったアンケートデータを、Googleの最先端AIツール「NotebookLM」を使って分析し、経営判断に役立つインサイトを抽出します。

1. データのアップロード

まず、ドライブという項目から、GoogleスプレッドシートをNotebookLMにソースとしてアップロードします。

NotebookLMへのデータアップロード画面

2. AIによる自動要約と対話型分析

データを読み込むと、NotebookLMは即座にその内容を理解し、簡潔なサマリーを生成します。これにより、100件のアンケートデータも一瞬で概要を把握できます。

NotebookLMによるデータ概要の自動生成

さらに、NotebookLMの真価はチャット機能にあります。まるで優秀なデータアナリストと会話するように、データに関する質問を投げかけることができます。今回は、以下の集計用のプロンプトを使用して、ソースを集計しました。

集計用のプロンプト
経験豊富なプロのデータ集計・分析の専門家として振る舞ってください。
AIコンサルティング向けヒアリング調査の回答データから、Excelでのグラフ作成に使える「集計表」を作成してください。

## ■ 基本ルール
1. グラフ画像の作成は**不要**です(数値データのみ出力)
2. すべての集計結果は**Markdown表形式**で出力してください(Excel貼り付け用)
3. 選択肢の並び順は以下のルールに従ってください
   - 従業員規模:少ない順(1〜10名 → 301名以上)
   - AI活用状況:活用度の低い順(全く活用していない → 全社的に活用中)
   - 予算感:金額の小さい順(〜30万円 → 300万円以上)、「未定」は末尾
   - 導入時期:直近から順(すぐにでも → 情報収集段階)
4. パーセンテージは**小数第1位**まで記載
5. 複数回答可の設問(業務領域・導入目的)は、各選択肢を個別にカウントすること

## ■ 作成する集計表

### 【A】回答企業のプロフィール(円グラフ向け)
以下それぞれについて「件数」「割合(%)」を集計
- A-1. 業種の内訳
- A-2. 従業員規模の内訳

### 【B】AI導入に関する現状・意向(円グラフ向け)
以下それぞれについて「件数」「割合(%)」を集計
- B-1. 現時点でのAI活用状況
- B-2. 想定予算
- B-3. 希望する導入タイミング

### 【C】ニーズ分析:業務領域・目的(横棒グラフ向け)
※複数選択のため、各項目の選択件数と全体に対する選択率(%)を算出
※件数が多い順にソート
- C-1. AI活用を検討している業務領域
- C-2. AI導入によって達成したい目的

### 【D】属性×回答のクロス集計(100%積み上げ棒グラフ向け)
※行ごとの合計が100%になるよう、横方向で比率計算すること

| No. | 行(縦軸) | 列(横軸) |
|-----|-----------|-----------|
| D-1 | 業種 | AI活用状況 |
| D-2 | 従業員規模 | AI活用状況 |
| D-3 | 業種 | 予算感 |
| D-4 | 従業員規模 | 予算感 |

### 【E】業務課題の傾向(横棒グラフ向け)
「現在の業務課題」欄の自由記述を内容別にカテゴリ分類し、「件数」「割合(%)」を集計
- 未記入は「未回答」として集計
- 件数の降順で表示

### 【F】問い合わせ内容の傾向(横棒グラフ向け)
「ご質問・ご要望」欄をカテゴリ別に分類し、「件数」「割合(%)」を集計
- 未記入は「未回答」として集計
- 件数の降順で表示
NotebookLMによる業種別集計表

複雑な質問にも対応可能です。「回答データで最も多く選択された『AI導入の目的』は何か」といった質問から、顧客の潜在的なニーズや課題を深掘りすることができます。今回は、以下の分析用のプロンプトを使用して、ソースを分析しました。

分析用のプロンプト
経験豊富なプロのAIコンサルティング事業の営業戦略アドバイザーとして振る舞ってください。
先ほど集計したヒアリングデータを活用し、以下の**3つのフレームワーク**で分析を行い、営業・マーケティング戦略への示唆を導き出してください。

## ■ 分析フレームワークと着眼点

### フレームワークA:リード優先度マトリクス(ホットリードの可視化)
見込み顧客を以下の2軸で評価し、アプローチ優先度を整理してください。
- **縦軸:導入緊急度**(導入希望時期が近いほど高い)
- **横軸:投資余力**(予算感が大きいほど高い)

以下の4象限に分類し、それぞれの特徴と件数を明らかにしてください。
- **【最優先ターゲット】** 緊急度◎ × 予算◎ → 即アプローチすべき層
- **【育成ターゲット】** 緊急度○ × 予算△ → 小規模提案から関係構築
- **【長期フォロー】** 緊急度△ × 予算◎ → 情報提供で接点維持
- **【様子見】** 緊急度△ × 予算△ → リソース投下は後回し

### フレームワークB:ニーズ階層分析(課題の深さを見極める)
「現在の業務課題」と「AI導入の目的」のデータから、顧客ニーズを以下の2層に分類してください。
- **表層ニーズ(対処療法型):** 目の前の困りごとを解消したい(例:作業時間の削減、人手不足の補填)
- **深層ニーズ(変革志向型):** 事業構造や競争力を根本から変えたい(例:競合との差別化、売上向上)

**判定:** 今回の回答者全体として、ニーズの重心は「表層(オペレーション改善)」と「深層(事業変革)」のどちらに寄っているか結論づけてください。これにより、提案の切り口(コスト削減訴求 or 成長投資訴求)が変わります。

### フレームワークC:ブルーオーシャン・セグメント発掘(狙い目市場の特定)
業種 × 従業員規模 のマトリクスを俯瞰し、以下を特定してください。
- **【有望セグメント】:** 回答数が多く、かつ導入意欲(予算・時期)が高い層
  → 重点マーケティング対象
- **【隠れた機会】:** 回答数は少ないが、AI活用が進んでおらず伸びしろがある層
  → 啓蒙コンテンツで開拓余地あり
- **【レッドオーシャン】:** 既にAI活用が進んでいる競争激化ゾーン
  → 差別化戦略が必須

## ■ アウトプット形式(マークダウン)

### 1. 【Priority Matrix】アプローチ優先度マップ
- **今すぐ動くべき最優先リード像:**
  - 該当件数:◯件(全体の◯%)
  - 共通プロファイル:業種、規模、課題の傾向
  - 推奨アクション:具体的な営業アプローチ方法
- **じっくり育成すべきリード像:**
  - 該当件数と特徴
  - 推奨アクション:ナーチャリング施策

### 2. 【Needs Layering】ニーズの重心診断
- **診断結果:** 今回の見込み顧客層は【表層ニーズ型 or 深層ニーズ型】が主流
- **根拠データ:**
  - 表層ニーズ(業務効率化系)の選択率:◯%
  - 深層ニーズ(事業成長系)の選択率:◯%
- **提案戦略への示唆:** どのような価値訴求が刺さりやすいか

### 3. 【Segment Opportunity】セグメント別の攻略指針
- **最重点セグメント:** [業種] × [従業員規模]
  - なぜ有望か:回答傾向からの根拠
  - 彼らが抱える典型課題:「(自由記述からの引用)」
  - 刺さるメッセージ案:
- **開拓余地のあるセグメント:** [業種] × [従業員規模]
  - 現状のAI活用度が低い理由の仮説
  - アプローチ案:
NotebookLMとの対話によるデータ分析

AIは、単なる集計だけでなく、データから読み取れる「顧客の本音」や「営業戦略への示唆」まで導き出してくれます。今回は、以下のまとめ用のプロンプトを使用して、考察や所感をまとめました。

まとめ用のプロンプト
経験豊富なプロのAIコンサルティング事業の「カスタマーインサイト・アナリスト」として振る舞ってください。
添付データに含まれる**2つの自由記述項目**(現在の業務課題、ご質問・ご要望)を横断的に読み解き、営業チームとサービス企画チームに共有すべき「見込み顧客のリアルな声」を抽出・整理してください。

## ■ 分析のガイドライン
- 2つの記述欄を別々に扱わず、1社の回答として**文脈を繋げて**解釈してください(例:課題と質問の関連性から真のニーズを読み取る)
- 単なる要約(例:「業務効率化を求めている」)ではなく、**顧客の温度感が伝わる原文を必ず引用**してください
- 引用時は **「発言内容」(会社名)** の形式で記載してください

## ■ 出力フォーマット

### ① 【Pain Points】顧客が抱えるリアルな課題

**▼ 傾向サマリー**
(どのような業務課題が多いか、カテゴリ別にキーワードで要約。例:属人化、紙業務、人手不足など)

**▼ 印象的なコメント(抜粋)**
- "(顧客の原文をそのまま引用)"(会社名)
- "(顧客の原文をそのまま引用)"(会社名)
- "(顧客の原文をそのまま引用)"(会社名)

---

### ② 【Expectations】顧客が気にしていること・知りたいこと

**▼ 傾向サマリー**
(質問・要望の傾向を分類して要約。例:費用対効果への関心、サポート体制への不安、カスタマイズ可否など)

**▼ 印象的なコメント(抜粋)**
- "(顧客の原文をそのまま引用)"(会社名)
- "(顧客の原文をそのまま引用)"(会社名)
- "(顧客の原文をそのまま引用)"(会社名)

---

### ③ 【Hot Signals & Service Hints】営業・企画への示唆

**▼ 今すぐフォローすべき"熱い"案件(ホットリード)**
※導入意欲が高い、具体的な相談をしたがっている、緊急性が読み取れるなど、優先対応すべきコメントを抽出。該当なしの場合は「なし」と記載。
- "(顧客の原文をそのまま引用)"(会社名)

**▼ サービス改善・コンテンツ企画のヒント(顧客の声から)**
※「こういう情報がほしい」「こんなサービスなら検討したい」など、サービス開発やマーケティング施策に活かせる具体的な要望・提案を抽出。
- "(顧客の原文をそのまま引用)"(会社名)

**▼ 懸念・ハードルとして認識すべき声**
※予算の壁、社内理解の難しさ、AI知識不足への不安など、商談で乗り越えるべき障壁が見えるコメントを抽出。
- "(顧客の原文をそのまま引用)"(会社名)
NotebookLMが導き出したインサイト

3. ワンクリックでスライド資料を自動生成

分析が完了したら、その結果を基にプレゼンテーション資料を作成します。NotebookLMなら、右側のメニューから「スライド資料」を選び、いくつかの設定(形式、言語、長さ)を行うだけで、AIが自動で構成を考え、デザインされたスライドを生成してくれます。今回は、以下のスライド作成用のプロンプトを使用して、スライドを作成しました。

スライド作成用のプロンプト
# ==========================================
# ① スライド構成指示書
# ==========================================

【前提】
提供されたヒアリングデータの分析結果(集計表、フレームワーク分析、顧客コメント抽出)をもとに、営業・マーケティング戦略会議向けのサマリースライドを作成してください。

【スライドタイトル】
AIコンサルティング ヒアリングデータ分析レポート

【キーメッセージ(ヘッダー)】
分析結果から導かれた「最優先ターゲット像」と「営業アプローチの方向性」を1〜2行で端的に要約してください。

【コンテンツエリア構成】
以下の3つの情報をまとめてください。

---

■ マーケット概況

参照データ:
「回答企業プロフィール」「AI導入に関する現状・意向」の集計結果

【回答母数】
- 総回答件数(n=◯)

【属性分布】
- 業種別の構成比(上位3業種をハイライト)
- 従業員規模別の構成比

【導入意向サマリー】
- 「予算感」の分布を100%横棒グラフで表示
- 「導入希望時期」の分布を100%横棒グラフで表示
- 「現在のAI活用状況」の分布を100%横棒グラフで表示

【ニーズランキング】
- 検討業務領域 Top3(選択率%付き)
- 導入目的 Top3(選択率%付き)

---

■ 戦略インサイト

参照データ:
「フレームワーク分析」の結果

【リード優先度マップ】
- 4象限マトリクス(緊急度×予算)を簡易図示
- 「最優先ターゲット」の件数・割合を強調表示(例:青枠・太字)
- 「育成ターゲット」「長期フォロー」の件数も併記

【ニーズ診断】
- 顧客ニーズの重心が「表層(オペレーション改善)」か「深層(事業変革)」か、診断結果を明記
- 推奨する提案切り口(コスト削減訴求 or 成長投資訴求)を記載

【注目セグメント】
- 最も有望なセグメント(業種×規模)を目立つ形で強調(例:青背景ラベル)
- 開拓余地のあるセグメントも併記

---

■ 顧客の声 & Next Actions

参照データ:
「顧客コメント抽出」および「営業・企画への示唆」

【リアルな課題(Voice of Customer)】
- 「業務課題」から象徴的なコメントを1件引用(会社名付き)

【顧客の関心事項】
- 「質問・要望」から代表的なコメントを1件引用(会社名付き)

【ホットリード・シグナル】
- 優先フォローすべき案件の特徴を簡潔に記載

【推奨アクション】
- 短期施策(Quick Wins):即座に着手すべき営業・マーケ施策を箇条書き
- 中長期施策(Strategic Moves):仕組み化・コンテンツ整備などを箇条書き


# ==========================================
# ② デザイン指定書(Corporate Blue Minimal)
# ==========================================

# ------------------------------------------
# [GLOBAL] 基本設定
# ------------------------------------------
global_settings:
  output_language: "Japanese (日本語)"
  instruction: "すべてのテキストは日本語で出力(数値・固有名詞は除く)"
  font_family_jp: "Noto Sans JP / Hiragino Sans"
  font_family_en: "Inter / Helvetica Now"

# ------------------------------------------
# [STYLE] カラー&トーン
# ------------------------------------------
design_tone:
  theme: "Professional & Data-Driven"
  keywords: ["Clarity", "Trust", "Action-Oriented", "Flat"]

color_palette:
  background: "#F5F7FA"       # ライトグレー(ベース)
  primary_blue: "#0D5DB8"     # コーポレートブルー(見出し・アクセント)
  text_primary: "#1A1A1A"     # メインテキスト(黒)
  text_secondary: "#6B7280"   # サブテキスト(グレー)
  divider_line: "#D1D5DB"     # 区切り線
  card_surface: "#FFFFFF"     # カード背景

# ------------------------------------------
# [SLIDE TYPE 1] 表紙スライド
# ------------------------------------------
slide_type_cover:
  layout_style: "Typography Focus"
  background: "#F5F7FA"
  
  elements:
    - role: "カテゴリ/日付"
      position: "top-left"
      size: "10pt"
      color: "#0D5DB8"
      text: "2025年1月〜3月 問い合わせデータ"

    - role: "メインタイトル"
      position: "center-left"
      size: "44pt"
      weight: "Bold"
      color: "#1A1A1A"
      text: "ヒアリングデータ分析レポート"

    - role: "サブタイトル"
      position: "below-title"
      size: "18pt"
      color: "#6B7280"
      text: "〜 見込み顧客の傾向と営業戦略への示唆 〜"

    - role: "作成者情報"
      position: "bottom-left"
      size: "12pt"
      color: "#6B7280"
      text: "NEXT INNOVATION株式会社 / 営業企画"

    - role: "アクセントライン"
      style: "水平の細いブルーライン"
      placement: "タイトル下"

# ------------------------------------------
# [SLIDE TYPE 2] 本編スライド
# ------------------------------------------
slide_type_standard:
  layout_grid: "3カラム・ダッシュボード形式"
  
  # === ヘッダー領域 ===
  header:
    position: "top-left"
    margin_top: "28px"
    margin_left: "36px"
    
    element_title:
      text_content: "スライドタイトル"
      size: "11pt"
      color: "#0D5DB8"
      weight: "Bold"
      margin_bottom: "10px"

    element_key_message:
      text_content: "キーメッセージ(1〜2行で結論を記載)"
      size: "17pt"
      color: "#1A1A1A"
      weight: "Regular"
      line_height: "1.6"
      max_width: "90%"
      margin_bottom: "36px"

  # === コンテンツ領域 ===
  content_body:
    layout: "3_column_dashboard"
    column_gap: "24px"

# ------------------------------------------
# デザイン制約事項
# ------------------------------------------
visual_rules:
  - "本編スライドのタイトルは『11pt・ブルー・太字』、キーメッセージは『17pt・黒・標準』で左上固定"
  - "表紙はタイポグラフィ中心でインパクトを出す"
  - "ドロップシャドウは使用禁止。フラットな面と細線で構成"
  - "強調箇所はブルー背景ラベルまたは太字で表現"
  - "グラフは100%横棒グラフを基本とし、色数は3色以内"
  - "すべてのテキストは日本語で生成"
スライドの自動生成設定画面

生成されたスライドは、分析結果を視覚的に分かりやすくまとめたものになっています。市場の概況や顧客のプロフィール、そして我々が次に取るべきアクションまで、説得力のあるストーリーとして構成されています。

生成されたスライド(マーケット概況)
生成されたスライド(回答企業のプロフィール)

最終的には、分析から導き出された「我々が語るべき新しいセールスストーリー」といった、具体的な営業戦略の転換を促す提言まで含まれています。

生成されたスライド(結論と提言)

まとめ:AIと共に、次のアクションへ

今回ご紹介したフローを使えば、これまで多くの時間と労力を費やしてきたアンケート業務を劇的に効率化できます。しかし、その価値は単なる「時短」に留まりません。

AIを使いこなすことで、あなたは退屈な単純作業から解放され、データという「顧客の生の声」と向き合い、ビジネスを成長させるための戦略を練るという、より創造的で付加価値の高い仕事に集中できるようになります。

本記事が、あなたのビジネスを加速させるための一助となれば幸いです。さあ、AIと共に、データドリブンな意思決定の第一歩を踏み出しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次