Hasil Java Script tidak ditampilkan dalam HTML
Saya menulis kode GAS untuk memeriksa apakah karyawan tersebut Masuk atau Tidak (mengekstrak data dari lembar Google). Log konsol memberi saya jawaban yang benar tetapi ketika saya mengklik tombol, jawabannya tidak muncul di ujung depan. Dapatkah Anda membantu saya memecahkan masalah di mana kesalahan saya?
<div>
<script>
function onStatus(notify) {
var employee = "John Peter";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainSheet = ss.getSheetByName("MAIN");
var data = mainSheet.getDataRange().getValues();
for (var j = 0; j < data.length; j++){
var row = data[j];
var mainSheet2 = row[4];
var mainSheet3 = row[0];
var status = (mainSheet2 =="IN" && mainSheet3 == employee) ;
if (status == true){
var notify = employee +" You Are In"
return notify;
}
}
document.getElementById('status').innerHTML= notify;
}
</script>
<button onclick="onStatus()">Check Status</button>
<font color='Green' id="status" ></font>
</div>
Jawaban
Google menyediakan panduan Komunikasi Klien-ke-Server yang sangat bagus, saya sangat menyarankan Anda membaca untuk mendapatkan pemahaman yang lebih baik tentang cara kerjanya.
Anda tidak dapat menempatkan kode skrip aplikasi (misalnya SpreadsheetApp.getActiveSpreadsheet()
) di skrip frontend Anda. Kode itu harus dijalankan oleh server skrip aplikasi di backend dan Anda kemudian akan memanggilnya menggunakan google.script.runpanggilan.
Code.gs
function doGet(e) {
return HtmlService.createHtmlOutputFromFile('Index');
}
function checkStatus() {
var employee = "John Peter";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainSheet = ss.getSheetByName("MAIN");
var data = mainSheet.getDataRange().getValues();
for (var j = 0; j < data.length; j++){
var row = data[j];
var mainSheet2 = row[4];
var mainSheet3 = row[0];
var status = (mainSheet2 =="IN" && mainSheet3 == employee) ;
if (status == true){
return employee + " You Are In";
}
}
}
Index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<button onclick="onStatus()">Check Status</button>
<font color='Green' id="status" ></font>
</div>
<script>
function onStatus() {
google.script.run
.withSuccessHandler(updateStatus) // Send the backend result to updateStatus()
.checkStatus(); // Call the backend function
}
function updateStatus(notify) {
document.getElementById('status').innerHTML= notify;
}
</script>
</body>
</html>