0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GAS/スプレッドシート】シートをコピーした後に特定のフォーマットを初期化するコード

Posted at

こんな方におすすめ

  • SNS運用していてインサイトをまとめるのに毎月スプレッドシートをコピーしている
  • 特定の色やフォントを毎回リセットしながら使っている

自分自身、毎月シートをコピーして使っていたのですが、日付のところで土曜日→青、日曜日→赤といった感じでフォントやカラーを変更していて(下画像参照)

image.png

これを毎回変えるのってめんどいなぁと思っていたのですが、
だったらGASでやっちゃおう!ということで自作しました。

動作としてはこんな感じ
画面収録-2023-11-08-10.59.08.gif

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なので、増えることを考えなくて良いのが楽ちんでした。

プログラムの初回実行をする際はセキュリティ通知があるのでご注意くださいね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?