Brand Potential Survey
Researcher Setup

Set Up Your Survey

Configure the brand you're testing, add custom questions, connect data collection, and generate a shareable link for respondents. No coding required.

Step 1 — Brand Configuration
This name replaces every mention of "the brand" throughout all questions automatically.
Step 2 — Custom Questions

Add your own questions before or after the 5 core Brand Potential dimensions. Drag to reorder. Use [BRAND] in any question text to insert the brand name automatically.

Before Survey
Shown before Dimension 1 — good for screeners, warm-up questions
After Survey
Shown after Dimension 5 — good for NPS, open feedback, follow-up questions
No custom questions added yet. Use the buttons below to add questions.
Step 3 — Core Dimensions & Modules

The 5 core Brand Potential dimensions are always included. Toggle additional modules on or off.

✓ Dimension 1 — Passion
✓ Dimension 2 — Mission
✓ Dimension 3 — Profession
✓ Dimension 4 — Vocation
✓ Dimension 5 — Engagement
Additional Modules
Step 4 — Connect Google Sheets

📊 One-time setup — about 3 minutes

  1. Go to sheets.google.com → create a new blank spreadsheet
  2. Name it e.g. Brand Potential — [Brand Name]
  3. Click Extensions → Apps Script
  4. Delete all default code and paste the script below
  5. Click Deploy → New Deployment → ⚙️ gear → Web App
  6. Set Execute as: Me and Who has access: Anyone
  7. Click Deploy → authorise → copy the Web App URL
  8. Paste that URL into the field below
function doPost(e) { try { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = JSON.parse(e.postData.contents); var all = data.allAnswers || {}; var HEADERS = [ "Timestamp","Brand","Session ID","Rating","Total Score","Score %", "Dim1 - Passion","Dim2 - Mission","Dim3 - Profession","Dim4 - Vocation","Dim5 - Engagement", "B1 - Familiarity","B2 - Relationship","B3 - Industry","B4 - Age","B5 - Gender","B6 - Location","B7 - Country", "D1Q1","D1Q2","D1Q3","D1Q4","D1Q5","D1Q6","D1Q7","D1Q8","D1WA - Word Association", "D2Q1","D2Q2","D2Q3","D2Q4","D2Q5","D2Q6","D2WA - Word Association", "D3Q1","D3Q2","D3Q3","D3Q4","D3Q5","D3Q6","D3WA - Word Association", "D4Q1","D4Q2","D4Q3","D4Q4","D4Q5","D4Q6","D4Q7","D4Q8","D4Q9","D4WA - Word Association", "D5Q1","D5Q2","D5Q3","D5Q4","D5Q5","D5Q6","D5Q7","D5Q8","D5WA - Word Association" ]; if (sheet.getLastRow() === 0) { sheet.appendRow(HEADERS); var hr = sheet.getRange(1,1,1,HEADERS.length); hr.setFontWeight("bold"); hr.setBackground("#0A0A0A"); hr.setFontColor("#D4AF5A"); sheet.setFrozenRows(1); } function getWA(key) { var wa = all[key]; if (!wa) return ""; if (Array.isArray(wa)) return wa.filter(function(w){ return w&&w.trim(); }).join(", "); return String(wa); } function get(key) { var val = all[key]; if (val===undefined||val===null) return ""; if (Array.isArray(val)) return val.join("; "); return val; } var row = [ new Date(), data.brand||"", data.sessionId||"", data.rating||"", data.total||"", data.totalPct||"", data.D1||"", data.D2||"", data.D3||"", data.D4||"", data.D5||"", get("B1"),get("B2"),get("B3"),get("B4"),get("B5"),get("B6"),get("B7"), get("D1Q1"),get("D1Q2"),get("D1Q3"),get("D1Q4"),get("D1Q5"),get("D1Q6"),get("D1Q7"),get("D1Q8"),getWA("D1WA"), get("D2Q1"),get("D2Q2"),get("D2Q3"),get("D2Q4"),get("D2Q5"),get("D2Q6"),getWA("D2WA"), get("D3Q1"),get("D3Q2"),get("D3Q3"),get("D3Q4"),get("D3Q5"),get("D3Q6"),getWA("D3WA"), get("D4Q1"),get("D4Q2"),get("D4Q3"),get("D4Q4"),get("D4Q5"),get("D4Q6"),get("D4Q7"),get("D4Q8"),get("D4Q9"),getWA("D4WA"), get("D5Q1"),get("D5Q2"),get("D5Q3"),get("D5Q4"),get("D5Q5"),get("D5Q6"),get("D5Q7"),get("D5Q8"),getWA("D5WA") ]; sheet.appendRow(row); return ContentService.createTextOutput(JSON.stringify({status:"ok"})).setMimeType(ContentService.MimeType.JSON); } catch(err) { return ContentService.createTextOutput(JSON.stringify({status:"error",message:err.message})).setMimeType(ContentService.MimeType.JSON); } } function doGet(e) { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = sheet.getDataRange().getValues(); if (data.length < 2) return ContentService.createTextOutput(JSON.stringify({status:"ok",rows:[]})).setMimeType(ContentService.MimeType.JSON); var headers = data[0]; var rows = data.slice(1).map(function(row) { var obj = {}; headers.forEach(function(h,i){ obj[h] = row[i]; }); return obj; }); return ContentService.createTextOutput(JSON.stringify({status:"ok",rows:rows})).setMimeType(ContentService.MimeType.JSON); }
Paste the URL after deploying. Starts with: https://script.google.com/macros/s/.../exec
💡 Leave blank if you don't have Google Sheets set up yet — the survey still works, responses just won't be saved centrally.
Step 5 — Distribution Settings
Show / hide sections
Background questions (B1–B7) Familiarity, relationship, demographics
Word association grids 20 free-text fields per dimension
Progress bar Shows % complete at top of survey
Show score to respondent Off by default — results go to researcher dashboard only
Step 6 — Generate Survey Link

All settings are encoded directly into the link. No database needed.

⚠️ 2_respondent_survey.html がこのファイルと同じフォルダにあることを確認してください。
Respondent Survey Link
Open Survey →
QR Code

Iframe Embed Code