作成日: 2025/03/19 最終更新日: 2025/03/26
文書種別
不具合
発生環境
Ver.17.0.0以降
状況
修正済み
詳細
Ver.17.0.0以降、複数の行や列の変更とスタイル設定を同時に行う処理について、アンドゥスタックのメモリー削減を目的とし、1つの処理としてまとめてスタックされるように変更されました。
しかし、アンドゥスタックに記録される処理の順序が正しくない場合があり、行を挿入した後にアンドゥを実行すると、挿入前に設定していたセル型やスタイルが解除される現象が発生します。
回避方法
SpreadJS(Ver.18.0.6)で修正済み。
Ver.18.0.6より前のバージョンで、複数の行追加とスタイル設定を行う場合は、以下のように行追加とスタイル設定の処理を1つのループ処理で同時に実行するのではなく、それぞれのループに分けて処理を実行します。
【変更前】
for (let i = row; i < row + 5; i++) {
sheet.addRows(i, 1);
sheet.getRange(i, 2).cellType(checkCell);
if (i % 2 === 1) {
sheet.getRange(i, -1).backColor('#6aded2');
}
else {
sheet.getRange(i, -1).backColor('#de7d6a');
}
}
【変更後】
// 回避策:以下にsheet.addRows(i, 1);を追加
for (let i = row; i < row + 5; i++) {
sheet.addRows(i, 1);
}
for (let i = row; i < row + 5; i++) {
// 回避策:以下の処理を削除
// sheet.addRows(i, 1);
sheet.getRange(i, 2).cellType(checkCell);
if (i % 2 === 1) {
sheet.getRange(i, -1).backColor('#6aded2');
}
else {
sheet.getRange(i, -1).backColor('#de7d6a');
}
}