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
- Go to sheets.google.com → create a new blank spreadsheet
- Name it e.g.
Brand Potential — [Brand Name] - Click Extensions → Apps Script
- Delete all default code and paste the script below
- Click Deploy → New Deployment → ⚙️ gear → Web App
- Set Execute as:
Meand Who has access:Anyone - Click Deploy → authorise → copy the Web App URL
- 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 がこのファイルと同じフォルダにあることを確認してください。