A GravityForms egy népszerű űrlapkezelő bővítmény, amely sajnos nem ingyenes, viszont személyes használatra, mindössze $39-ért megvásárolható.

Sok helyen használom, mert könnyedén testreszabható, szuper támogatás jár hozzá, továbbá milliónyi hook-ot biztosít a fejlesztőknek.

Az egyik weboldalam űrlapjának az adatbázisát szerettem volna úgy megosztani a munkatársaimmal, hogy azon egyből dolgozni is lehessen. Erre tökéletes megoldást biztosít számunkra a Google Táblázat; külön bónusz, hogy így egyszerre többen is tudunk a táblázaton dolgozni és látjuk, hogy mit csinál a másik.

Adott a feladat, át kell küldeni az  adatokat a Gravity-ből a céges felhőnkbe.

Szerencsére találtam egy ingyenes bővítményt, ami segítségünkre lesz az adatok továbbküldésében: Gravity Forms Post to 3rd Party API (letöltés)

1.) Készítsünk egy új táblázatot és írjuk be az oszlopok megnevezését

2.) Készítsünk egy új Google szkriptet (Eszközök->Szkriptszerkesztő)

3.) Töröljük a Szkriptszerkesztőben lévő kódot és írjuk át erre:

function doPost(e) {
 
  if (!e) return;
 
  var sheetID = "GOOGLE_TABLAZAT_IDKOD";  // Add meg a Google táblázatod ID kódját
  var sheetName = "Munkalap1";       // Add meg a munkalap nevét. Alapértelmezett név: Munkalap1
 
  var status = {};
 
  // Code based on Martin Hawksey (@mhawksey)'s snippet
 
  var lock = LockService.getScriptLock();
  lock.waitLock(30000);
 
  try {
 
    var sheet = SpreadsheetApp.openById(sheetID).getSheetByName(sheetName);
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
 
    // Add the data and time when the Gravity Form was submitted
    var column, row = [],
      input = {
        "timestamp": new Date()
      };
 
    for (var keys in e.parameter) {
      input[normalize_(keys)] = e.parameter[keys];
    }
 
    for (i in headers) {
      column = normalize_(headers[i])
      row.push(input[column] || "");
    }
 
    if (row.length) {
 
      sheet.appendRow(row);
      status = {
        result: "success",
        message: "Row added at position " + sheet.getLastRow()
      };
 
    } else {
      status = {
        result: "error",
        message: "No data was entered"
      };
    }
 
  } catch (e) {
 
    status = {
      result: "error",
      message: e.toString()
    };
 
  } finally {
 
    lock.releaseLock();
 
  }
 
  return ContentService
    .createTextOutput(JSON.stringify(status))
    .setMimeType(ContentService.MimeType.JSON);
 
}
 
function normalize_(str) {
  return str.replace(/[^\w]/g, "").toLowerCase();
}

Két helyen kell átírni a kódot.

var sheetID = “GOOGLE_TABLAZAT_IDKOD”; // Add meg a Google táblázatod ID kódját

Nagyon egyszerű. A táblázat URL-ében benne van az ID. Például: https://docs.google.com/spreadsheets/d/19OtYbFuDUpfAqTjdrGufsrwI0GNdRnE36Cv6S0OjQNw/edit#gid=0

Az ID: 19OtYbFuDUpfAqTjdrGufsrwI0GNdRnE36Cv6S0OjQNw

var sheetName = “Munkalap1”; // Add meg a munkalap nevét. Alapértelmezett név: Munkalap1

Ezt nem kell magyarázni szerintem, hiszen csak meg kell adni a munkalap nevét.

4.) Mentsük el!

5.) Indítsuk el és engedélyeztessük

6.) Készítsünk a kódból egy internetes alkalmazást (Közzététel->Bevezetés internetes alkalmazásként…)

Beállítások:

7.) Másoljuk ki az Internetes alkalmazás jelenlegi URL-jét

Fontos! írjuk fel az URL címet!

8.) Készítsünk egy új Third Party Feed-et

Miután feltelepítettük fent említett bővítményt (Gravity Forms Post to 3rd Party API letöltés), megjelenik egy új menü az űrlapok beállításainál: Send to Third Party Feed

Készítsünk egy új feedet és másoljuk be az elmentett URL címet. Beállítások:

Method: POST
API URL: Ide másolod az URL-t
Authorization: None

9.) Add meg az elküldendő adatokat

Az első oszlopba bemásoljuk a Google Táblázat oszlopmegnevezéseit, amit korábban beírtunk és összepárosítjuk az űrlapunk mezőivel.

Kész is! Teszteljük.

A végeredmény:

(Megjegyzés: A Gravity lehetőséget biztosít a beküldött adatok CSV-ben történő mentésére és minden beküldött adatot eltárol, amit a WordPress adminban megtalálunk)