1

htmlコードを使用してユーザーが日付を選択し、選択した日付に基づいてリモートAPIから値を取得して、これらの値をシートに表示できるダッシュボードを作成しています。アプリケーションスクリプトでGoogleスプレッドシートのセル値が常に更新されない

私はhtmlファイルにようなものがあります:私は、スクリプトエディタから機能(fncOpenMyDialogを())を選択すると、それが作成

function fncOpenMyDialog() { 
    //Open a dialog 

    var htmlDlg = HtmlService.createHtmlOutputFromFile('HTML_myHtml') 
     .setSandboxMode(HtmlService.SandboxMode.IFRAME) 
     .setWidth(500) 
     .setHeight(300); 
    SpreadsheetApp.getUi() 
     .showModalDialog(htmlDlg, 'Dashboard'); 


}; 

function functionToRunOnFormSubmit(fromInputForm, datevalue) { 
    Logger.log(fromInputForm); 
    Logger.log(datevalue); 
    SpreadsheetApp.getActiveSheet().getRange('B3').setValue(fromInputForm); 
    SpreadsheetApp.getActiveSheet().getRange('B4').setValue(datevalue); 
}; 

次のように私はcode.gsを持って

<!DOCTYPE html> 
<html> 
<head> 
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
    <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
    <link rel="stylesheet" href="/resources/demos/style.css"> 
    <script> 
    $(function() { 
    $("#datepicker").datepicker(); 
    }); 
    </script> 

</head> 
<body> 
<form> 
<select name="Student" id="category"> 

<option value="" selected="selected">Select Student</option> 

<option value="Abercrombie, Amber">Abercrombie, Amber(Gr 11)</option> 
<option value="Yupa, Jason">Yupa, Jason(Gr 9)</option> 
</select> 
Date: <input type="text" id="datepicker" name="datepicker"> 
<input type="submit" value="Submit" onclick="myFunction()"> 
</form> 

<p id="demo"></p> 
<script> 
function myFunction() { 
    var x = document.getElementById("category").value; 
    var x2 = document.getElementById("datepicker").value; 
//document.getElementById("demo").innerHTML = x; 

    google.script.run.functionToRunOnFormSubmit(x, x2); 
    google.script.host.close(); 

} 
</script> 

</body> 
</html> 

をスプレッドシート上のダッシュボード、ここでは日付を選択できますが、functionToRunOnFormSubmit関数のように引数をログに記録し、それに応じてB3とB4のセル値を設定します。それも更新されていませんスクリプトエディタにはログインしていません。

+1

仕上げの前回の呼び出しを待たずに、ダイアログを閉じてその間違いました。 –

+0

@ZigMandel ok最初の呼び出しが完了するのを待つ方法については、メソッドのドキュメントを教えてください。 – ashishk

+1

google.script.runのgoogle –

答えて

2

問題は、非同期のajax呼び出しであるgoogle.script.run関数を呼び出した直後に「close」を呼び出していることです。

場合によっては、ブラウザに十分な時間をかけてAJAX呼び出しを開始したり、ページが終了してキャンセルされたりすることがあります。時にはバックエンドのスクリプトに到達することもありますが、時には失われることもあります。

は、ドキュメントが明示的に示してdoesntの間に、あなたは両方をフックすることができますドキュメントを見て、両方の成功(そこから近いダイアログ)を処理し、失敗(ユーザーに表示するエラー)

https://developers.google.com/apps-script/guides/html/reference/run

このような呼び出し:

google.script.run.withFailureHandler(onFailure).withSuccessHandler(onSuccess).yourCall();

関連する問題