結論 : 原因としてよくあるのは、次の2つ。
1.マルチアカウント状態になってしまっている。
→いったんすべてのアカウントからログアウトし、利用するアカウントのみでログインする。
2.doPost において、webページを return してしまっている。
→何も return しない。または、正しいやり方で return する。
1. いつ生じるのか??
次のような場合に、見られることが多いです。
- GAS エディターを開こうとしたとき。
- デプロイしたwebアプリのURLから、doGet または doPost の処理を実行しようとしたとき。
2. 原因候補① マルチアカウント状態になってしまっている。
マルチアカウントとは、お使いのブラウザ上で、複数のgoogleアカウントでログインしてしまっている場合です。
google検索ページなどで、次のような手順で確認できます。
こうなっていると、GASのエディターを開こうとした際などに、うまく開くことができずに、上記の画面が出てしまいます。
対処法
まず、すべてのアカウントからログアウトし(下図)、その後、利用したいアカウントのみでログインします。
3. 原因候補② doPost において、webページを return してしまっている。
doGet() 関数の処理において、GASで生成したwebページを returnする場合があると思います。
しかし、doPost() 関数でこれをしてしまうと、エラーとなり、上記の画面が表示されます。
//単純なテキストののwebページを返す。
return ContentService.createTextOutput("処理が完了しました。");
//またはindex.htmlファイルのページを返す。
return HtmlService.createTemplateFromFile("index").evaluate();
対処法
doPost() 関数では、webページを返すことはできません。何も返さないか、何か返したい場合は、次のようにしましょう。(次は、オブジェクトを返す場合です)
//オブジェクトを準備
const obj = {
status: "ok",
message: "処理が完了しました。"
}
//JSON変換したオブジェクトを返す。
return ContentService
.createTextOutput()
.setMimeType(ContentService.MimeType.JAVASCRIPT);
.setContent(JSON.stringify(obj));
ちなみにこの方法は、doGet() 関数でも同様に使えます!
Cloud Tree
Cloud Treeは中小企業向けDX・システム制作会社です。
中小企業DXツールであり、コストパフォーマンスが高いZohoを当社でも採用しております。
システムづくり、業務効率化、Zohoにご興味をお持ちの方は、問い合わせボタンまたはメニューよりお声がけください。
執筆者 佐伯 太翼
CloudTree所属
業務システム開発(iPhone, android, windows, mac)、DX推進支援、Zoho導入パートナー、GASシステムアプリ制作
________________
現場の役に立つシステムを作る
DX導入の負担を減らす
________________