2016-12-21 22 views
0

我試圖創建一個簡單的數據庫來處理某些用戶數據。目前我正在嘗試在創建新用戶的HTML頁面上工作。我有一些代碼可以從HTML頁面輸入並將其插入到電子表格中。該表格要求輸入用戶名,密碼和顯示名稱。然後這些被傳入電子表格。但是,我想要做的是檢查用戶名是否已經存在,如果有,請將彈出窗口發送回HTML頁面。我無法弄清楚這一點。到目前爲止,我有:Google App腳本:比較HTML文本框中的值並返回消息

function createNewPlayer(form) { 
var playerSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Players"); 
var lastColumn = playerSheet.getLastColumn() 


var defaultsSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Defaults"); 
var getDefaults = defaultsSheet.getRange(7, 3, 37, 1) 
var defaults = getDefaults.getValues(); 

var name = form.PlayerName; 
var password =form.Password; 
var displayName = form.DisplayName 



var playerNameRow = playerSheet.getRange(1, 4, 1, lastColumn - 1); // get all the columns 
var playerNameValues = playerNameRow.getValues(); // get the values 

var findPlayer = name; 


for (var j = 0; j < playerNameValues[0].length; j++){ 
if (playerNameValues[0][j] == findPlayer) { 
IF THIS NAME EXISTS STOP THE PROCESS AND RETURN A POPUP ON THE PAGE} 


var setName = playerSheet.getRange(1, lastColumn + 1, 1, 1); 
var setPassword = playerSheet.getRange(2, lastColumn + 1, 1, 1); 
var setDisplayName = playerSheet.getRange(3, lastColumn + 1, 1, 1); 

var setDefault = playerSheet.getRange(5, lastColumn + 1, 37, 1); 

setName.setValue(name); 
setPassword.setValue(password); 
setDisplayName.setValue(displayName); 
setDefault.setValues(defaults) 

您會看到在那裏有一個For循環,那裏是腳本檢查現有條目的位置。這有效,如果我登錄那裏然後記錄器接受它。我只需要知道如何將彈出窗口發送到HTML頁面?

添加HTML爲清楚:

<body> 
<h1> New </h1> 

<div class="block result-display" id="results"> 


<html> 

<head> 
    <title>Test Page</title> 
</head> 

<body> 
    <form> 
     Enter your Player Name<input type="text" value="" name="PlayerName"/><br> 
     Enter your Password<input type="password" value="" name="Password"/><br> 
     Enter your Display Name<input type="text" value="" name="DisplayName"/><br> 
     <input type="button" onClick="formSubmit()" value="Submit" /> 
    </form> 
</body> 
<script type="text/javascript"> 
    function formSubmit() { 
     google.script.run.createNewPlayer(document.forms[0]); 
    } 
</script> 
+0

你說的HTML網頁是什麼意思?一個Apps腳本Web應用程序?非Google網站?電子表格中的對話框?電子表格中的側邊欄?您可能需要使用'google.script.run.functionName()'和'withSuccessHandler(函數名稱)'[Apps腳本文檔 - 客戶端API](https://developers.google.com/apps-script/guides/html/reference/run) –

+0

是的,我的意思是一個應用程序腳本的Web應用程序。那麼,withSuccessHandler函數是否會彈出對話框? –

+0

是的。 'withSuccessHandler'函數自動接收從服務器返回的任何內容。所以,你可以返回一個值,或者你可以將HTML作爲一個字符串返回。 'withSuccessHandler'提供了一種方法來調用服務器,取回某些東西,然後只有在服務器代碼完成時觸發另一個函數。 –

回答

1

添加withSuccessHandler(functionName)到您的客戶端API調用:

<script type="text/javascript"> 
    function formSubmit() { 
     google.script.run 
     .withSuccessHandler(showReturnedContent) 
     .createNewPlayer(document.forms[0]); 
    } 

    window.showReturnedContent = function(rtrnedValue) { 
    console.log("showReturnedContent ran!"); 
    console.log("rtrnedValue: " + rtrnedValue); 

    //To Do - Add code to show new HTML content 
    } 
</script>