WONYX FORM BUILDER — GOOGLE SHEETS WEB APP RECEIVER

Use this optional Apps Script when you want submissions sent directly to Google Sheets.

1. Create/open the destination Google Sheet.
2. Extensions > Apps Script.
3. Paste the script below.
4. Deploy > New deployment > Web app.
5. Execute as: Me.
6. Who has access: Anyone (or the access level appropriate for your environment).
7. Copy the Web App URL into Wonyx Form Builder > Addons > Google Sheets.
8. In the form mapping, use one line per column, e.g.:
   Name=full_name
   Email=email
   Phone=mobile_number

SCRIPT
------
function doPost(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var payload = {};

  try {
    payload = JSON.parse(e.postData.contents || '{}');
  } catch (err) {
    payload = e.parameter || {};
  }

  // The plugin sends mapped form columns at the top level along with metadata.
  // Remove the shared secret from the sheet if you do not want it stored.
  if (payload.secret !== undefined) delete payload.secret;

  var keys = Object.keys(payload);
  if (!keys.length) {
    return ContentService.createTextOutput(JSON.stringify({success:false,message:'No data'}))
      .setMimeType(ContentService.MimeType.JSON);
  }

  if (sheet.getLastRow() === 0) {
    sheet.appendRow(keys);
  }

  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
  var row = headers.map(function(key) {
    var value = payload[key];
    if (value && typeof value === 'object') value = JSON.stringify(value);
    return value == null ? '' : value;
  });
  sheet.appendRow(row);

  return ContentService.createTextOutput(JSON.stringify({success:true}))
    .setMimeType(ContentService.MimeType.JSON);
}
