Generator RPP SSK Sekolah Siaga Kependudukan
Aplikasi Integrasi Materi Kependudukan Ke Dalam RPP Pembelajaran
Buat RPP Integrasi SSK Otomatis
Pilih materi kependudukan khas BKKBN/SSK dan buat RPP lengkap secara otomatis dalam hitungan detik.
Parameter & Form RPP
PEMERINTAH PROVINSI JAWABARAT
DINAS PENDIDIKAN DAN KEBUDAYAAN
SATUAN SEKOLAH SIAGA KEPENDUDUKAN
SEKOLAH SIAGA KEPENDUDUKAN (SSK) INTEGRASI - CISALAK
www.sskcisalak.kabsubang.my.id
A. TUJUAN PEMBELAJARAN (INTEGRASI SSK)
- Peserta didik mampu menjelaskan konsep dasar gizi seimbang pada remaja.
- Peserta didik dapat menganalisis keterkaitan antara asupan nutrisi remaja putri dengan pencegahan stunting masa depan.
- Peserta didik mampu mengampanyekan kepedulian kependudukan mengenai pencegahan stunting di lingkungan sekolah dan keluarga.
B. MATERI PEMBELAJARAN SSK
1. Materi Reguler: Sistem Pencernaan Manusia dan Nutrisi Organik.
2. Integrasi Materi SSK: Edukasi pencegahan Stunting sejak dini melalui pemenuhan gizi remaja putri, anemia, serta kesiapan fisik calon orang tua dalam mewujudkan keluarga berkualitas.
C. KEGIATAN PEMBELAJARAN
| Tahapan | Deskripsi Kegiatan Integrasi SSK | Waktu |
|---|---|---|
| Pendahuluan |
• Guru membuka pelajaran dengan salam, doa, dan apersepsi. • Guru menyayangkan data stunting nasional dan menghubungkannya dengan materi nutrisi hari ini (SSK Motivation). |
10 Menit |
| Kegiatan Inti (PBL) |
• Orientasi Masalah: Siswa mengamati tayangan infografis BKKBN mengenai siklus stunting. • Organisasi Belajar: Siswa dibagi dalam kelompok diskusi SSK untuk menganalisis menu gizi seimbang remaja. • Penyelidikan: Kelompok menghitung kebutuhan kalori dan pencegahan anemia remaja putri. • Presentasi: Kelompok menyajikan poster digital / karya solusi pencegahan stunting. |
60 Menit |
| Penutup |
• Peserta didik bersama guru menyimpulkan pesan kunci SSK. • Refleksi komitmen menjadi Generasi Berencana (GenRe) yang sehat. • Doa penutup dan salam. |
10 Menit |
D. PENILAIAN / ASESMEN
Guru Mata Pelajaran,
Naufal, S.Pd.
NIP. 19900101 201503 1 002
Database RPP Terintegrasi Spreadsheet
Data tersimpan secara permanen di Google Sheets utama. Anda dapat melakukan pencarian, filter, dan CRUD.
| # | Mata Pelajaran & Jenjang | Materi SSK Integrasi | Guru Pengampu | Tanggal Dibuat | Aksi |
|---|
Backend Google Apps Script (Code.gs)
Salin kode ini ke proyek Google Apps Script (GAS) Anda. Fitur setup database otomatis dan auth password spreadsheet terintegrasi penuh.
// =========================================================================
// BACKEND GOOGLE APPS SCRIPT - GENERATOR RPP SSK (NAUFALNET)
// DATABASE AUTOMATIC SETUP & PERSISTENT SPREADSHEET CRUD WITH MULTI-ROLE AUTH
// =========================================================================
const SPREADSHEET_ID = ""; // Opsional, Kosongkan jika script ditempel langsung di Spreadsheet
function doGet(e) {
return responseJSON({ status: "OK", message: "Web App Generator RPP SSK Ready!" });
}
function doPost(e) {
try {
let contents = {};
if (e && e.postData && e.postData.contents) {
contents = JSON.parse(e.postData.contents);
}
const action = contents.action || (e && e.parameter ? e.parameter.action : "");
if (action === "setupDatabase") {
return responseJSON(setupDatabase(contents.spreadsheetId));
} else if (action === "simpanData") {
return responseJSON(simpanData(contents.data));
} else if (action === "getData") {
return responseJSON(getData());
} else if (action === "deleteData") {
return responseJSON(deleteData(contents.id));
} else if (action === "loginUser") {
return responseJSON(loginUser(contents.username, contents.password));
}
return responseJSON({ success: false, message: "Aksi tidak dikenal" });
} catch (err) {
return responseJSON({ success: false, message: "Error Server: " + err.toString() });
}
}
function responseJSON(obj) {
return ContentService.createTextOutput(JSON.stringify(obj))
.setMimeType(ContentService.MimeType.JSON);
}
function getActiveSpreadsheet(targetId) {
if (targetId) return SpreadsheetApp.openById(targetId);
if (SPREADSHEET_ID && SPREADSHEET_ID.trim() !== "") return SpreadsheetApp.openById(SPREADSHEET_ID);
try {
const active = SpreadsheetApp.getActiveSpreadsheet();
if (active) return active;
} catch(e) {}
return SpreadsheetApp.create("DATABASE_RPP_SSK_NAUFALNET");
}
// 1. SETUP DATABASE OTOMATIS
function setupDatabase(targetId) {
const ss = getActiveSpreadsheet(targetId);
let sheetData = ss.getSheetByName("DATA");
if (!sheetData) {
sheetData = ss.insertSheet("DATA");
sheetData.appendRow([
"ID_RPP", "TANGGAL", "SEKOLAH", "JENJANG", "MAPEL", "KELAS", "ALOKASI",
"TOPIK_SSK", "SUB_TOPIK_SSK", "MODEL", "GURU", "NIP_GURU", "FULL_JSON"
]);
sheetData.getRange(1, 1, 1, 13).setFontWeight("bold").setBackground("#e0effe");
}
let sheetUsers = ss.getSheetByName("USERS");
if (!sheetUsers) {
sheetUsers = ss.insertSheet("USERS");
sheetUsers.appendRow(["USERNAME", "PASSWORD", "ROLE", "NAMA_GURU", "NIP_GURU", "SEKOLAH"]);
sheetUsers.appendRow(["guru", "guru123", "GURU", "Naufal, S.Pd.", "19900101 201503 1 002", "SMP Negeri 1 Siaga Kependudukan"]);
sheetUsers.appendRow(["admin", "admin123", "ADMINISTRATOR", "Administrator SSK", "-", "Dinas Pendidikan"]);
sheetUsers.getRange(1, 1, 1, 6).setFontWeight("bold").setBackground("#fef3c7");
}
return {
success: true,
spreadsheetId: ss.getId(),
spreadsheetUrl: ss.getUrl(),
message: "Setup Database Berhasil! Sheet DATA & USERS dikonfigurasi."
};
}
// 2. SIMPAN DATA RPP
function simpanData(data) {
if (!data) return { success: false, message: "Data RPP kosong!" };
const ss = getActiveSpreadsheet();
let sheet = ss.getSheetByName("DATA");
if (!sheet) {
setupDatabase();
sheet = ss.getSheetByName("DATA");
}
const idRPP = "RPP-" + Date.now();
const timestamp = new Date().toISOString();
sheet.appendRow([
idRPP,
timestamp,
data.sekolah || "",
data.jenjang || "",
data.mapel || "",
data.kelas || "",
data.alokasi || "",
data.topikSSK || "",
data.subTopikSSK || "",
data.model || "",
data.guru || "",
data.nipGuru || "",
JSON.stringify(data)
]);
return {
success: true,
id: idRPP,
message: "Data RPP SSK Berhasil Disimpan Permanen!"
};
}
// 3. GET DATA ALL RPP
function getData() {
const ss = getActiveSpreadsheet();
const sheet = ss.getSheetByName("DATA");
if (!sheet) return { success: true, data: [] };
const values = sheet.getDataRange().getValues();
if (values.length <= 1) return { success: true, data: [] };
const results = [];
for (let i = 1; i < values.length; i++) {
results.push({
id: values[i][0],
tanggal: values[i][1],
sekolah: values[i][2],
jenjang: values[i][3],
mapel: values[i][4],
kelas: values[i][5],
alokasi: values[i][6],
topikSSK: values[i][7],
subTopikSSK: values[i][8],
model: values[i][9],
guru: values[i][10],
nipGuru: values[i][11],
fullData: values[i][12] ? JSON.parse(values[i][12]) : null
});
}
return { success: true, data: results.reverse() };
}
// 4. DELETE DATA
function deleteData(id) {
const ss = getActiveSpreadsheet();
const sheet = ss.getSheetByName("DATA");
if (!sheet) return { success: false, message: "Sheet tidak ditemukan" };
const values = sheet.getDataRange().getValues();
for (let i = 1; i < values.length; i++) {
if (values[i][0] === id) {
sheet.deleteRow(i + 1);
return { success: true, message: "RPP Berhasil Dihapus!" };
}
}
return { success: false, message: "ID RPP tidak ditemukan" };
}
// 5. AUTH LOGIN
function loginUser(username, password) {
const ss = getActiveSpreadsheet();
let sheet = ss.getSheetByName("USERS");
if (!sheet) {
setupDatabase();
sheet = ss.getSheetByName("USERS");
}
const values = sheet.getDataRange().getValues();
for (let i = 1; i < values.length; i++) {
if (String(values[i][0]).trim() === String(username).trim() && String(values[i][1]).trim() === String(password).trim()) {
return {
success: true,
user: {
username: values[i][0],
role: values[i][2],
nama: values[i][3] || values[i][0],
nip: values[i][4] || "-",
sekolah: values[i][5] || ""
},
message: "Login Berhasil!"
};
}
}
return { success: false, message: "Username atau Password Salah!" };
}
Petunjuk Pemasangan Aplikasi di Blogger & GAS
Ikuti langkah ringkas di bawah ini untuk menghubungkan Google Apps Script dengan Spreadsheet dan menanamkan aplikasi ke postingan/halaman Blogger.
- Buka script.google.com dan buat New Project.
- Buka tab Script Code.gs di aplikasi ini, lalu salin seluruh kodenya.
- Tempel kode tersebut di editor `Code.gs` Google Apps Script Anda.
- Klik Deploy > New deployment.
- Pilih jenis deployment: Web App.
- Set Execute as: Me.
- Set Who has access: Anyone (Wajib agar aplikasi terhubung tanpa terblokir).
- Klik Deploy, lalu salin URL Web App yang dihasilkan.
- Cari variabel berikut di bagian awal script
index.html:const IS_PREVIEW = false; const GAS_URL = "https://script.google.com/macros/s/AKfycb.../exec";
- Ubah
IS_PREVIEWmenjadi false. - Ganti URL
GAS_URLdengan Web App URL hasil deploy Anda. - Selesai! Aplikasi kini tersambung penuh dengan database Google Sheets.
Masuk ke Dashboard Blogger > Halaman Baru > Switch ke mode HTML View, lalu tempelkan kode berikut:
<!-- EMBED GENERATOR RPP SSK - BLOGGERAPP NAUFALNET -->
<div style="width: 100%; max-width: 1200px; margin: 0 auto; text-align: center;">
<iframe
src="URL_DEPLOY_GAS_ANDA_DISINI"
style="width: 100%; min-height: 850px; border: none; border-radius: 16px; box-shadow: 0 10px 25px rgba(0,0,0,0.1);"
allowfullscreen="true">
</iframe>
</div>