確かに、引数は小さな数字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/06 05:40