Senin, 12 Januari 2026

PHP DAN GOOGLE SHEET

 



Buatkan aplikasi input data berbasis web menggunakan PHP (index.php) yang menyimpan data ke Google Sheets.

Spesifikasi Teknis:

  1. Backend menggunakan PHP

  2. Data disimpan ke Google Sheets menggunakan Google Sheets API

  3. Autentikasi menggunakan Service Account (JSON key)

  4. Frontend berupa HTML form di dalam index.php

  5. Field input:

    • Nama Lengkap

    • Email

    • Nomor HP

    • Alamat

    • Tanggal Input (otomatis)

  6. Validasi form:

    • Semua field wajib diisi

    • Email harus valid

  7. Setelah submit:

    • Data dikirim ke Google Sheets

    • Tampilkan pesan sukses atau gagal

  8. Gunakan struktur kode yang rapi, aman, dan mudah dipahami

Output yang diharapkan:

  • File index.php lengkap

  • Contoh struktur Google Sheet

  • Cara setup Google Cloud Project

  • Cara membuat Service Account dan menghubungkannya ke Google Sheets

  • Penjelasan singkat tiap bagian kode

📌 APLIKASI INPUT DATA PHP → GOOGLE SHEETS

🧩 ARSITEKTUR SINGKAT

Browser (Form HTML) ↓ POST index.php (PHP) ↓ Google Sheets API ↓ Google Spreadsheet

1️⃣ STRUKTUR GOOGLE SHEET

Buat Google Sheet dengan header baris pertama:

ABCDE
TimestampNama LengkapEmailNomor HPAlamat

📌 Catatan:

  • Spreadsheet harus dibagikan ke email Service Account

  • Permission: Editor


2️⃣ SETUP GOOGLE CLOUD PROJECT

🔹 Langkah 1: Buat Project

  1. Buka Google Cloud Console

  2. Create Project → beri nama bebas

🔹 Langkah 2: Aktifkan API

  • APIs & Services → Enable APIs

  • Aktifkan:

    • Google Sheets API

🔹 Langkah 3: Buat Service Account

  1. IAM & Admin → Service Accounts

  2. Create Service Account

  3. Role: Editor

  4. Create Key → JSON

  5. Download → simpan sebagai:

credentials.json

📌 Simpan di luar public_html jika bisa


3️⃣ INSTALL GOOGLE API CLIENT (WAJIB)

Di root project jalankan:

composer require google/apiclient:^2.0

Struktur folder:

/project ├─ /vendor ├─ credentials.json └─ index.php

4️⃣ FILE index.php (FULL CODE)

index.php

5️⃣ CARA MENGHUBUNGKAN KE GOOGLE SHEETS

  1. Buka credentials.json

  2. Copy client_email

  3. Share Google Sheet ke email tersebut

  4. Permission: Editor


6️⃣ PENJELASAN BAGIAN KODE

🔹 Validasi Input

if (!$nama || !$email || !$hp || !$alamat)

→ Semua field wajib diisi

filter_var($email, FILTER_VALIDATE_EMAIL)

→ Validasi email


🔹 Autentikasi Service Account

$client->setAuthConfig('credentials.json');

→ Menghubungkan PHP ke Google API


🔹 Kirim Data ke Sheet

$service->spreadsheets_values->append()

→ Append data ke baris terakhir


🔹 Timestamp Otomatis

date('Y-m-d H:i:s')

7️⃣ KEAMANAN (REKOMENDASI PRODUKSI)

✅ Simpan credentials.json di luar public_html
✅ Tambahkan .htaccess:

Deny from all

✅ Gunakan HTTPS
✅ Tambahkan CSRF Token jika diperlukan


Index.html

<?php

require __DIR__ . '/vendor/autoload.php';


use Google\Client;

use Google\Service\Sheets;


$message = "";


function isValidEmail($email) {

    return filter_var($email, FILTER_VALIDATE_EMAIL);

}


if ($_SERVER["REQUEST_METHOD"] === "POST") {


    $nama   = trim($_POST['nama']);

    $email  = trim($_POST['email']);

    $hp     = trim($_POST['hp']);

    $alamat = trim($_POST['alamat']);


    // VALIDASI

    if (!$nama || !$email || !$hp || !$alamat) {

        $message = "❌ Semua field wajib diisi.";

    } elseif (!isValidEmail($email)) {

        $message = "❌ Format email tidak valid.";

    } else {

        try {

            // AUTH GOOGLE

            $client = new Client();

            $client->setApplicationName("PHP Google Sheets Input");

            $client->setScopes([Sheets::SPREADSHEETS]);

            $client->setAuthConfig('credentials.json');

            $client->setAccessType('offline');


            $service = new Sheets($client);


            // ID SPREADSHEET

            $spreadsheetId = 'ISI_DENGAN_SPREADSHEET_ID';


            // DATA YANG DIKIRIM

            $values = [[

                date('Y-m-d H:i:s'),

                $nama,

                $email,

                $hp,

                $alamat

            ]];


            $body = new Google\Service\Sheets\ValueRange([

                'values' => $values

            ]);


            $params = ['valueInputOption' => 'RAW'];


            $service->spreadsheets_values->append(

                $spreadsheetId,

                'Sheet1!A:E',

                $body,

                $params

            );


            $message = "✅ Data berhasil disimpan ke Google Sheets.";


        } catch (Exception $e) {

            $message = "❌ Gagal menyimpan data: " . $e->getMessage();

        }

    }

}

?>


<!DOCTYPE html>

<html lang="id">

<head>

    <meta charset="UTF-8">

    <title>Input Data Google Sheets</title>

    <style>

        body { font-family: Arial; background:#f4f4f4; }

        .container { max-width: 500px; margin: 40px auto; background:#fff; padding:20px; border-radius:8px; }

        input, textarea, button {

            width:100%; padding:10px; margin-top:10px;

        }

        button { background:#2c7be5; color:#fff; border:none; cursor:pointer; }

        .msg { margin-top:15px; font-weight:bold; }

    </style>

</head>

<body>


<div class="container">

    <h2>Form Input Data</h2>


    <?php if ($message): ?>

        <div class="msg"><?= htmlspecialchars($message) ?></div>

    <?php endif; ?>


    <form method="POST">

        <input type="text" name="nama" placeholder="Nama Lengkap" required>

        <input type="email" name="email" placeholder="Email" required>

        <input type="text" name="hp" placeholder="Nomor HP" required>

        <textarea name="alamat" placeholder="Alamat" required></textarea>

        <button type="submit">Simpan Data</button>

    </form>

</div>


</body>

</html>


Tidak ada komentar:

Posting Komentar

Data Entry HTML Form

  https://script.google.com/macros/s/AKfycbzeeqBQE-i7x8kKFswdyGVIgyydxTU0Y617eMjD6ve0Xm8c6-UqqHN3sPSi8zFlfnDGew/exec https://sites.google.co...