質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

4770閲覧

doPost 関数の戻り値の役割と使用方法について

3_April_2021

総合スコア48

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2021/09/06 07:19

編集2024/06/26 06:32

フォーム送信後の画面遷移に関する問題で、doPost関数の戻り値に不要な値を指定する必要がある理由を知りたい。


doPost関数の戻り値に不要な値を指定しなければならない状況が発生しています。4つの異なるアプローチは期待通りに動作しませんでした。

  1. doPost関数が存在しない場合:「スクリプト関数が見つかりません: doPost」
  2. return;やlet i= 1;のような戻り値を指定した場合:「スクリプトが完了しましたが、何も返されませんでした。」
  3. return 1; のような値を戻り値として指定した場合:「スクリプトが完了しましたが、返された値はサポートされている戻り値の型ではありませんでした。」。
  4. HtmlTemplateオブジェクトを戻り値として指定した場合:doGet関数の戻り値を優先することで画面遷移処理を実現します。
function doGet(e) { const page = e.parameter['page']; if (page) { return HtmlService.createTemplateFromFile(page).evaluate(); } return HtmlService.createTemplateFromFile('defaultPage').evaluate(); }
<!-- defaultPage.html --> <form action='' method='post'> <button type='submit' formaction='https://~/dev'>Default Page</button> <button type='submit' formaction='https://~/dev?page=banana'>Banana Page</button> </form>

追記

<base target="_top">タグを追加することで、doPost関数の戻り値を利用した画面遷移処理を実装することができました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

HTMLファイルを基に作成したHtmlOutputオブジェクトを戻り値として指定したところ、どちらのボタンもエラーにならず、 どちらのボタンでもdoGet戻り値を優先した結果が表示されることを確認しました。

doGetおよびdoPostがある状態でテストしてみましたが、doPostの結果(return)が表示されました。
再度ご確認ください。

投稿2021/09/06 23:58

macaron_xxx

総合スコア3191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

3_April_2021

2021/09/07 04:46

質問に反映させましたが、<base target="_top">が問題だったようで、doPostの戻り値が反映されることを確認しました。 タイトルの疑問は疑問で解決したいので、まだ締め切りは保留し、回答を待ちます。
macaron_xxx

2021/09/07 23:27

何を疑問に思ってらっしゃるのかわからないのですが、Postした際の戻り値は今回の例で言えばapple.htmlのHTMLです。 Postして、apple.htmlが返ってくるのでapple.htmlが表示されるのです。
3_April_2021

2021/09/08 00:11

はい、そこは問題ありません。
macaron_xxx

2021/09/08 02:23

上記が「POSTリクエストを行う際に、doPostで戻り値を指定する必要があると見受けられるような動作を確認しました。しかし、それが何のために必要などのようなものかまではわかりませんでした。」に対する回答だと思うのですが、どこが疑問なのでしょうか?
3_April_2021

2021/09/10 05:37

回答が来そうにないため、質問は一旦締め切らせていただきます。ありがとうございました。
macaron_xxx

2021/09/10 07:48

結局質問はなんだったんでしょうか…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問