Google Apps Script doGet(e)メソッドでクエリパラメータを処理しようとしています。私はパラメータ(またはパラメータの欠如)に基づいて異なるHTMLを提供する以下の単純なdoGet()関数を定義しました。 doGet(e)パラメータが未定義
function doGet(e) {
Logger.log('In doGet');
Logger.log('query params: ' + e);
var isNull = (e.queryString == null);
var len = e.parameters.length;
Logger.log('query string is null: ' + isNull);
Logger.log('number of params: ' + len);
if (e.queryString == null) { //doesn't work!
Logger.log('Serving loginUI');
return HtmlService
.createHtmlOutputFromFile('loginUI')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.addMetaTag('viewport', 'width=device-width, initial-scale=1')
.setTitle("Please log in");
}
//if here, we know query string is NOT null
if (e.parameter.mode == "player") {
return HtmlService
.createHtmlOutputFromFile('playerUI')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.addMetaTag('viewport', 'width=device-width, initial-scale=1')
.setTitle("Following Player");
}
if (e.parameter.mode == "hole") {
return HtmlService
.createHtmlOutputFromFile('playerUI')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.addMetaTag('viewport', 'width=device-width, initial-scale=1')
.setTitle("Following Hole");
}
if (e.parameter.mode == "flex") {
return HtmlService
.createHtmlOutputFromFile('flexUI')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.addMetaTag('viewport', 'width=device-width, initial-scale=1')
.setTitle("Flex Interface");
}
}
あなたは私のログコードから見ることができるように
は、私がeパラメータがのdoGet()がもともとクエリパラメータなしで呼び出された場合にあるかを把握するのは難しいしようとしています。ログの出力は次のとおりです。> [17-10-24 18:14:48:557 PDT] Starting execution [17-10-24 18:14:48:565
> PDT] Logger.log([In doGet, []]) [0 seconds] [17-10-24 18:14:48:566
> PDT] Logger.log([query params: [object Object], []]) [0 seconds]
> [17-10-24 18:14:48:566 PDT] Logger.log([query string is null: false,
> []]) [0 seconds] [17-10-24 18:14:48:567 PDT] Logger.log([number of
> params: undefined, []]) [0 seconds] [17-10-24 18:14:48:568 PDT]
> Execution succeeded [0.003 seconds total runtime]
e.parametersにクエリパラメータがない場合の対処方法を教えてください。この場合、eは定義されていないように見えます。何か案は?
私の考えは、doGetが提供するhtmlファイルに関連付けられたjavascriptでクエリ文字列を作成することです。次のように上記のコードでいう「loginUI.html」ファイルでは、例えば、私は、異なるパラメータでgoogle.script.run.doGet()を呼び出しjqueryのコードを含める:
<script>
$("#playerUI").click(function() {
var queryString = "?mode=player";
google.script.run.doGet(queryString);
});
$("#holeUI").click(function() {
var queryString = "?mode=hole";
google.script.run.doGet(queryString);
});
$("#flexUI").click(function() {
var queryString = "?mode=flex";
google.script.run.doGet(queryString);
});
</script>
マイこれはどちらもうまくいきません。お知らせ下さい。
このサイトの質問には、唯一の質問([ask]参照)が含まれている必要があります。新しい質問として「フォローアップ」質問を投稿することをお勧めします。 –