背景
GetSalesSummaryAcquisition/06_売れ数転記_改修.gs の copyMakerData() にて、
コピー先スプレッドシートを開く処理(openSpreadsheet(config.targetId) =
SpreadsheetApp.openById())の所要時間が、メーカーによって大きく変動することが
DEBUG_TIMING の診断ログで確認された。
現状の計測結果
読み込み・書き込み自体(getValues/setValues)は常に安定して1秒未満だが、
「先を開く」処理だけが突出して遅いケースがある。
| メーカー |
元を開く |
先を開く |
開始行計算 |
元読込 |
先書込 |
合計 |
| SNO |
4ms |
241ms |
375ms |
139ms |
4ms |
763ms |
| サービス分集計 |
4ms |
501ms |
390ms |
127ms |
254ms |
1276ms |
| 熊井綿業 |
4ms |
772ms |
827ms |
122ms |
5ms |
1730ms |
| 国内マットレス |
3ms |
30743ms |
560ms |
128ms |
3ms |
31437ms |
| 国内寝装品 |
3ms |
11259ms |
510ms |
333ms |
7ms |
12112ms |
| 万鵬家具 |
3ms |
223ms |
363ms |
100ms |
6ms |
695ms |
計測時刻: 2026-08-13 15:08頃(ピーク時間帯 07:00〜22:00 に該当)。
同じメーカーでも実行回によって遅延する対象が入れ替わることを既に確認済みで、
コピー先ファイル固有の構造上の問題(数式・条件付き書式・入力規則)は
ヒアリングにより否定済み。Google側の一時的な状態(コールドスタート/
ファイルへの同時アクセス/バックエンド混雑)に起因すると推測している。
想定される原因
SpreadsheetApp.openById() は、指定した範囲だけでなくスプレッドシート
全体(全シート・書式・グラフ・保護範囲など)をオブジェクトモデルとして
構築するコストがかかる。この「全体を開く」オーバーヘッドが、
遅延の主因ではないかと推測している。
検討したい対応
openSpreadsheet() / getSheet() / copyMakerData() の一部を、
GASの Advanced Google Services で有効化できる Sheets API
(Sheets.Spreadsheets.Values.get / update)に置き換える。
Sheets APIは対象範囲のみをHTTPで直接やり取りするため、
オブジェクトモデル構築のオーバーヘッドを回避できる可能性がある。
過去の関連実績
78万セル規模のマスターコピー処理において、Sheets API導入により
高速化した実績がある。ただしそのケースは大量データの読み書き
(getValues/setValues)自体がボトルネックだったのに対し、
今回は「開く」処理がボトルネックである点で性質が異なる。
そのため、今回も同様に効果があるかは実証が必要。
検証ステップ(着手時)
優先度・緊急性
現状の合計実行時間(約90〜100秒)はGASの6分制限に対して十分余裕があり、
緊急対応は不要。SRE的な安定化フェーズでの改善候補として着手する。
関連ファイル
GetSalesSummaryAcquisition/06_売れ数転記_改修.gs
背景
GetSalesSummaryAcquisition/06_売れ数転記_改修.gsのcopyMakerData()にて、コピー先スプレッドシートを開く処理(
openSpreadsheet(config.targetId)=SpreadsheetApp.openById())の所要時間が、メーカーによって大きく変動することがDEBUG_TIMINGの診断ログで確認された。現状の計測結果
読み込み・書き込み自体(
getValues/setValues)は常に安定して1秒未満だが、「先を開く」処理だけが突出して遅いケースがある。
計測時刻: 2026-08-13 15:08頃(ピーク時間帯 07:00〜22:00 に該当)。
同じメーカーでも実行回によって遅延する対象が入れ替わることを既に確認済みで、
コピー先ファイル固有の構造上の問題(数式・条件付き書式・入力規則)は
ヒアリングにより否定済み。Google側の一時的な状態(コールドスタート/
ファイルへの同時アクセス/バックエンド混雑)に起因すると推測している。
想定される原因
SpreadsheetApp.openById()は、指定した範囲だけでなくスプレッドシート全体(全シート・書式・グラフ・保護範囲など)をオブジェクトモデルとして
構築するコストがかかる。この「全体を開く」オーバーヘッドが、
遅延の主因ではないかと推測している。
検討したい対応
openSpreadsheet()/getSheet()/copyMakerData()の一部を、GASの Advanced Google Services で有効化できる Sheets API
(
Sheets.Spreadsheets.Values.get/update)に置き換える。Sheets APIは対象範囲のみをHTTPで直接やり取りするため、
オブジェクトモデル構築のオーバーヘッドを回避できる可能性がある。
過去の関連実績
78万セル規模のマスターコピー処理において、Sheets API導入により
高速化した実績がある。ただしそのケースは大量データの読み書き
(
getValues/setValues)自体がボトルネックだったのに対し、今回は「開く」処理がボトルネックである点で性質が異なる。
そのため、今回も同様に効果があるかは実証が必要。
検証ステップ(着手時)
Sheets API版の
openById相当処理を試験実装DEBUG_TIMINGと同様の計測ログを追加し、既存方式とAPI呼び出し回数・所要時間を比較
相関を確認
優先度・緊急性
現状の合計実行時間(約90〜100秒)はGASの6分制限に対して十分余裕があり、
緊急対応は不要。SRE的な安定化フェーズでの改善候補として着手する。
関連ファイル
GetSalesSummaryAcquisition/06_売れ数転記_改修.gs