خوشآمدگویی و شرایط ورود
لطفاً پیش از ادامه، به موارد مشخصشده پاسخ دهید:
تنظیم لینک وباپ Google Sheet، تصاویر بخش هـ، مشخصات مجری و دریافت خروجی
با فعالسازی این گزینه، دکمه «⚡ تست سریع این صفحه» در پایین فرم نمایش داده میشود تا بتوانید همه ۱۲ مرحله را در چند ثانیه تست کنید.
پس از قرار دادن کد اسکریپت زیر در Google Sheet خود و انتخاب Deploy > New Deployment > Web App، لینک دریافتی (که با https://script.google.com/macros/s/.../exec تمام میشود) را اینجا قرار دهید:
بهطور پیشفرض فایلهای pic1.jpg، pic2.jpg و pic3.jpg تنظیم شدهاند. همچنین میتوانید فایل هر تصویر را مستقیماً انتخاب کنید:
function doGet(e) { return handleRequest(e); }
function doPost(e) { return handleRequest(e); }
function handleRequest(e) {
var lock = LockService.getScriptLock();
lock.tryLock(10000);
try {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = {};
if (e && e.postData && e.postData.contents) {
try { data = JSON.parse(e.postData.contents); } catch (err) { data = e.parameter || {}; }
} else if (e && e.parameter && Object.keys(e.parameter).length > 0) {
data = e.parameter;
} else {
data = { timestamp: new Date().toLocaleString("fa-IR"), P1_consent: "تست اتصال موفق" };
}
var headers = [
"timestamp", "duration_sec", "attention_D17_passed",
"P1_consent", "P2_tehran_resident", "P3_age_18plus", "P4_residence_duration",
"A1_location_mode", "A1_lat", "A1_lng", "A1_buffer_m", "A1_district", "A1_neighborhood", "A1_intersection",
"A2_street_type", "A2_other", "A3_tenure", "A4_familiarity", "A5_walk_freq", "A6_travel_mode", "A7_presence_hours", "A8_physical_change",
"B1_overall_satisfaction",
"C1_beautiful", "C2_boring", "C3_safe", "C4_wealthy", "C5_depressing", "C6_lively",
"C7_active_space", "C8_safe_look", "C9_monotonous", "C10_scenic", "C11_gloomy_look", "C12_affluent_look",
"D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9",
"D10", "D11", "D12", "D13", "D14", "D15", "D16", "D17_attention", "D18",
"D19", "D20", "D21", "D22", "D23", "D24", "D25", "D26",
"E1_1", "E1_2", "E1_3", "E1_4", "E1_5", "E1_6", "E1_7_know",
"E2_1", "E2_2", "E2_3", "E2_4", "E2_5", "E2_6", "E2_7_know",
"E3_1", "E3_2", "E3_3", "E3_4", "E3_5", "E3_6", "E3_7_know",
"F1_open_comment",
"G1_age_group", "G2_gender", "G3_education", "G4_urban_field", "G5_household_size", "G6_cars", "G7_ses_ladder"
];
if (sheet.getLastRow() === 0) { sheet.appendRow(headers); }
var row = headers.map(function(key) {
var val = data[key];
if (Array.isArray(val)) return val.join(" | ");
return (val !== undefined && val !== null) ? val : "";
});
sheet.appendRow(row);
return ContentService.createTextOutput(JSON.stringify({ status: "success" })).setMimeType(ContentService.MimeType.JSON);
} catch (err) {
return ContentService.createTextOutput(JSON.stringify({ status: "error", message: err.toString() })).setMimeType(ContentService.MimeType.JSON);
} finally {
lock.releaseLock();
}
}