GASでの計画管理表作成について
Q&A
Closed
解決したいこと
現在私は自分のGASの勉強の為に友達の計画管理表を作成しています。
様々な方の協力もあり、
1.項目列に色を塗る
2.開始日と終了日を記入
3.カレンダーに塗りたい色の項目を範囲選択
4.スクリプト実行
の、流れで自動的に開始日と終了日に該当するカレンダー範囲に色を塗るスクリプトができました。
しかしこのスクリプトだと、すべてに色を塗ろうとすると(例:4~11行の8行分)5分以上の時間がかかってしまいます。
多分ですが、var t = sh.getLastColumn();
で読み込む範囲が長ければ長いほど(月数が多いほど)です。
色塗りも一つ一つのセルを塗っていってます。
もう少し早く処理をするにはどのような方法がありますでしょうか?
また、それは可能でしょうか?
方法があれば、宜しくお願い致します。
ソースコード
function Color() {
var test = Browser.msgBox("色を塗りたい項目を選択した状態で「OK」を押してください。", Browser.Buttons.OK_CANCEL);
if (test == 'ok') {
Browser.msgBox("該当範囲に色を塗ります");
var App=SpreadsheetApp
var sh = App.getActiveSheet();
var r= sh.getActiveRange(); // 選択範囲
var n = r.getRow(); // 選択範囲の開始行
var h = r.getHeight(); // 選択範囲の行数
for (var i = n; i < n + h; i++) {
var rng=sh.getRange(i,13);
var rgb=rng.getBackground();
var t = sh.getLastColumn();
for(var j=16;j<=t;j++){
if(sh.getRange(2,j).getValue()>=sh.getRange(i,14).getValue() && sh.getRange(2,j).getValue()<=sh.getRange(i,15).getValue()){
sh.getRange(i,j).setBackground(rgb);
}
}
}
Browser.msgBox("色塗り処理が終わりました");
}
if (test == 'cancel') {
}
}