POSTリクエストを行う際に、doPostで戻り値を指定する必要があると見受けられるような動作を確認しました。しかし、それが何のために必要などのようなものかまではわかりませんでした。
html
1<!-- orange.html --> 2<form action='' method='post'> 3<button type='submit' formaction='https://~/dev'>指定なし</button> 4<button type='submit' formaction='https://~/dev?p=banana'>banana</button> 5</form>
gs
1function doGet(e){ 2 const page=e.parameter['p']; 3 if(page){return HtmlService.createTemplateFromFile(page).evaluate();} 4 return HtmlService.createTemplateFromFile('orange').evaluate(); 5}
この表の結果は、両方のボタンに共通して確認しました。
doPost | 結果 |
---|---|
存在しない | スクリプト関数が見つかりません: doPost |
, return;, let i= 1; | スクリプトが完了しましたが、何も返されませんでした。 |
return 1; | スクリプトが完了しましたが、返された値はサポートされている戻り値の型ではありませんでした。 |
下記の現象は、<base target="_top">が挿入されていないことを(直接的または間接的な)原因として発生していたことがわかりました。この部分を変更することで、doPostの戻り値を反映できることを確認しています。
(同じプロジェクトに存在する)HTMLファイルを基に作成したHtmlOutputオブジェクトを戻り値として指定したところ、どちらのボタンもエラーにならず、 どちらのボタンでもdoGet戻り値を優先した結果が表示されることを確認しました。
button | doPost戻り値 | 表示 |
---|---|---|
指定なし | apple.html | orange.html |
banana | apple.html | banana.html |
この質問の背後にある問題はフォーム送信後の画面遷移で、すでに見た目には意図したとおりに機能するコードを記述できます。しかしこの質問の疑問が解決されていないため、現段階ではdoPost戻り値に不要な値を指定する必要があります。このためにこの質問の疑問を解決したいのですが、助けていただくことはできますか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/07 04:46
2021/09/07 23:27
2021/09/08 00:11
2021/09/08 02:23
2021/09/10 05:37
2021/09/10 07:48