FormKit
Google Apps Script • Forms • Sheets
Projekt #2

Automatyczne tworzenie formularza + arkusz odpowiedzi + proces “Wpłata”

FormKit generuje Google Form oraz Spreadsheet z odpowiedziami na bazie konfiguracji (fields + walidacje + uprawnienia). Drugi, lokalny skrypt w arkuszu dodaje kolumnę “Wpłata” (Tak/Nie) i pozwala wysyłać maila po ręcznym potwierdzeniu w sidebarze.

Technologie
Google Apps Script Google Forms Google Sheets Drive sharing
Status
LIVE

Co to rozwiązuje

Jak działa — architektura

  1. Projekt GAS #1 (generator) importuje bibliotekę i uruchamia FormKitLib.FormKit.provision(config).
  2. Biblioteka tworzy formularz, dodaje pytania, podpina Spreadsheet i ustawia edytorów (Drive).
  3. Header image ustawiam ręcznie w UI formularza (Theme → Header image).
  4. Projekt GAS #2 (Payments) jest przypięty do Spreadsheet i realizuje workflow “Wpłata”.
Ważne: nie ma automatycznego “onSubmit” w bibliotece. Akcje (mail / potwierdzenie) są realizowane lokalnie w arkuszu — łatwiejsze uprawnienia i pełna kontrola.

Script ID biblioteki

Dodaj bibliotekę w GAS → Project Settings → Libraries.

1kEFaalvR_ha_aBE1RdgLeA3Muj-OmtALK5HanHCcAs6UK4GYnVYmKcHd
IdentifierFormKitLib
TypLibrary deployment

Quick start

1) Generator (projekt GAS #1)

Utwórz nowy projekt Apps Script, dodaj bibliotekę po Script ID, wklej kod i uruchom setup().

const CONFIG_KEY = "ZGLOSZENIA_V1";

function setup() {
  const config = {
    configKey: CONFIG_KEY,
    title: "Zgłoszenie zawodnika",
    description: "Formularz generowany automatycznie przez FormKit",
    logLinks: true,

    acceptingResponses: true,
    requireLogin: false,
    limitOneResponsePerUser: false,

    editors: ["reviewer@example.com"],
    responsesSpreadsheetName: "Zgłoszenia — odpowiedzi",

    fields: [
      {
        type: "TEXT",
        title: "Imię i nazwisko uczestnika",
        required: true,
        validation: {
          pattern: "^[a-zA-ZąćęłńóśźżĄĆęŁŃÓŚŹŻ -]+$",
          helpText: "Proszę wpisać poprawne imię i nazwisko"
        }
      },
      { type: "EMAIL", title: "Dane kontaktowe - adres e-mail", required: true },
      {
        type: "TEXT",
        title: "Dane kontaktowe - nr telefonu",
        required: true,
        validation: { pattern: "^[0-9]{9}$", helpText: "Proszę wpisać poprawny numer telefonu" }
      }
    ]
  };

  const res = FormKitLib.FormKit.provision(config);
  Logger.log(res.formUrl);
  Logger.log(res.editUrl);
  Logger.log(res.spreadsheetUrl);
}

2) Header image (ręcznie)

Otwórz editUrl → Theme → Header image → Choose image.

3) Payments (projekt GAS #2 w Spreadsheet)

Otwórz arkusz odpowiedzi → Extensions → Apps Script → dodaj lokalny skrypt. Uruchom setupPaymentColumn() i dodaj installable trigger onEdit.

Workflow: kolumna Wpłata (Tak/Nie) → po “Tak” sidebar z potwierdzeniem → mail → status WYSŁANO + data.

Demo / screeny

Logs po setup() Otwórz
Logs po setup() (formUrl / editUrl / spreadsheetUrl)
Wygenerowany formularz Otwórz
Wygenerowany formularz (pola + walidacje)
Spreadsheet Otwórz
Spreadsheet: “Wpłata” + sidebar + status WYSŁANO