teratail header banner
teratail header banner
質問するログイン新規登録
Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

156閲覧

google.script.runの実行速度について

dukitaro

総合スコア1

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2025/07/03 16:45

編集2025/07/03 16:48

0

0

質問の要旨

Google Apps Scriptのウェブアプリの実行速度の短縮を図りたく、様々測定を行ったところ、フロントエンド側でgoogle.script.runを叩いてから、バックエンドの対象関数の1行目が実行されるまでに3秒程度かかっていることがありました。引数は数桁の数字を1つ入れているだけなので、それの容量が原因とは考えづらいほか、フロント・バックともに全く同じソースコードのアプリを2つ立てて検証すると、実行速度に有意な差があります(上記「1行目が実行されるまで」に有意な差があり、それ以降には差はほとんどありません。)。

何か原因として考えられるものはあるでしょうか。その他直接の原因でなくとも、高速化の方法がありましたらお願いいたします(バックエンド側関数は十分高速化してあるものと思っており、1行目の実行以降の速度にも満足しています。)。

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

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

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

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

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

guest

回答1

0

確かに、引数は小さな数字1つだけなので、データの容量が原因ではなさそうですし、同じコードで別のアプリを作成すると速度差が出るというのも不思議ですね。

  • GASはGoogleのサーバー上で実行されるため、サーバーの負荷状況によって実行速度が変動することがあります。実行タイミングによって速度差が生じるのはこのためです。残念ながら、私たちユーザー側でコントロールできる部分ではないです。
  • GASのスクリプトやウェブアプリには、キャッシュ機構があります。初回実行時はキャッシュがないため遅く、2回目以降は速くなることがあります。また、GASのページを開いたまましばらく置いておくと、関数などがプリロードされ、google.script.runの初回実行が速くなる場合があります。アプリ間の速度差は、このキャッシュやプリロードの状態の違いが影響している可能性があります。
  • GASでは非同期処理によってさまざまなタスクが実行されています。何らかの理由でこの非同期処理に遅延が発生し、google.script.run の呼び出しに影響を与えている可能性も考えられます。ただし、これは推測の域を出ません。
  • スクリプトのプロパティ設定やデプロイ方法によって、パフォーマンスに影響が出る可能性があります。具体的には、新しいバージョンとしてデプロイした場合と、既存のバージョンを上書きした場合で、挙動が異なる可能性があります。

残念ながら、google.script.run の呼び出しにかかる時間を直接短縮する方法は限られていますが、体感速度を向上させることは可能です。

  • google.script.run を初めて呼び出す際に時間がかかっているのであれば、アプリの読み込み時にダミーのgoogle.script.run を実行してキャッシュをウォームアップしておくことで、2回目以降の呼び出しを高速化できます

JavaScript

1// クライアントサイド 2window.onload = function() { 3 google.script.run.withSuccessHandler(() => {}).dummyFunction(); // ダミー関数を実行 4}; 5 6// サーバーサイド 7function dummyFunction() { 8 return null; // 何もしない 9}

バックエンドの処理を小さな単位に分割し、必要なデータだけを google.script.run でやり取りすることで、通信にかかる時間を短縮できます。
google.script.run.withSuccessHandler().withFailureHandler() の代わりに、Promise を使った非同期処理でgoogle.script.run を呼び出すことで、UI のフリーズを防ぎ、ユーザー体験を向上させることができます。

JavaScript

1// クライアントサイド 2google.script.run.withPromise().yourFunction() 3 .then(result => { 4 // 成功時の処理 5 }) 6 .catch(error => { 7 // エラー時の処理 8 }); 9コード

上記で速度が改善するか確認してみてください。改善が見られない場合は、サーバーの負荷変動が原因である可能性が高いです。

投稿2025/07/05 06:03

peyo

総合スコア79

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

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

dukitaro

2025/07/06 05:40

ありがとうございます。 なかなか直接の原因を追及するのは難しそうですね。対症療法っぽさもありますが、御提案いただいたものを試してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問