Professional Documents
Culture Documents
Script Script Script Script Script SCR Ipt
Script Script Script Script Script SCR Ipt
<!-- sumber: https://cdnjs.com/ -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/js/bootstrap.min.
js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-
sweetalert2/11.1.9/sweetalert2.all.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></scr
ipt>
<!-- ************************************************** -->
<!-- fungsi untuk memvalidasi isian form, digabungkan fungsi dengan kirim file -->
<script>
// Example starter JavaScript for disabling form submissions if there are invalid f
ields
function validasi(){
var itemDivalidasi = document.querySelectorAll('#form_surat keluar');
return Array.prototype.every.call(itemDivalidasi, function(item){
return item.checkValidity()
})
}
</script>
<!-- fungsi untuk mengirim form ke spreadsheet metode server side -->
<!-- sumber: https://hayykel.blogspot.com/2021/08/how-to-create-form-with-google-
apps.html -->
<script>
function preventFormSubmit(){
var forms=document.querySelectorAll('form');
for (var i=0;i<forms.length;i++){
forms[i].addEventListener('submit',function(event){
event.preventDefault();
});
}
}
window.addEventListener('load',preventFormSubmit);
function kirimForm(itemIsian){
if(validasi()){
google.script.run.prosesForm(itemIsian);
document.getElementById("form_biodata").reset();
} //akhir if
}
</script>
<script>
const myForm = document.querySelector('form');
const myUpload = document.querySelector('input[name="upFile"]');
const message = document.querySelector('.message');
myForm.addEventListener('submit',(e)=>{
e.preventDefault();
message.textContent = 'Form Submitted';
const file = myUpload.files[0];
const fileR = new FileReader();
fileR.onload = function(e){
const vals = fileR.result.split(',');
const obj = {
fileName:file.name,
mimeType :file.type,
data : vals[1]
}
console.log(obj);
google.script.run.withSuccessHandler(myResult).adderFile(obj);
}
fileR.readAsDataURL(file);
})
function myResult(val){
message.innerHTML = `<a href="${val.url}" target="_blank">${val.name}</a>`;
}
</script>
Css
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/c
ss/bootstrap.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-
awesome/6.0.0-beta2/css/all.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-
sweetalert2/11.1.9/sweetalert2.min.css" />
Index
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<?!= include('css'); ?>
</head>
<body>
<div class="message"></div>
<!-- ******************* konten dimulai dari sini *********************** -->
<div class="container-fluid">
<h3 class="mt-2 text-center">Form Surat Keluar</h3>
<!-- ********************** awal form *********************** -->
<form id="form_surat" name="form_surat" class="needs-validation" onsubmi
t="kirimForm(this)" action="<?= url ?>" autocomplete="off">
<!-- -------------------------------awal item Pengolah ------------------------
--------------->
<div class="row g-3">
<div class="col">
<label for="pengolah" class="form-label">Pengolah</label>
<input type="text" class="form-control" name="pengolah">
<!-- akhir item Pengolah -->
</div>
<!-- awal item Kode Surat -->
<div class="col">
<label for="kode_surat" class="form-label">Kode Surat</label>
<select id="kode_surat" class="form-select" name="kode_surat">
<option selected>Pilih...</option>
<option>S</option>
<option>MO</option>
<option>ND</option>
</select>
</div>
<!-- akhir item Kode Surat -->
</div>
<!-- awal item Isi Ringkasan -->
<div class="row g-3">
<div class="col">
<label for="isi_ringkasan" class="form-label">Isi Ringkasan</label>
<input type="text" class="form-control" name="isi_ringkasan">
<!-------------------------------- akhir item Isi Ringkasan -------------------
-------------------->
</div>
<!-- --------------------------------------awal item Dari ---------------------
---------------------->
<div class="col">
<label for="dari" class="form-label">Dari</label>
<input type="text" class="form-control" name="dari">
</div>
<!-------------------------------- akhir item Isi Ringkasan -------------------
------------------------------->
</div>
<!-- -------------------------------awal item Kepada --------------------------
------------->
<div class="row g-3">
<div class="col">
<label for="kepada" class="form-label">Kepada</label>
<input type="text" class="form-control" name="kepada">
<!-------------------------------- akhir item Kepada --------------------------
------------->
</div>
<!-- --------------------------------------awal item Tanggal Surat ------------
------------------------------->
<div class="col">
<label for="tanggal_surat" class="form-label">Tanggal Disurat</label>
<input type="date" class="form-control" name="tanggal_surat">
</div>
<!-------------------------------- akhir item Tanggal Surat -------------------
------------------------------->
</div>
<!-- -------------------------------awal item Sifat ---------------------------
------------>
<div class="row g-3">
<div class="col">
<label for="sifat" class="form-label">Sifat</label>
<select id="sifat" class="form-select" name="sifat">
<option selected>Pilih...</option>
<option>Biasa</option>
<option>Rahasia</option>
<option>Segera</option>
</select>
<!------------------------- akhir item Sifat ----------------------------------
----->
</div>
<!-- --------------------------------------awal item Lampiran -----------------
-------------------------->
<div class="col">
<label for="upFile" class="form-label">Lampiran</label>
<input type="file" class="form-control" name="upFile">
</div>
<!-------------------------------- akhir item Lampiran ------------------------
-------------------------->
</div>
<!-- -------------------------------awal item Bidang --------------------------
------------->
<div class="row g-3">
<div class="col">
<label for="bidang" class="form-label">Bidang</label>
<select id="bidang" class="form-select" name="bidang">
<option selected>Pilih...</option>
<option>Bid. I</option>
<option>Bid. II</option>
<option>Bid. III</option>
<option>TU</option>
</select>
<!-------------------------------- akhir item Bidang -------------------------
-------------->
</div>
<!-- --------------------------------------awal item Jumlah -------------------
------------------------>
<div class="col">
<label for="jumlah" class="form-label">Jumlah</label>
<input type="text" class="form-control" name="jumlah">
</div>
<!-------------------------------- akhir item Jumlah --------------------------
------------------------>
</div>
<!-- tombol -->
<button type="submit" class="btn btn-primary">Kirim Data</button>
<!-- **************** akhir form **************** -->
</form>
<!-- ************************* akhir konten **************************** -->
</div>
<?!= include('js'); ?>
</body>
</html>
Kode.gs
let SS = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1kIZsEkjkVw
B0MQLy5Ltg3hRz0WWj8bOXUp3WWw2mDb4/edit#gid=253309841');
let WsData = SS.getSheetByName('data')
function doGet(){
let template = HtmlService.createTemplateFromFile('index');
template.url = getURL();
let output = template.evaluate()
.addMetaTag('viewport', 'width=device-width, initial-scale=1')
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
.setTitle('Form Surat Keluar');
return output;
}
// fungsi untuk menyisipkan file
function include(namaFile){
return HtmlService.createHtmlOutputFromFile(namaFile).getContent();
}
/**
* mengambil URL deploy
*/
function getURL(){
var url = ScriptApp.getService().getUrl();
return url;
}
// mengirim data ke spreadsheets
function prosesForm(item_isian){
WsData.appendRow([
new Date(),
item_isian.pengolah,
item_isian.kode_surat,
item_isian.isi_ringkasan,
item_isian.dari,
item_isian.kepada,
item_isian.tanggal_surat,
item_isian.sifat,
item_isian.bidang,
item_isian.jumlah
])
function adderFile(data){
const myFile = Utilities.newBlob(Utilities.base64Decode(data.data),data.mimeType,da
ta.fileName);
const id = '1y8X67_az8cb-D5jzF69yx3HoeD8tHDl5';
const sid = '1kIZsEkjkVwB0MQLy5Ltg3hRz0WWj8bOXUp3WWw2mDb4';
const folder = DriveApp.getFolderById(id);
const fileAdded = folder.createFile(myFile);
const ss = SpreadsheetApp.openById(sid ).getSheetByName('data');
ss.appendRow([fileAdded.getUrl()]);
const rep = {
'upFile' : fileAdded.getUrl()
};
return rep;
}