ALF Youth Board Control Panel (Updated with Emmanuel & Saida's Feedback) Target Google Sheet ID: 1scd00_CvjujOWbKHatFAwoOejVV_4iReGiA8Ug85rls
Anna Lindh Foundation symbol
Co-funded by the
European Union
3 / 26 Answered
Anna Lindh Foundation (ALF) β€’ Mediterranean Youth in Action (MYA)

Shaping the New ALF Youth Alumni Community & Future Youth Programmes

With the support of the ALF Youth Board, we are shaping the new ALF youth alumni community. Your feedbacks are essential to do so. Tell us how such a community may be useful to you and what you need. Share your ideas! Beyond the alumni community, your inputs will also help us shape the future of our ALF youth programmes. We will definitely follow-up, get back to you and keep you informed about new opportunities!

Section 1 of 6 β€’ Questions 1–5

About You, Database Mapping & Your Current Work

Information collected here helps us map our ALF Young Leaders community and build thematic coalitions.

Sec 1
Updated per Sec 1 Feedback
Official MYA Languages Note
Job Title & Org Now Required
Added "Other" + Restored Thematic Coalitions
4a. Which sector or field do you primarily work in? (Select up to 3)
4b. Which thematic areas interest you most for forming "Thematic Coalitions" with fellow ALF Young Leaders? (Pick up to 4)
Section 2 of 6 β€’ Questions 6–8 4 ALF Young Leader Profiles + Open Q7 & Q8

Your ALF Young Leader Profile & Programme Experience

Select your ALF Young Leader profile below and share openly what the programme gave you and what was missing.

Community Leaders Profile 1

Community Leaders

Grassroots organising, civil society leadership, local-to-regional advocacy, and community initiatives.

βœ“
Content Creators Profile 2

Content Creators

Digital storytelling, multimedia production, journalism, podcasting, and intercultural narrative change.

βœ“
Researchers Profile 3

Researchers

Academic & policy research, Euro-Med socio-cultural analysis, data evaluation, and publications.

βœ“
Mapped for Intercultural Dialogues Profile 4

Mapped for Intercultural Dialogues

Alumni mapped & identified across intercultural dialogue initiatives outside the three main MYA tracks.

βœ“
Selected Profile: Content Creators
Open & Separated from Missing Parts

Share openly any skills, perspectives, networks, or experiences from your time with ALF / MYA that continue to be valuable in your work or journey.

Open Without Pre-Defined Boxes

Feel free to share any honest gaps, missing follow-up, or ideas for how ALF Young Leaders can collaborate better.

Section 3 of 6 β€’ Questions 9–14 Moved Q9 Here + Split Trust & Reaching Alumni

Community, Belonging & Network Culture

Help us understand how connected you feel to fellow ALF Young Leaders and what builds genuine trust.

Moved to Sec 3 β€’ ALF Young Leaders Terminology
Level of contact since programme: Choose one
Sense of connection across profiles (1–5): 3 / 5
1 , Disconnected 3 , Somewhat 5 , Deeply Connected
Welcoming and Safe Peer Space

Welcoming & Safe Space

Informal, warm, trusted & judgment-free peer support.

Click to select
Action-Oriented Project Lab

Member-Driven Action Lab

Practical, well-organised & focused on joint initiatives.

Click to select
Professional and Career Network

Professional & Useful Hub

Career doors, speaking roles, visibility & high-level links.

Click to select
Diverse Cross-Cultural Exchange

Diverse & Creative

Cross-cultural energy, challenging ideas & inspiring fun.

Click to select
Updated Wording per Sec 3 Feedback
Section 4 of 6 β€’ Questions 15–18 Updated Sec 4: Active Role, Open Skills & Open Q18 Offer

Opportunities, Formats & What You Can Offer

Tell us how you prefer to participate, what skills you want to build, and what you can offer to peers.

In-Person Euro-Med Gatherings

In-Person Gatherings

Regional meetings, hands-on workshops & study visits.

Click to select
Live Online Workshops

Live Online Labs

Interactive virtual masterclasses, townhalls & clinics.

Click to select
Peer Exchange and Mentoring

Peer Exchange & Mentoring

1-on-1 mentoring matches & small peer circles.

Click to select
Asynchronous Resource Library and Chat

Async Hub & Library

Self-paced resource library, database & forum.

Click to select
Removed Time Commitment β€’ "Active role"
Added "Other" + Combined Open Skills from Q18
Left Open per Sec 4 Feedback
Section 5 of 6 β€’ Questions 19–22 Instant Real-World Youth Benchmark Ratios

Needs, Challenges, Barriers & Safety

Select your answers below to see how your experience compares with international youth benchmarks.

Removed Childcare / Unrealistic Expectations
Section 6 of 6 β€’ Questions 23–26 Added Townhall, Community Platform, MYA II & Official ALF Privacy Consent

Shaping the Future , Flagship Activities, Future MYA Programme & Staying Connected

Help us co-design our upcoming Townhall Meeting, our Alumni Community Platform/Database, and the future of ALF Youth Programmes (MYA II).

Added Townhall Consultation
Added Platform & Future MYA II Qs
Added Community Platform Channel
Preferred Channels (Select all that apply):
Preferred Update Frequency:
How you want to receive the Consultation Survey Results:
Official ALF Privacy Policy Linked
Supported by the ALF Youth Board β€’ Co-funded by the European Union.
Live Deployment & Google Sheets Sync

Google Sheet Receiver Script (Updated for All New Fields)

Every submission automatically appends a row with all updated fields into your Google Sheet.

Step 1: Copy This Updated Receiver Script into Extensions > Apps Script

/**
 * ALF / MYA Alumni Survey -> Google Sheets
 * Destination spreadsheet: 1scd00_CvjujOWbKHatFAwoOejVV_4iReGiA8Ug85rls
 * Deploy as a Web app: Execute as Me; access Anyone.
 */
const SPREADSHEET_ID = '1scd00_CvjujOWbKHatFAwoOejVV_4iReGiA8Ug85rls';
const SHEET_NAME = 'Responses';
const HEADERS = [
  "Submitted At",
  "ALF Young Leader Profile",
  "Programme Cycle",
  "Country of Origin",
  "Current Residence",
  "Birth Year",
  "Gender",
  "Professional / Interest Areas",
  "ALF Programme / Network",
  "Current Job Title / Role",
  "Organisation",
  "Sectors and Thematic Coalitions",
  "Thematic Coalitions",
  "Initiative / Project",
  "Key Programme Takeaway",
  "What Was Missing After the Programme",
  "Connection with Other Alumni",
  "Connection Scale",
  "Cross-Profile Collaboration Focus",
  "Community Priorities",
  "Trust / Collaboration",
  "Community Engagement",
  "Trust and Reaching Alumni",
  "Reaching Alumni",
  "Community Activities",
  "Preferred Formats",
  "Collaboration Opportunities",
  "Skills to Contribute",
  "Offer to Alumni Community",
  "Skills / Support Needed",
  "Needs / Challenges",
  "What Alumni Wish For",
  "What Should Be Added",
  "What Should Be Removed",
  "Safety / Inclusion Priority",
  "Safety Measures",
  "What ALF Should Do",
  "What ALF Should Not Do",
  "Online Townhall Interest",
  "Alumni Platform Ideas",
  "MYA II Ideas",
  "Consultation Results Format",
  "Co-design / Platform / MYA II Feedback",
  "Preferred Communication Channels",
  "Communication Frequency",
  "Full Name",
  "Email / Contact",
  "Privacy Consent",
  "Directory / Peer-Sharing Consent",
  "Additional Notes"
];
const FIELD_KEYS = [
  "submittedAt",
  "track",
  "q1_year",
  "q1_origin",
  "q1_location",
  "q1_birth_year",
  "q1_gender",
  "q2",
  "q3",
  "q3_role",
  "q3_org",
  "q4",
  "q4_themes",
  "q5_initiative",
  "q7_text",
  "q8_missing",
  "q9_contact",
  "q9_scale",
  "q9_track_focus",
  "q10",
  "q11",
  "q12",
  "q13_trust",
  "q13_reach",
  "q14",
  "q15_style",
  "q16",
  "q18_skills",
  "q17",
  "q18",
  "q19",
  "q19_wish",
  "q20",
  "q20_remove",
  "q21_safety",
  "q21_measures",
  "q22_do",
  "q22_dont",
  "q23_townhall",
  "q23_platform",
  "q23_mya2",
  "q23_results",
  "q23_codesign",
  "q24_channel",
  "q24_freq",
  "q25_name",
  "q25_contact",
  "q25_consent_privacy",
  "q25_consent_dir",
  "q25_notes"
];

function doGet(e) {
  // Health check only. Opening the URL never creates a dummy response.
  if (e && e.parameter && e.parameter.data) {
    return saveSubmission_(JSON.parse(e.parameter.data));
  }
  return ContentService.createTextOutput('ALF survey receiver is ready.');
}

function doPost(e) {
  try {
    let data = {};
    if (e && e.postData && e.postData.contents) {
      data = JSON.parse(e.postData.contents);
    } else if (e && e.parameter && e.parameter.data) {
      data = JSON.parse(e.parameter.data);
    } else {
      throw new Error('No survey response was received.');
    }
    return saveSubmission_(data);
  } catch (err) {
    return ContentService.createTextOutput('ERROR: ' + err.message);
  }
}

function saveSubmission_(data) {
  if (!data || typeof data !== 'object' || Array.isArray(data)) {
    throw new Error('Invalid response payload.');
  }
  const lock = LockService.getScriptLock();
  lock.waitLock(20000);
  try {
    const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
    let sheet = ss.getSheetByName(SHEET_NAME);
    if (!sheet) sheet = ss.insertSheet(SHEET_NAME);

    // Create/repair the header row before writing the first response.
    const firstCell = String(sheet.getRange(1, 1).getDisplayValue() || '').trim();
    if (firstCell !== HEADERS[0]) {
      sheet.insertRowBefore(1);
      sheet.getRange(1, 1, 1, HEADERS.length).setValues([HEADERS]);
      sheet.setFrozenRows(1);
      sheet.getRange(1, 1, 1, HEADERS.length)
        .setFontWeight('bold').setWrap(true);
    }

    const row = [new Date()].concat(FIELD_KEYS.slice(1).map(k => valueForCell_(data[k])));
    sheet.appendRow(row);
    return ContentService.createTextOutput('OK');
  } finally {
    lock.releaseLock();
  }
}

function valueForCell_(value) {
  if (value === null || value === undefined) return '';
  if (Array.isArray(value)) return value.join('; ');
  if (typeof value === 'object') return JSON.stringify(value);
  return value;
}

// Optional manual setup function. Run once in Apps Script if desired.
function setupHeaders() {
  const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
  let sheet = ss.getSheetByName(SHEET_NAME);
  if (!sheet) sheet = ss.insertSheet(SHEET_NAME);
  const firstCell = String(sheet.getRange(1, 1).getDisplayValue() || '').trim();
  if (firstCell !== HEADERS[0]) sheet.insertRowBefore(1);
  sheet.getRange(1, 1, 1, HEADERS.length).setValues([HEADERS]);
  sheet.setFrozenRows(1);
  sheet.getRange(1, 1, 1, HEADERS.length).setFontWeight('bold').setWrap(true);
}

Step 2: Your Connected Google Script Web App URL

βœ“ Web App URL saved in this browser. Submit a real response to test the connection; opening the receiver URL does not create a row.