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

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

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

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

Q&A

解決済

1回答

1217閲覧

google apps scriptのUrlFetchAppについて

k-takahashi

総合スコア8

Google Apps Script

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

0グッド

0クリップ

投稿2017/10/17 09:32

###前提・実現したいこと
google apps scriptを使用し、外部php(cakephp)をトリガーによる定期処理させたい。

###発生している問題・エラーメッセージ
コードを実行すると、タイムアウトというアラートが赤く表示されます。

###該当のソースコード
UrlFetchApp.fetch("https://www.xxx.net/xxx/xxx");

###試したこと
コードが配置されているサーバで今回と同じ処理をさせると2分くらいで処理が正常終了しますが、GASだと1分くらいでタイムアウトエラーが発生している気がします。
基本的に5分を超えるとタイムアウトになると他の記事では記載されていますが、5分に満たなくてもタイムアウトになります。

###補足情報(言語/FW/ツール等のバージョンなど)

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

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

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

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

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

guest

回答1

0

ベストアンサー

(個人的な見解かもしれませんが、)
定期実行処理に長い時間を要するとのことですが、API設計の基本的な考え方として、
リクエストを受けてから長時間返さない(ビジー状態)というのはあまりよい作りではありません。

理由として、ビジー状態時には、
リクエストを送信しているクライアントも、
リクエストを受信しているサーバーもリソースを常に使い続けることなります。
(おそらくリクエストを送信するGAS側もそれを考慮してのtimeoutと考えます)

もし、私がこの長時間を要する定期実行をするならば、以下のような2パターンの設計で実現します。

パターン1:実行結果をpollingで確認

定期実行開始API: リクエストを受けたら定期処理は非同期実行し、正常開始できたことをもってすぐにレスポンスを返します。
非同期実行している処理が完了したら Google Sheets API を利用して spreadsheet に処理完了の内容を更新します。

パターン2:実行結果をpollingで確認

  • 定期実行開始API: リクエストを受けたら定期処理は非同期実行し、正常開始できたことをもってすぐにレスポンスを返します。(このときに実行した定期処理の処理IDを採番し返す)
  • 定期実行結果確認API: 開始したときに受け取った処理IDを元に結果を確認します。レスポンスには結果ステータスを返します(処理中、処理完了など)。※このAPIは処理完了の確認が取れるまで定期的にリクエスト(polling)します。

投稿2017/10/17 14:18

cookieman

総合スコア128

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問