質問編集履歴
3
書式の改善、誤字の修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
doPostの戻り値
|
1
|
+
doPost 関数の戻り値の役割と使用方法について
|
body
CHANGED
@@ -1,30 +1,28 @@
|
|
1
|
+
フォーム送信後の画面遷移に関する問題で、doPost関数の戻り値に不要な値を指定する必要がある理由を知りたい。
|
2
|
+
|
3
|
+
----
|
4
|
+
doPost関数の戻り値に不要な値を指定しなければならない状況が発生しています。4つの異なるアプローチは期待通りに動作しませんでした。
|
5
|
+
|
6
|
+
1. doPost関数が存在しない場合:「スクリプト関数が見つかりません: doPost」
|
7
|
+
2. return;やlet i= 1;のような戻り値を指定した場合:「スクリプトが完了しましたが、何も返されませんでした。」
|
1
|
-
|
8
|
+
3. return 1; のような値を戻り値として指定した場合:「スクリプトが完了しましたが、返された値はサポートされている戻り値の型ではありませんでした。」。
|
9
|
+
4. HtmlTemplateオブジェクトを戻り値として指定した場合:doGet関数の戻り値を優先することで画面遷移処理を実現します。
|
2
|
-
```
|
10
|
+
```
|
11
|
+
function doGet(e) {
|
12
|
+
const page = e.parameter['page'];
|
13
|
+
if (page) {
|
14
|
+
return HtmlService.createTemplateFromFile(page).evaluate();
|
15
|
+
}
|
16
|
+
return HtmlService.createTemplateFromFile('defaultPage').evaluate();
|
17
|
+
}
|
18
|
+
```
|
19
|
+
```
|
3
|
-
<!--
|
20
|
+
<!-- defaultPage.html -->
|
4
|
-
<form action='' method='post'>
|
21
|
+
<form action='' method='post'>
|
5
|
-
<button type='submit' formaction='https://~/dev'>
|
22
|
+
<button type='submit' formaction='https://~/dev'>Default Page</button>
|
6
|
-
<button type='submit' formaction='https://~/dev?
|
23
|
+
<button type='submit' formaction='https://~/dev?page=banana'>Banana Page</button>
|
7
|
-
</form>
|
24
|
+
</form>
|
8
|
-
```
|
25
|
+
```
|
9
|
-
```gs
|
10
|
-
function doGet(e){
|
11
|
-
const page=e.parameter['p'];
|
12
|
-
if(page){return HtmlService.createTemplateFromFile(page).evaluate();}
|
13
|
-
return HtmlService.createTemplateFromFile('orange').evaluate();
|
14
|
-
}
|
15
|
-
|
26
|
+
追記
|
16
|
-
この表の結果は、両方のボタンに共通して確認しました。
|
17
|
-
|doPost|結果|
|
18
|
-
|
27
|
+
----
|
19
|
-
|存在しない|スクリプト関数が見つかりません: doPost|
|
20
|
-
|, return;, let i= 1;|スクリプトが完了しましたが、何も返されませんでした。|
|
21
|
-
|return 1;|スクリプトが完了しましたが、返された値はサポートされている戻り値の型ではありませんでした。|
|
22
|
-
|
23
|
-
|
28
|
+
<base target="_top">タグを追加することで、doPost関数の戻り値を利用した画面遷移処理を実装することができました。
|
24
|
-
~~(同じプロジェクトに存在する)HTMLファイルを基に作成したHtmlOutputオブジェクトを戻り値として指定したところ、どちらのボタンもエラーにならず、 どちらのボタンでもdoGet戻り値を優先した結果が表示されることを確認しました。~~
|
25
|
-
|button|doPost戻り値|表示|
|
26
|
-
|:--:|:--:|:--:|
|
27
|
-
|指定なし|apple.html|orange.html|
|
28
|
-
|banana|apple.html|banana.html|
|
29
|
-
|
30
|
-
~~この質問の背後にある問題はフォーム送信後の画面遷移で、すでに見た目には意図したとおりに機能するコードを記述できます。しかしこの質問の疑問が解決されていないため、現段階ではdoPost戻り値に不要な値を指定する必要があります。このためにこの質問の疑問を解決したいのですが、助けていただくことはできますか。~~
|
2
macaron_xxxユーザの指摘内容に関する情報を反映:誤字修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|, return;, let i= 1;|スクリプトが完了しましたが、何も返されませんでした。|
|
21
21
|
|return 1;|スクリプトが完了しましたが、返された値はサポートされている戻り値の型ではありませんでした。|
|
22
22
|
|
23
|
-
下記の現象は、<base target="_top">が挿入されていないこと
|
23
|
+
下記の現象は、<base target="_top">が挿入されていないことを(直接的または間接的な)原因として発生していたことがわかりました。この部分を変更することで、doPostの戻り値を反映できることを確認しています。
|
24
24
|
~~(同じプロジェクトに存在する)HTMLファイルを基に作成したHtmlOutputオブジェクトを戻り値として指定したところ、どちらのボタンもエラーにならず、 どちらのボタンでもdoGet戻り値を優先した結果が表示されることを確認しました。~~
|
25
25
|
|button|doPost戻り値|表示|
|
26
26
|
|:--:|:--:|:--:|
|
1
macaron_xxxユーザの指摘内容に関する情報を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -20,10 +20,11 @@
|
|
20
20
|
|, return;, let i= 1;|スクリプトが完了しましたが、何も返されませんでした。|
|
21
21
|
|return 1;|スクリプトが完了しましたが、返された値はサポートされている戻り値の型ではありませんでした。|
|
22
22
|
|
23
|
+
下記の現象は、<base target="_top">が挿入されていないことが原因で(直接的または間接的に)発生していたことがわかりました。 この部分を変更することで、doPostの戻り値を反映できることを確認しています。
|
23
|
-
(同じプロジェクトに存在する)HTMLファイルを基に作成したHtmlOutputオブジェクトを戻り値として指定したところ、どちらのボタンもエラーにならず、 どちらのボタンでもdoGet戻り値を優先した結果が表示されることを確認しました。
|
24
|
+
~~(同じプロジェクトに存在する)HTMLファイルを基に作成したHtmlOutputオブジェクトを戻り値として指定したところ、どちらのボタンもエラーにならず、 どちらのボタンでもdoGet戻り値を優先した結果が表示されることを確認しました。~~
|
24
25
|
|button|doPost戻り値|表示|
|
25
26
|
|:--:|:--:|:--:|
|
26
27
|
|指定なし|apple.html|orange.html|
|
27
28
|
|banana|apple.html|banana.html|
|
28
29
|
|
29
|
-
この質問の背後にある問題はフォーム送信後の画面遷移で、すでに見た目には意図したとおりに機能するコードを記述できます。しかしこの質問の疑問が解決されていないため、現段階ではdoPost戻り値に不要な値を指定する必要があります。このためにこの質問の疑問を解決したいのですが、助けていただくことはできますか。
|
30
|
+
~~この質問の背後にある問題はフォーム送信後の画面遷移で、すでに見た目には意図したとおりに機能するコードを記述できます。しかしこの質問の疑問が解決されていないため、現段階ではdoPost戻り値に不要な値を指定する必要があります。このためにこの質問の疑問を解決したいのですが、助けていただくことはできますか。~~
|