【GAS】doPostの「スクリプトが完了しましたが、何も返されませんでした。」への対処方法

本記事では、GAS(GoogleAppsScript)でWebアプリケーション開発をしているときに「スクリプトが完了しましたが、何も返されませんでした。」というエラーが出て困っている方へ向けて解決策をご紹介いたします。

対処なしの例

はじめに、対処をしていない例について紹介いたします。以下のWebアプリケーションを開いてみて下さい。

https://script.google.com/a/macros/meta-reputation.co.jp/s/AKfycbwcRAKVHkVEc0oWJQUYplriHtslehgpz-MTOwGjjk7vWwstgQnf/exec

「送信する」のボタンをクリックすると、「スクリプトが完了しましたが、何も返されませんでした。」という画面が表示されてしまいます。

フォームの各項目へは、何か入力しても、何もしなくても結果は同じです。今回はテストで作成したフォームですので、実際にはどこにも送信されていませんのでご安心ください。

対処なしのスクリプト

上記Webアプリケーションのスクリプトは以下です。

https://script.google.com/d/1zupQDwvYtqYNbvbJIPgDuSbMX-njeL2HhvB1imzvnIY83R87kY58jRCa/edit?usp=sharing

お勤め先のセキュリティ規定によってはスクリプトエディタにアクセスできない場合もありますので、その際にはこちらのGithubをご覧ください。

https://github.com/kakkiichan/dopost_error

エラーの背景と解決策

このエラーが表示される理由は、文言通り、「何も返されなかった」ことにあります。従って、何か返してあげるようにスクリプトを書き換えれば解決します。

具体的には、doPostの中にreturn文を記述することで、「何も返されなかった」状態はクリアになり、今回のエラーは表示されなくなります。今回は、「送信が完了しました。」のようなリザルト画面を表示させるようにしておきます。

対処ありの例

上記の対策をしたWebアプリケーションはこちらです。

https://script.google.com/a/macros/meta-reputation.co.jp/s/AKfycbzf4Ry3gfPbz6CTDfSLEtr8u_vv_oHbrSA4ULavIXu42jEw8CMj/exec

同じように「送信する」のボタンをクリックすると、送信が完了した旨を表示するリザルト画面が現れます。

フォームの各項目へは、何か入力しても、何もしなくても結果は同じです。今回はテストで作成したフォームですので、実際にはどこにも送信されていませんのでご安心ください。

対処ありのスクリプト

https://script.google.com/d/1i8OPGhjt7-CE4JYeyzRCHwuU3Q8eZc5Ws4x-rfgy_Dk4w-TyerRwSpf1/edit?usp=sharing

対処なしのスクリプトと比較すると、

  1. doPostの中にreturn文がある
  2. resultのHTMLページが用意されている

の違いがあります。

お勤め先のセキュリティ規定によってはスクリプトエディタにアクセスできない場合もありますので、その際にはこちらのGithubをご覧ください。

https://github.com/kakkiichan/dopost_noerror

まとめ

GAS(GoogleAppsScript)でWebアプリケーション開発をしているときに「スクリプトが完了しましたが、何も返されませんでした。」というエラーへの対処法としましては、文言通り「何かを返す」ようにすることが挙げられます。

今回は、リザルトページを表示させるようにコードを書き換えることにより解決することを紹介いたしました。

関連記事

今回のフォームは実際にはどこにも送信されないものですが、例えばスプレッドシートに記録することができれば、便利ですよね。実際にそのようなフォームを作成する方法はこちらで紹介しています。

【doPost編】GASとHTMLで入力フォームを作成し、スプレッドシートに記録する方法1

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

ABOUTこの記事をかいた人

株式会社メタレピュテーション代表取締役 生産性向上コンサルタントとして、働き方改革に役立つ人事制度設計やプログラミングによる業務効率改善に関する情報を発信。また、統計学や機械学習による、ビジネス課題の把握や改善策の提案。 WACA認定上級ウェブ解析士、JDLA E資格、応用情報技術者