Buatkan aplikasi input data berbasis web menggunakan PHP (index.php) yang menyimpan data ke Google Sheets.
Spesifikasi Teknis:
-
Backend menggunakan PHP
-
Data disimpan ke Google Sheets menggunakan Google Sheets API
-
Autentikasi menggunakan Service Account (JSON key)
-
Frontend berupa HTML form di dalam
index.php -
Field input:
-
Nama Lengkap
-
Email
-
Nomor HP
-
Alamat
-
Tanggal Input (otomatis)
-
-
Validasi form:
-
Semua field wajib diisi
-
Email harus valid
-
-
Setelah submit:
-
Data dikirim ke Google Sheets
-
Tampilkan pesan sukses atau gagal
-
-
Gunakan struktur kode yang rapi, aman, dan mudah dipahami
Output yang diharapkan:
-
File
index.phplengkap -
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
1️⃣ STRUKTUR GOOGLE SHEET
Buat Google Sheet dengan header baris pertama:
| A | B | C | D | E |
|---|---|---|---|---|
| Timestamp | Nama Lengkap | Nomor HP | Alamat |
📌 Catatan:
-
Spreadsheet harus dibagikan ke email Service Account
-
Permission: Editor
2️⃣ SETUP GOOGLE CLOUD PROJECT
🔹 Langkah 1: Buat Project
-
Buka Google Cloud Console
-
Create Project → beri nama bebas
🔹 Langkah 2: Aktifkan API
-
APIs & Services → Enable APIs
-
Aktifkan:
-
✅ Google Sheets API
-
🔹 Langkah 3: Buat Service Account
-
IAM & Admin → Service Accounts
-
Create Service Account
-
Role: Editor
-
Create Key → JSON
-
Download → simpan sebagai:
📌 Simpan di luar public_html jika bisa
3️⃣ INSTALL GOOGLE API CLIENT (WAJIB)
Di root project jalankan:
Struktur folder:
4️⃣ FILE index.php (FULL CODE)
✅ index.php
5️⃣ CARA MENGHUBUNGKAN KE GOOGLE SHEETS
-
Buka credentials.json
-
Copy client_email
-
Share Google Sheet ke email tersebut
-
Permission: Editor
6️⃣ PENJELASAN BAGIAN KODE
🔹 Validasi Input
→ Semua field wajib diisi
→ Validasi email
🔹 Autentikasi Service Account
→ Menghubungkan PHP ke Google API
🔹 Kirim Data ke Sheet
→ Append data ke baris terakhir
🔹 Timestamp Otomatis
7️⃣ KEAMANAN (REKOMENDASI PRODUKSI)
✅ Simpan credentials.json di luar public_html
✅ Tambahkan .htaccess:
✅ 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