Exception: Service Spreadsheets failed while accessing document with id
編集履歴
2021/03/09・・・質問記事を作成。
2021/03/10・・・題名をエラーメッセージに変更。質問内容の文章を表現を一部修正。「わかっている事」を追記。
2021/03/11・・・わかっている事を追記。「感想など」を修正。
2021/03/12・・・わかっている事を追記。「感想など」を修正。
2021/03/12・・・わかっている事を追記。
2021/03/27・・・わかっている事を追記。「感想など」を修正。
解決したいこと
GASでSpreadsheet上のChartを編集しようとしたらエラーが出ます。解決方法を教えてください。
発生している問題・エラー
Exception: Service Spreadsheets failed while accessing document with id xxxxxxxxxxxxxxxxxxxx.
Exception: ドキュメント(xxxxxxxxxxxxxxxxxxxx)にアクセス中に スプレッドシートのサービスに接続できなくなりました。
「xxxxxxxxxxxxxxxxxxxx」はSpreadsheetのURLの一部にも書かれています。
該当するソースコード
const myPieChart = mySheet.getCharts()[3].modify()
.clearRanges()//グラフの参照範囲設定をクリア
.addRange(mySheet.getRange(myRow,myCol,hensu1,1))//ラベルとして使用する範囲を設定
.addRange(mySheet.getRange(myRow,myCol2,hensu1,1))//Dataとして使用する範囲を設定
.build();
mySheet.updateChart(myPieChart);
Errorが指している場所だけ抜粋しました。変数名などを解りやすい様に少し変えています。
わかっている事に書いた事を考えるに、ソースコードは間違っていないと予測します。
わかっている事
- それまで何日も動いていたのに、ある日突然動かなくなりました。
- 同じような事をしている他のSpreadsheetの他のGASのCode(私が作成し私が使っている、他者が使えるようにはしてない)も、同様のErrorで同日に動かなくなりました。
- スクリプトエディタがChart処理をしている行をエラーとして指してます。
- Codeの中のChart処理以外の部分は正常動いている様子です。
- このエラーメッセージはセルの数が5,000,000を超えた場合にも出るらしいですが、今回のケースはこれに該当しません。
- 新しいSpreadsheetを作成し、簡単なグラフ編集のCodeを書いてみましたが、これは正常に動きました。
- エラーが発生しているSpreadsheetに新しいsheetを追加して、そのsheet上で簡単なChartを作成し、gasで編集するCodeを書くと、成功しました。
- 再びErrorが発生していたSheetで、Errorが発生していたScriptを走らせてみると、同様のErrorが発生しました。
- エラーが指しているグラフを削除し、Spreadsheetのマウス操作でグラフを作り直し、Scriptを走らせてみると、同様のErrorが発生しました。
- Errorが発生しているSheetをコピーし、コピーされたSheet上でScriptを走らせても、同様のErrorが発生しました。
- Errorが発生しているSpreadsheet上で、新しいSheetを作り、Errorが起きるSheetでCtrl+Aですべてを選択し、新しいSheetに張り付けてみましたが、状況変わらず。
- Spreadsheet(ファイル)をコピーで複製し、Scriptを実行してみました。当然IDは変わりますが、相変わらずのError。
- 少しずつ違うが、同じようなことをしている SpreadSheetが5つ(5ファイル)あるので、改めて、この5つのSpreadsheetでScriptを実行してみたが、結果全て同じErrorで動きませんでした。(当然それぞれSpreadSheetのIDは異なります。)
- IssueTracker:156530211 "service spreadsheets timed out while accessing document with id" おそらくこのbugだと思う。
- 2行目にgetCharts()[3]を書いてみたが、同じエラー
感想など
Chart以外のコードは動いている様子。Chartに関してはスクリプトの頭に書いても、ケツに書いてもErrorが出る。
だけど、空のシートを新しく作って、そこにChartを新しくつくって、その新しいChartはmodify()してもErrorにならない。
つまり、このSheet上にあるChartを触ることが出来ない。
ならばと、シートをコピーしてもダメ、ファイルをコピーしてもダメ。
これならと、Sheetの中のセルを全部コピーして、新しいSheetに張り付けてもダメ。
Chartが壊れてるのかと思い、Chartを削除して、新しく作り直しても、ダメ。
SpreadsheetApp.flush();でSheetを更新してもダメ。
Utilities.sleep(10000);で、途中で時間を空けてみてもダメ。
そもそもシートのデータ量が多いのかと思ったりもしたが、5つのファイルは書き込んであるレコードの量が全然違う。
それらが、全て同時に動かなくなるなど、データ量とは思えない。
つまり、まったくわからない。
解っているのは、どうやら、Googleのバグだという事だけ。