Die Java Script-Ergebnisse werden nicht in HTML angezeigt
Ich habe einen GAS-Code geschrieben, um zu überprüfen, ob der Mitarbeiter angemeldet ist oder nicht (Daten aus Google Sheets extrahieren). Das Konsolenprotokoll gibt mir die richtige Antwort, aber wenn ich auf die Schaltfläche klicke, wird die Antwort nicht am Frontend angezeigt. Können Sie mir helfen, Fehler zu beheben, bei denen ich einen Fehler gemacht habe?
<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>
Antworten
Google bietet einen sehr guten Client-zu-Server-Kommunikationsleitfaden , den Sie unbedingt lesen sollten, um ein besseres Verständnis der Funktionsweise zu erhalten.
Sie können keinen Apps-Skriptcode (z. B. SpreadsheetApp.getActiveSpreadsheet()
) in Ihre Frontend-Skripte einfügen . Dieser Code muss vom Skript-Server der Apps im Backend ausgeführt werden und wird dann über einen google.script.runAufruf aufgerufen.
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>