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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

タイムアウト

タイムアウトはイベント発生から完了までに掛かる経過時間に対する一定の待ち時間を指します。また、特定の時間が経過された場合に発生するイベントを指すこともあります。

Q&A

1回答

2162閲覧

V8ランタイム有効でinsertsheet付近で不具合が発生してしまっています(GoogleAppsScript)

TakuHosoya

総合スコア33

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

タイムアウト

タイムアウトはイベント発生から完了までに掛かる経過時間に対する一定の待ち時間を指します。また、特定の時間が経過された場合に発生するイベントを指すこともあります。

0グッド

0クリップ

投稿2021/06/02 01:23

編集2021/06/03 08:42

これまで数年に渡って正常に動いていたGASが、突如不具合を吐く様になり、原因を調査する中で、V8ランタイムを有効にしたことが原因の可能性に気づきました。

そして、試しにV8ランタイムを無効にしたところ、正常に動きました。

V8ランタイムを有効にしても正常に動く様、改修を行いたいと思いますが、なぜ有効にするとエラーが発生するのかがわかりません。
エラーが発生するのは以下の部分です。

Google

1var operate = SpreadsheetApp.openById(#######); 2 3var template = operate.getSheetByName('テンプレ');//表頭(1行目)のみ記載したテンプレートになるシート 4var templastcol = template.getLastColumn(); 5var tempdata = template.getRange(1,1,1,templastcol).getValues(); 6 7var reserve_day_str = '21/06/02'; 8var insertidx = 1//本来のコード内では特定の数値 9 10(中略) 11 12var target = operate.insertSheet(reserve_day_str,insertidx); 13target.getRange(1,1,1,templastcol).setValues(tempdata);

エラーメッセージは以下の通りです。

ドキュメント(#######)にアクセス中に スプレッドシート のサービスがタイムアウトしました。

タイムアウトとありますが、上限である6分を待たず、20秒程度(必ずではなく、実行時によって異なります)でもエラーが発生しています。

デバッグしてみるとエラーが発生するのは必ず上記の部分です。

insertSheetは正常に実行されており、試しに

Google

1target.getSheetName();

など、targetに関する操作を行ってもデバッグが止まってしまうので、targetにうまくオブジェクトが格納されていないのかなと思います。

そこで

Google

1operate.insertSheet(reserve_day_str,insertidx); 2var target = operate.getSheetByName(reserve_day_str);

として試しましたが、こちらもtargetにうまくオブジェクトが格納されない様でした。

どうぞよろしくお願い致します。

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

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

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

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

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

gas.engine

2021/06/03 07:47

いただいたコードを試したところ、「Chrome V8ランタイムを有効にする」にチェックを入れていても正常に作動しました。 「サービスがタイムアウトしました。」と書かれていることから、別の要因に思われます。 中略のところで、for文で一行ずつ処理したりで時間がかかっていないかご確認ください。 その他にも、エラーメッセージで手がかりがございましたらお伝えください。
TakuHosoya

2021/06/03 08:38

質問内に少し追記させてもらいます!
gas.engine

2021/06/03 09:08

・最初の行の「var operate~」を「const operate」にして、あとから上書きされていないか 確認してください。上書きされているとエラーになります。 ・Chromeのバージョンが最新か確認してください。 ・画面左から5番目のの歯車ボタンからChrome V8ランタイムのチェックを再度入れたり外したりで確認してください。
guest

回答1

0

中略されているところをコメントアウトして、本当にV8ランタイムで作動しないか再度確認をお願いいたします。
作動した場合には、中略部分に原因がありますのでそちらを修正する必要があります。

投稿2021/06/04 04:20

gas.engine

総合スコア608

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問