こんな方におすすめ
- SNS運用していてインサイトをまとめるのに毎月スプレッドシートをコピーしている
- 特定の色やフォントを毎回リセットしながら使っている
自分自身、毎月シートをコピーして使っていたのですが、日付のところで土曜日→青、日曜日→赤といった感じでフォントやカラーを変更していて(下画像参照)
これを毎回変えるのってめんどいなぁと思っていたのですが、
だったらGASでやっちゃおう!ということで自作しました。
GASコード
const ss = SpreadsheetApp.getActiveSheet();
function sheet_init(){
// アクティブなシートの1行目・2行目、D列から最終列の色をリセットする
ss.getRange(1,4,2,31).setBackground(null).setFontColor(null);
// 一列ずつ見ていって土曜の時は青、日曜の時は赤に変更
var day_of_week = ss.getRange(2,4,1,31).getValues();
console.log(day_of_week[0][1])
for(i=0; i<31; i++){
var day = day_of_week[0][i];
if(day == "土"){
ss.getRange(1, i+4, 2, 1).setBackground("blue").setFontColor("white");
} else if(day == "日"){
ss.getRange(1, i+4, 2, 1).setBackground("red").setFontColor("white");
}
}
// 3行目から6行目、8行目のデータを削除
ss.getRange(3,4,4,31).clearContent();
ss.getRange(8,4,1,31).clearContent();
}
function onOpen(){
const customMenu = SpreadsheetApp.getUi();
customMenu.createMenu('初期化')
.addItem('今のシートを初期化する', 'sheet_init')
.addToUi()
}
今現在開いているシートに対して、
日付行の色をリセット
データ行(3行目〜6行目、8行目)で手入力している部分を削除
土曜もしくは日曜だった場合には色を変更
といった感じで動作させています。
今回のプログラムだと、列の最大(日付)が31なので、増えることを考えなくて良いのが楽ちんでした。
プログラムの初回実行をする際はセキュリティ通知があるのでご注意くださいね。